Fehlermeldung "Auf eine geschlossene Datei kann nicht zugegriffen werden."

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Begiinner_for_One.

    Fehlermeldung "Auf eine geschlossene Datei kann nicht zugegriffen werden."

    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.

    VB.NET-Quellcode

    1. Sub PDFGen()
    2. ConStatus()
    3. MySQLCMD = Con.CreateCommand()
    4. With MySQLCMD
    5. .CommandType = CommandType.Text
    6. .CommandText = "SELECT `bestellinhalt`.`*`
    7. FROM `bestellinhalt`
    8. WHERE `bestellinhalt`.`Bestellnummer` ='" & UebergabeBestellnummer & "'
    9. ORDER BY `bestellinhalt`.`Pos`"
    10. .ExecuteNonQuery()
    11. End With
    12. Dim DTTB As New DataTable()
    13. Dim DATB As New MySqlDataAdapter(MySQLCMD)
    14. DATB.Fill(DTTB)
    15. Dim DRTB As MySqlDataReader = MySQLCMD.ExecuteReader(CommandBehavior.CloseConnection)
    16. 'pdfWrite = PdfWriter.GetInstance(pdfDoc, New FileStream(Linkadresse & Bestellnummer(zaehlerPosBestell) & ".pdf", FileMode.Append))
    17. If IsNothing(pdfWrite) Then
    18. pdfWrite = PdfWriter.GetInstance(pdfDoc, New FileStream(Linkadresse & Bestellnummer(zaehlerPosBestell) & ".pdf", FileMode.OpenOrCreate, FileAccess.ReadWrite))
    19. Else
    20. pdfWrite = PdfWriter.GetInstance(pdfDoc, New FileStream(Linkadresse & Bestellnummer(zaehlerPosBestell) & ".pdf", FileMode.Append, FileAccess.Write))
    21. End If
    22. pdfDoc.Open()
    23. PCB = pdfWrite.DirectContent
    24. HoeherRunter = 226
    25. zaehlerInhalt = 0
    26. If (DTTB.Rows.Count) > 0 Then
    27. PCB.BeginText()
    28. Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED)
    29. PCB.SetFontAndSize(bf, 9)
    30. posTextBreite = 50
    31. posTextHoehe = 735
    32. Do
    33. 'For zaehlerInhalt = 0 To DTTB.Rows.Count - 1
    34. While DRTB.Read()
    35. HoeherRunter = HoeherRunter + 10
    36. Aufbauzaehler = 0
    37. zaehlerInhaltAufbau = 0
    38. 'Do While Aufbauzaehler < 6
    39. PCB.SetTextMatrix(posTextBreite, posTextHoehe - HoeherRunter)
    40. PCB.ShowText(DRTB.GetValue(0))
    41. Aufbauzaehler = Aufbauzaehler + 1
    42. zaehlerInhaltAufbau = zaehlerInhaltAufbau + 1
    43. PCB.SetTextMatrix(posTextBreite + 50, posTextHoehe - HoeherRunter)
    44. PCB.ShowText(DRTB.GetValue(1))
    45. Aufbauzaehler = Aufbauzaehler + 1
    46. zaehlerInhaltAufbau = zaehlerInhaltAufbau + 1
    47. HoeherRunter = HoeherRunter + 10
    48. 'Loop
    49. End While
    50. Loop While DRTB.NextResult
    51. 'Next
    52. End If
    53. 'NewPagePDF()
    54. PCB.EndText()
    55. pdfDoc.Close()
    56. pdfWrite.Close()
    57. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()