Konflikt bei OpenFileDialog und Connection OleDB

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Charly1000.

    Konflikt bei OpenFileDialog und Connection OleDB

    Hallo,

    mein Problem: Wenn ich den OpenFileDialog aufgerufen habe, dann kann ich anschließend zwar eine OLEDB-Connection erstellen, jedoch nicht mehr schließen...

    Hört sich komisch an, ist aber so!

    Mein Programm liest und schreibt Daten aus einer Access-DB. Funktioniert wunderbar. Sobald ich allerdings den OpenFileDialog öffne und wieder schließe, bleibt mein Programm einfach (nachdem ich eine Access-Verbindung aufgebaut habe) bei Connection.Close() stehen. Ohne Fehlermeldung. Die einzige Information, die mir der Debugger gibt, ist folgende: "Dies ist die nächste Anweisung, die ausgeführt wird, sobald der Thread aus der aktuellen Funktion zurückkehrt".

    Wie gesagt: der Fehler tritt nur dann auf, wenn ich den OpenFileDialog zuvor "ausgeführt" habe.

    Keine Ahnung wie der OpenFileDialog die OLEDB-Connection beeinflussen kann. Vielleicht wisst ihr dazu etwas?

    Gruß Charly1000

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Charly1000“ ()

    Dazu musst Du mal etwas Code sehen lassen.
    Sicherlich machst Du ein

    VB.NET-Quellcode

    1. Dim fs As New xxxStream(Name)
    Organisiere es lieber als

    VB.NET-Quellcode

    1. Using fs As New xxxStream(Name)
    2. End Using
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!


    Es scheint wirklich am OpenFileDialog zu liegen. Sobald der Dialog aufgerufen wurden und anschließend eine Verbindung zur Access-DB aufgebaut wurde, stoppt das Programm bei con.close().

    Hier der Code zum FileDialog.

    VB.NET-Quellcode

    1. Dim ofd As New OpenFileDialog
    2. ...
    3. ofd.InitialDirectory = varSpeicherort_Exporteofd.Filter = "Angebotsdatei für Konfigurator (*.xml)|*.xml|" &
    4. " Texte (*.txt; *doc)|*.txt;*.doc|" &" Alle Dateien (*.*)|*.*"
    5. ofd.Title = "Abgelegtes Angebot zum Öffnen auswählen"
    6. If ofd.ShowDialog() = DialogResult.OK Then
    7. strDatei = ofd.FileName
    8. Else
    9. MessageBox.Show("Der Importvorgang wurde abgebrochen!")Exit Sub
    10. End If
    11. ...




    Hier der Code zum Verbindungsaufbau, der allerdings problemlos funktioniert (bis eben OpenFileDialog ins Spiel kommt).

    VB.NET-Quellcode

    1. Function DB_Verbindung_Preisliste(ByRef varDB As String)
    2. Dim con As New OleDbConnection
    3. Dim cmd As New OleDbCommand
    4. Dim pfad As String
    5. Dim dateiname, varSpeicherort As String
    6. Dim reader As OleDbDataReader
    7. Try
    8. varSpeicherort = ""
    9. pfad = My.Application.Info.DirectoryPath & "\"
    10. dateiname = "Einstellungen.accdb;"
    11. con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" &"Data Source=" & pfad & dateiname
    12.  
    13. cmd.Connection = con
    14. con.Open()cmd.CommandText = "SELECT * from tabEinstellungen WHERE ID='Standard'"
    15. reader = cmd.ExecuteReader()
    16. Do While reader.Read()varSpeicherort = reader("Speicherort_PRL")
    17. Loop
    18. reader.Close()
    19. con.Close()varDB = "Provider=Microsoft.ACE.OLEDB.12.0;" &
    20. "Data Source=" & varSpeicherortCatch ex As Exception
    21. MessageBox.Show(ex.Message)
    22. End Try
    23. Return varDB
    24. End Function

    Probier es mal so:

    VB.NET-Quellcode

    1. Using ofd As New OpenFileDialog
    2. '...
    3. ofd.InitialDirectory = varSpeicherort_Exporte
    4. ofd.Filter = "Angebotsdatei für Konfigurator (*.xml)|*.xml|" & " Texte (*.txt; *doc)|*.txt;*.doc|" &" Alle Dateien (*.*)|*.*"
    5. ofd.Title = "Abgelegtes Angebot zum Öffnen auswählen"
    6. If ofd.ShowDialog() <> DialogResult.OK Then
    7. MessageBox.Show("Der Importvorgang wurde abgebrochen!")
    8. Exit Sub
    9. End If
    10. strDatei = ofd.FileName
    11. End Using
    12. ' hier auf die DBs zugreifen, da existiert der OFD nicht mehr
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Der Anwender öffnet den OpenFileDialog und schließt diesen wieder. Anschließend baut das Programm eine Verbindung zur Access-DB auf und bleibt direkt bei con.close() hängen. Keine Fehlermeldung. Nur ein kleiner grüner Pfeil (da wo man auch die Haltepunkte sieht), der dann aussagt, dass an der Stelle gewartet wird, bis aus der aktuellen Funktion zurückgekehrt wird.

    Ich habe jetzt meinen eigenen OpenFileDialog programmiert. Nicht ganz so schick, aber funktioniert.