Daten aus einer dbf holen

  • Hallo,


    wie ist es eigentlich am einfachsten möglich, regelmäßig Daten aus "angelieferten" dBase-Dateien in eine Notes-DB zu importieren? Ich meine, was ist die beste Strategie?


    Ich werde bald regelmäßig einen Ordner mit diesen Datenbanken füllen und sie des Nächstens importieren. Es gibt ja Konvertierungs-Tools, die aus den dbfs dann text machen. Den kann ich mir per LS reinziehen. Aber geht es auch direkt ohne Konvertierung?


    Vielen Dank!


    Gruss, Bernd

  • Hallo,


    ich habe jetzt das Beispiel einmal ausprobiert und ODBC eingerichtet. In dem Verzeichnis befindet sich eine Tabelle mit dem Dateinamen "Prices". Die Verbindung heisst "xPrices". Der Code ist wir folgt angepasst:



    Leider bekomme ich immer die Fehlermeldung "Cannot get result set for STUDENTS". D.h. also, dass result.IsResultSetAvailable nicht greift. Warum ist das so?


    Danke!

  • Hallo und vielen Dank!


    Ich habe jetzt einmal die Errors angesehen. Komischerweise gibt es im Grunde keine Meldungen. Ich kann höchstens eine Provuzieren, indem ich die Quelle umbennenne. Dann gibt mir die connection eine Fehlermeldung, dass sie keine entsprechende findet. Ansonsten alles leere Strings onder "No Error".


    ´Das würde ich so interpretieren, dass alles passt, das SQL Statement jedoch keine Ergebnisse liefert. Aber "Select * From " + Dateiname muss doch was bringen!? Es handelt sich um eine dBase-Datei, in der definitiv auch Inhalte sind. Muss ich bei dBase was besonderes beachten?


    Oder gibt es bei den rechten was zu beachten? Der Agent hat zumindest alle Rechte (unter dem Flügelhut), der Benutzer ist der Server selbst.

  • Mit dbf habe ich schon lange nichts mehr gemacht, aber muss beim From nicht anstatt des Dateinamens der Tabellenname innerhalb der dbf angegeben werden.
    Denn die Datei lege ich doch bei der ODBC Connection fest

  • DBF ist in der Tat etwas "anders". Normale RDBMS haben eine übergeordnete Datenbank in der sich die Tabellen befinden.


    Eine DBF ist sowohl Datenbank als auch Tabelle.


    Bei der ODBC-Deklaration kann man eine DBF auf zweierlei Art einbinden, was sich naürlich auf die SELECT's auswirkt:


    a) wenn man den Dateisystemordner als "Datenbank" angibt sind die Dateinamen (ohne .dbf) die passenden Tabellennamen


    b) wenn man die DBF direkt angibt sind Datenbank- und Tabellenname identisch.

  • Also ich schätze, dann habe ich die Lösung A, denn ich habe die ODBC-Quelle als "System-DSN" angelegt und dann einen Ordner angegeben, in dem sich ein paar dbase-Dateien befinden, die ja je eine Tabelle darstellen. Mit


    con.ListTables(MeineConnection)


    werden auch brav alle Dateinamen ohne .dbf aufgelistet. Aber dann muss doch auch mein SQL-Statement passen, oder?

  • Auf den ersten Blick scheint alles soweit zu stimmen.


    Wenn ich Probleme mit Datenverbindungen habe nehme ich mir i.d.R. ein SQL-Abfrage Tool (z.B. CuteSQL oder früher das gute MS Query) und teste und verfeinere die Abfragen dort. Sobald das Ergebnis paßt wird das Script dann mit der funktionierenden endgültigen Abfrage versehen.


    Teste die Abfrage doch mal mit irgendeinem SQL-Tool deiner Wahl.

  • Darauf hatte ich vor meiner Antwort schon geschaut aber anscheinend wars dann der Ordnername, den wir hier nicht sehen konnten.


    In den Fällen hilfts, den MS-DOS-Namen zu verwenden, der i.d.R. zusätzlich ab 9 Zeichen vergeben wird, z.B. ORDNE~1.