Acces Datenbank Aktualisieren und Source Ändern

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Zcared.

    Acces Datenbank Aktualisieren und Source Ändern

    Hallo Liebe Community,

    Ich habe folgendes Problem. Ich habe eine Acces Datenbank datei die auf einem Fileserver liegt. das Programm zieht die Daten zu Beginn von der Acces Datenbank in das Programm. Was ich jetzt einrichten will ist ein Timer der alle 0,5 Sekunden die Daten im Programm von der acces Datenbank holt, sodass diese immer Aktuell ist. habe es bereits damit versucht den Tableadapter mit Fill oder Getdata zu aktualisieren, allerdings ohne erfolg.

    Das zweite Problem, bzw die zweite Aufgabenstellung ist, dass ich gerne einrichten will dass der Benutzer über einen Openfiledialog den Pfad der Datenbank ändern kann, allerdings ist dieser Pfad ja nur in der App.config datei hinterlegt beim connection string (falls ich mich nich irre). Gibt es eine Möglichkeit, diesen zur laufzeit zu ändenrn?

    Vielen Dank und
    Mit freundlichen Grüßen Zcared

    Zcared schrieb:

    alle 0,5 Sekunden
    Nimm einen FileSystemWatcher, den konfigurierst Du so, dass er ein Event sendet, wenn diese Datei geändert wurde.
    Pack den

    Zcared schrieb:

    connection string
    und das Drumherum einfach in Deinen Code.
    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!
    @Zcared FileSystemWatcher gugst Du hier.
    ConnectionString, so was, je nach dem, was für eine DB du frequentierst:

    C#-Quellcode

    1. Ora11Client mDb = new Ora11Client();
    2. mDb.Connection.Open();
    3. string query = "select bla bla bla";
    4. DataTable dt = mDb.ExecQml(query);

    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!
    Also erstmal vielen dank, dass mit dem FileSystemWatcher klappt gut, hierfür fehlt mir nur noch ein geeigneter aktualisieruns Befehl. mit welchem Ausdruck ist es möglich die Tabelle im Programm auf den Stand der Datenbank zu bekommen. funktioniert es wenn ich einfach:

    Quellcode

    1. Tabelle1TableAdapter.GetData()

    mache?

    ich benutze eine .Accdb Datenbank.
    Und soll dieser Codeteil dann in meine Form_load?

    Zcared schrieb:

    Form_load
    Fang an mit einer Button_Click, da bekommst Du stets eine ordentliche Exception, wenn es nicht klappt.
    Mit diesem Strring liest Du eine komplette Tabelle aus.

    VB.NET-Quellcode

    1. Dim query = "select * from " & NAME_DEINERF_TABELLE
    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!
    Aber ich kann doch in meinem Code nicht einfach die Tabelle auf rufen? die Datei heißt bspweiße Werkzeugdatenbank, in dieser befindet sich die "Tabelle1" aber ich greife doch auf diese über den Tableadapter oder dem Dataset zu oder?

    Zcared schrieb:

    Aber ich kann doch in meinem Code nicht einfach die Tabelle auf rufen?
    Zum Test, damit Du ein Gefühl dafür bekommst, wie es funktioniert?
    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!
    Tut mir leid ich habe mich vllt nicht passend ausgedrückt.
    ich meinte rein formell funktioniert dass doch nicht oder?

    Quellcode

    1. Dim query = "select * from " & Tabelle1

    gibt er mir als Fehler aus, da Tabelle1 nicht existiert.
    hierzu meine Frage, muss ich auf etwas anderes verweißen?
    Brauche ich vllt. vorher den

    VB.NET-Quellcode

    1. Imports System.Data.OleDb

    bevor ich die tabelle aktualisieren kann?
    gibt es nicht einen Befehl wie Tableadapter.fill o.ä. um einfach die aktuellen Werte der Datei in das Programm zu bekommen?

    Grüße :)

    Zcared schrieb:

    hierzu meine Frage, muss ich auf etwas anderes verweißen?
    Wenn der Code kompiliertr, nix.
    Such mal gezielt nach:
    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!
    Tut mir leid aber das hilft mir nichts, bin in SQL nicht so fit habe dieses Fach erst in 2 Semestern..
    ich weiß nicht was ein net ist..

    VB.NET-Quellcode

    1. ' SQL-Abfrage über Tabellen-Schema erstellen
    2. Dim cmd As New SqlCommand( _
    3. "SELECT Table_Name FROM Information_Schema.Tables", Conn)
    4. ' Ergebnis holen
    5. Dim dr As SqlDataReader = cmd.ExecuteReader
    6. ' Ergebnis durchlaufen und Tabellennamen in einer ListBox anzeigen
    7. While dr.Read
    8. ListBox1.Items.Add(dr(0).ToString)
    9. Wend
    sollte ich das auf ein Button legen natürlich angepasst?

    Zcared schrieb:

    ich weiß nicht was ein net ist.
    OMG
    DOT NET
    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!
    Ich komme mit diesem Problem immernoch nicht voran, und bin bisschen Fraglos wie ich die Aktualisierung alternativ vollbringen könnte, könntest du oder vllt jemand anderes es bitte versuchen , nochmal zu erklären?

    Mit freundlichen Grüßen

    Zcared