Ausgelagert aus Zugriff auf Datei nach FileStream.Close verweigert, da komplett anderes Thema!
Hallo,
ich möchte kein neuen Thread aufmachen, daher nutze ich diesen hier mal.
Ich habe ein Problem und steh seit Tagen auf dem Schlauch und im Internet habe ich auch nichts passendes gefunden.
Ich habe eine Anwendung programmiert, die eine aus einer MySQL Daten rauszieht und diese in ein PDF (mit itextsharp) reinschreibt. Wenn ich diese Aktion zum ersten Mal starte nachdem ich die Anwendung starte ist auch alles gut, wenn ich die Transaktion ein zweites mal starte, dann erhalte ich die Fehlermeldung "Auf eine geschlossene Datei kann nicht zugegriffen werden."
Nun habe ich hier mal den Tip SpaceyX genommen, habe aber immer noch das Problem. Beim zweiten Ausführen bekomme ich dann die Fehlermeldung bei pdfDoc.Open.
Hallo,
ich möchte kein neuen Thread aufmachen, daher nutze ich diesen hier mal.
Ich habe ein Problem und steh seit Tagen auf dem Schlauch und im Internet habe ich auch nichts passendes gefunden.
Ich habe eine Anwendung programmiert, die eine aus einer MySQL Daten rauszieht und diese in ein PDF (mit itextsharp) reinschreibt. Wenn ich diese Aktion zum ersten Mal starte nachdem ich die Anwendung starte ist auch alles gut, wenn ich die Transaktion ein zweites mal starte, dann erhalte ich die Fehlermeldung "Auf eine geschlossene Datei kann nicht zugegriffen werden."
Nun habe ich hier mal den Tip SpaceyX genommen, habe aber immer noch das Problem. Beim zweiten Ausführen bekomme ich dann die Fehlermeldung bei pdfDoc.Open.
VB.NET-Quellcode
- Sub PDFGen()
- ConStatus()
- MySQLCMD = Con.CreateCommand()
- With MySQLCMD
- .CommandType = CommandType.Text
- .CommandText = "SELECT `bestellinhalt`.`*`
- FROM `bestellinhalt`
- WHERE `bestellinhalt`.`Bestellnummer` ='" & UebergabeBestellnummer & "'
- ORDER BY `bestellinhalt`.`Pos`"
- .ExecuteNonQuery()
- End With
- Dim DTTB As New DataTable()
- Dim DATB As New MySqlDataAdapter(MySQLCMD)
- DATB.Fill(DTTB)
- Dim DRTB As MySqlDataReader = MySQLCMD.ExecuteReader(CommandBehavior.CloseConnection)
- 'pdfWrite = PdfWriter.GetInstance(pdfDoc, New FileStream(Linkadresse & Bestellnummer(zaehlerPosBestell) & ".pdf", FileMode.Append))
- If IsNothing(pdfWrite) Then
- pdfWrite = PdfWriter.GetInstance(pdfDoc, New FileStream(Linkadresse & Bestellnummer(zaehlerPosBestell) & ".pdf", FileMode.OpenOrCreate, FileAccess.ReadWrite))
- Else
- pdfWrite = PdfWriter.GetInstance(pdfDoc, New FileStream(Linkadresse & Bestellnummer(zaehlerPosBestell) & ".pdf", FileMode.Append, FileAccess.Write))
- End If
- pdfDoc.Open()
- PCB = pdfWrite.DirectContent
- HoeherRunter = 226
- zaehlerInhalt = 0
- If (DTTB.Rows.Count) > 0 Then
- PCB.BeginText()
- Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED)
- PCB.SetFontAndSize(bf, 9)
- posTextBreite = 50
- posTextHoehe = 735
- Do
- 'For zaehlerInhalt = 0 To DTTB.Rows.Count - 1
- While DRTB.Read()
- HoeherRunter = HoeherRunter + 10
- Aufbauzaehler = 0
- zaehlerInhaltAufbau = 0
- 'Do While Aufbauzaehler < 6
- PCB.SetTextMatrix(posTextBreite, posTextHoehe - HoeherRunter)
- PCB.ShowText(DRTB.GetValue(0))
- Aufbauzaehler = Aufbauzaehler + 1
- zaehlerInhaltAufbau = zaehlerInhaltAufbau + 1
- PCB.SetTextMatrix(posTextBreite + 50, posTextHoehe - HoeherRunter)
- PCB.ShowText(DRTB.GetValue(1))
- Aufbauzaehler = Aufbauzaehler + 1
- zaehlerInhaltAufbau = zaehlerInhaltAufbau + 1
- HoeherRunter = HoeherRunter + 10
- 'Loop
- End While
- Loop While DRTB.NextResult
- 'Next
- End If
- 'NewPagePDF()
- PCB.EndText()
- pdfDoc.Close()
- pdfWrite.Close()
- End Sub
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()