ODBC-Zugriff auf dBaseIV-Datei

Hallo, gibt es die Möglichkeit aus Navision/Attain auf dBaseIV-Dateien gleichzeitig mit anderen Anwendungen (zB. MS-Access) Lesend und Schreibend zuzugreifen? MfG Michael Ehrhardt

Hi Michael, Navision ist per ODBC-Treiber behandelbar, ABER du kannst nicht aus Navision mit ODBC auf eine andere Datenbank zugreifen !! d.h.: du brauchst ein ODBC-Steuerprogramm, das auf Navision und dBaseIV zugreift.

Hey auch unter Navision kann man über ODBC auf eine andere Datenbank zugreifen. Man benutze die Automation Control Microsoft ActiveX Dataobjects. Wir greifen bei uns in der Firma direkt in Navision auf eine Sybase Datenbank zu. Fred

Hi Fred, hast Du “zufällig” ein Code-Beispiel dafür? Danke und Gruß, Frank

Hoppla, heute ist der Tag des ‘viel Lernen’ zumal man mir vor ca. 4 Stunden noch was anderes im englischen Teil gesagt hat.

Okay Frank hier ist mein kleines Beispiel: Voraussetzungen : Es existiert ein ODBC-Eintrag mit dem Name “DocumentWizardLocal” in meinem Fall verweist er auf einen lokale Access Datenbank. In der Datenbank existiert eine Tabelle mit dem Namen “documentwizard_employees”. Folgende Variablen vom Typ Automation müssen nun in Navision angelegt werden (ich verwende ActiveX Objects 2.7 es geht auch ab 2.1): ODBCConnect ‘Microsoft ActiveX Data Objects 2.7 Library’.Connection ODBCRecordSet ‘Microsoft ActiveX Data Objects 2.7 Library’.Recordset ODBCFields ‘Microsoft ActiveX Data Objects 2.7 Library’.Fields ODBCField ‘Microsoft ActiveX Data Objects 2.7 Library’.Field Zusätzlich noch diese Variablen: sql Text 250 Name Text 120 Hier nur der Code : //Erzeuge Instance CREATE(ODBCConnect); CREATE(ODBCRecordSet); {Connection String, für die Datenbank wird kein UserID und Passwort benötigt, ansonsten die Werte UID und pwd um Benutzerkennung und Passwort erweitern.} ODBCConnect.ConnectionString(‘ODBC;UID=;pwd=;DSN=DocumentWizardLocal’); ODBCConnect.Mode := 1; //1 = adModeRead ODBCConnect.Open(); //Sql-Befehl zusammenbauen sql:=‘select * from documentwizard_employees’; //Sql ausführen ODBCRecordSet.Open(sql,ODBCConnect); //über den Ergebnisrecordset schleifen WHILE (NOT ODBCRecordSet.EOF()) DO BEGIN ODBCFields := ODBCRecordSet.Fields(); //zweites Feld der Abfrage holen ODBCField := ODBCFields.Item(1); //Wert aus Feld übernehmen. name := ODBCField.Value; //Nächsten Datensatz lesen ODBCRecordSet.MoveNext(); END; //Recordset schliessen ODBCRecordSet.Close(); //Verbindung zur Datenbank schliessen. DBCConnect.Close(); [8D]

Danke Friedhelm, das hilft mir auf jeden Fall weiter! Gruß, FRank