Textdatei als Verknüpfung in VB über Access einbinden

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von raist10.

    Textdatei als Verknüpfung in VB über Access einbinden

    Hallo zusammen,

    ich habe eine Textdatei welche sich täglich ändert. Diese habe ich über Access importiert. Hier gibt es ja zwei Möglichkeiten:
    1. Externe Daten --> Importieren
    2. Externe Daten --> Tabellen verknüpfen

    Funktioniert beides. Im ersten Fall habe ich ein Abbild der Datei. Im zweiten Fall kann ich die Textdatei ändern und die Access-DB ändert automatisch den Inhalt. Dies ist mein Ziel...

    Nun wollte ich den zweiten Fall als Datagridview einbinden. Der erste Fall funktioniert problemlos, jedoch bleibt der Inhalt gleich, auch wenn sich die Textdatei ändert. Beim zweiten Fall gehe ich genauso vor "Assistent zum Konfigurieren von Datentabellen" und verknüpfte Access-Tabelle auswählen. Hier kommt jedoch jetzt folgender Fehler:

    "Einige Aktualisierungsbefehle konnten nicht automatisch generiert werden. Die Datenbank hat den folgenden Fehler zurückgegeben:
    Dynamische SQL-Generierung wird für einen SelectCommand, der keine Basistabelleninformationen zurückgibt,
    nicht unterstützt.

    Wie bekomme ich den sich änderenden TXT-Inhalt in das VB-Datagrid ? ?(
    3 Wege:

    1. Weg

    Du programmierst die Übernahme der Text-Datei inklusive Änderungs-Rückschreibung händisch in Access. D.h. Du importierst die Text-Datei direkt in ein Table von Access rein und schreibst geänderte Daten dann automatisch zurück.

    Geht relativ easy in Access durch die Funktion DoCmd.TransferText ... damit kannst Du sowohl eine Text-Datei importieren als auch ein Table direkt als Text-Datei exportieren. Wichtig für den Import wäre nur das die Text-Datei immer den gleichen Aufbau hat, bzw. die gleichen Delimiter nutzt dann kannst Du Dir in Access ein Import/Export-Schema anlegen und als Default verwenden.

    Die Access-Tabelle kannst Du dann auf dem normalen Wege wie Du es auch schon probiert hast in VB.NET ins DataGridView reinholen.

    2. Weg

    Du programmierst in VB.NET ein klassischen ADO.NET-Zugriff entweder über OleDB und proggst das DataBinding zum DataGridView selber.

    3. Weg

    Du importierst die Text-Datei direkt in VB.NET und packst sie von dort aus in ein MS-Access-Table ... oder auch nicht. Je nachdem ob Änderungen im DataGridView in VB.NET möglich sein sollen oder nicht.

    Das wären die 3 Möglichkeiten die mir jetzt auf die Schnelle einfallen würden.

    Gruß

    Rainer
    Hallo Rainer,

    danke für die Hilfe und den Einblick der Möglichkeiten.

    Bei der ersten Variante müsste ich doch sicher immer Access starten, falls sich die Textdatei ändert ?!
    Diese ändert sich nämlich täglich. Zurückschreiben ist daher weniger das Problem.

    Die dritte Variante klingt für mich am Besten. Ich habe schon versucht die Datei direkt zu importieren, leider weiß ich nicht wie? Über den normalen DGV-Import kann ich nur .mdb und .aacdb Endungen importieren. ?(

    benji2010 schrieb:


    Bei der ersten Variante müsste ich doch sicher immer Access starten, falls sich die Textdatei ändert ?!
    Diese ändert sich nämlich täglich. Zurückschreiben ist daher weniger das Problem.


    Jein ... starten schon, aber musste nicht händisch machen. Kannst ja auch über VB.NET steuern.


    Die dritte Variante klingt für mich am Besten. Ich habe schon versucht die Datei direkt zu importieren, leider weiß ich nicht wie? Über den normalen DGV-Import kann ich nur .mdb und .aacdb Endungen importieren. ?(


    Wie genau das geht ... da muss ich passen, hatte ich noch nicht und daher kenne ich die optimale Vorgehensweise dafür nicht. Ich vermute aber das Du die Text-Datei erstmal in eine Auflistung einlesen musst und diese dann manuell in das DataGridView einfüllen musst.

    Möglicherweise besteht ein Ansatz über typsierte DataSets ... diese sind sehr einfach an ein DGV zu binden. Dann brauchst Du nur noch den Import der Text-Datei in ein typisiertes DataSet vor zu nehmen.

    Bei einmal kurz googeln habe ich das hier gefunden:

    aspalliance.com/1107_CodeSnip_…g_CSV_Files_Using_Dataset

    Das wäre offensichtlich der richtige Ansatz eine CSV in ein OleDB-DataSet zu importieren (die typisierten DataSets basieren ja auch auf dem OleDB-Objekt-Model). Teste das mal aus, vielleicht kannst Du die Text-Datei auch direkt als Datenquelle an ein typisiertes DataSet binden ... musst mal probieren.

    Gruß

    Rainer
    nach Recherche über Variante 3 bin ich zu dem Entschluss gekommen, das dies viel zu komplex ist.

    Habe mich deswegen erstmal auf Variante 1 gestürzt. Dies klappt soweit, allerdings hängt er immer alles an die Datenbank an.
    Gibt es einen Befehl, mit dem ich überschreiben kann ? Oder muss ich vorher irgendwie die Tabelle löschen ?

    benji2010 schrieb:

    nach Recherche über Variante 3 bin ich zu dem Entschluss gekommen, das dies viel zu komplex ist.

    Habe mich deswegen erstmal auf Variante 1 gestürzt. Dies klappt soweit, allerdings hängt er immer alles an die Datenbank an.
    Gibt es einen Befehl, mit dem ich überschreiben kann ? Oder muss ich vorher irgendwie die Tabelle löschen ?


    Ja, der Modus ist immer anhängen an ein Table. Access wird nie Table-Daten durch einen Automatismus überschreiben, wäre auch tödlich.

    Du musst daher vor dem Import der neuen Datei den Inhalt des Tables löschen. Simples DELETE-Statement auf das Table absetzen zuvor und gut ist.

    Gruß

    Rainer