Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi FoxPro-DB lesen und Datensätze bearbeiten (https://www.delphipraxis.net/197183-foxpro-db-lesen-und-datensaetze-bearbeiten.html)

SearchBot 20. Jul 2018 13:27

Datenbank: FoxPro • Version: 9 • Zugriff über: ADO

FoxPro-DB lesen und Datensätze bearbeiten
 
Hallo,

ich möchte in eine (durch eine FoxPro-Anwendung in Verwendung befindliche) Datenbank mit einem Delphiprogramm ebenfalls zugreifen und Datensätze bearbeiten.
Die Datenbank-Datei liegt zwar auf dem Server, aber ich kann sie auch über X:\Db\blabla.dbf erreichen, kopieren, mit dem Hexeditor öffnen... obwohl sie im Zugriff durch andere Nutzer sein kann.

Darin möchte ich nun Datensätze einlesen und editieren können.

Ich vermute mal, daß ich das mit den ADO-Komponenten in "Delphi Berlin Professional" machen kann, aber würde auch FireDAC gehen?
(in der Pro "nur lokal" - ich kann die Datei ja über den Pfad erreichen; ist das 'lokal genug'?)

Im OI habe ich für die ADOConnention1.Provider = VFPOLEDB eingestellt.
Ich habe lange gebraucht, um eine Verbindung herzustellen - eine DBF-Datei reicht ja nicht, es muss (zumindest im vorhandenen Projekt, weiß nicht ob das immer so ist) übergeordnet eine .DBC,.DCT und .DCX-Datei da sein und neben der .DBF habe ich noch .CDX und .FPT entdeckt; eigentlich wollte ich ja nur die .DBF bearbeiten... ok, die Verbindung wurde erfolgreich hergestellt im Test.

Ich würde gerne in einem Grid zunächst schon mal die Datensätze ansehen können...
-TADOtable hat kein Grid, obwohl das Icon danach aussieht
-TADOQuery auch nicht

Wie mache ich jetzt weiter?

Jasocul 20. Jul 2018 13:40

AW: FoxPro-DB lesen und Datensätze bearbeiten
 
Wenn ich mich richtig erinnere, ist Foxpro im Grunde nichts anderes, als dBase.
Vielleicht hilft dir dieser Eintrag ja weiter.

Ach, gerade gesehen. Die Verbindung hast du ja schon.
Zum Anzeigen brauchst du noch ein TDBGrid und TDataSource.

SearchBot 20. Jul 2018 14:47

AW: FoxPro-DB lesen und Datensätze bearbeiten
 
Ah, hm...

In der DataSource muss ich DataSet angeben.
Was kommt da rein - das Auswahlfeld ist leer :?

Ich habe ADODataSet1, aber es zeigt es mir nicht an.

tggmx 21. Jul 2018 13:57

AW: FoxPro-DB lesen und Datensätze bearbeiten
 
Ich hatte letztes Jahr ein kleines Tool für eine Datenübernahme aus FoxPro geschrieben um automatisiert alle Datensätze in csv-Dateien zu exportieren.
Das funktioniert definitiv mit ADO. Den ConnectionString und die Verbindung zur DB hast du ja bereits aufgebaut. Jetzt brauchst du eigentlich nur noch einen
ADOTable, eine Data Source und ein DBGrid. Alles miteinander verbinden und der Zugriff sollte problemlos möglich sein.

joachimd 21. Jul 2018 14:04

AW: FoxPro-DB lesen und Datensätze bearbeiten
 
Table- und Query-Komponenten sind von TDataset abgeleitet.

TDBGrid --> TDataSource --> TTable

SearchBot 23. Jul 2018 16:21

AW: FoxPro-DB lesen und Datensätze bearbeiten
 
Zitat:

Zitat von tggmx (Beitrag 1408195)
Ich hatte letztes Jahr ein kleines Tool für eine Datenübernahme aus FoxPro geschrieben um automatisiert alle Datensätze in csv-Dateien zu exportieren.
Das funktioniert definitiv mit ADO. Den ConnectionString und die Verbindung zur DB hast du ja bereits aufgebaut. Jetzt brauchst du eigentlich nur noch einen
ADOTable, eine Data Source und ein DBGrid. Alles miteinander verbinden und der Zugriff sollte problemlos möglich sein.

:wiejetzt:
Ja,... mit dem "alles miteinander verbinden" haperts noch - ich bin mit Datenbanken der totale Anfänger und erziele gelegentlich Glückstreffer :cry:.

Kann es sein :gruebel: daß die Komponenten für den Datenzugriff überhaupt nichts mit den dbGo-Komponenten gemeinsam haben?

- Ich habe eine TADOConnention, TADODataset, TADOQuery, TDataSource, TDBGrid und TDBNavigator auf dem TForm.
- Ich scheine ja eine Verbindung im OI zusammengeklickt zu haben:
Code:
   ADOconnection1.Provider = VFPOLEDB.1
   ADODataSet1.DataSource = DataSource1
   ADOQuery1.Connection = ADOConnection1
   ADOQuery1.DataSource = DataSource1

   DataSource1.DataSet = (leer, ich kann da nichts eintragen, versuche ich es per Code, sagt es was von "zirkulär"-Fehler)
   ADOTable1.Connection = ADOConnection1
   ADOTable1.MasterSource = DataSource1
   ADOTable1.TableName habe ich den Namen der Datenbank-Tabelle eingegeben
   DBGrid1.DataSource = DataSource1
   DBNavigator1.DataSource = DataSource1 (sind aber immer alle Buttons grau)
Testweise habe ich einen SQL-Script angewandt und auch mit unterschiedlichen Artikelnummern andere Ergebnisse bekommen:
Delphi-Quellcode:
   SQLstring:='select artnr, artsuch, seriennr from tabelle1 where (artnr="0815")';
   AdoDataset1.CommandText:=SQLstring;
   AdoDataset1.Active:=true;
   showmessage('Gibt '+AdoDataset1.RecordCount.ToString+' Einträge');
Vorhin hab ich entdeckt, daß ich auch sowas machen kann:
Delphi-Quellcode:
// nur nötig, wenn SQLExec verwendet wird: ADOConnention1.open;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add(SQLstring);
  ADOQuery1.Active:=true;
  showmessage('Gibt '+ADOQuery1.RecordCount.ToString+' Einträge');
Wichtig scheint, daß das .Active NACH der SQLstring-Zuweisung erfolgt.

Was ist denn der bessere Weg - mit dem AdoDataset1.active das SQL "schicken" oder mit dem AdoQuery1.active?
Wozu ist AdoQuery1.ExecSQL - es geht doch schon mit dem .active:=true los!?

Meine Hoffnung war :stupid: daß mir das Ergebnis meines Query automatisch in der TDBGrid angezeigt wird (so als erstes Erfolgserlebnis)...

Uwe Raabe 23. Jul 2018 16:29

AW: FoxPro-DB lesen und Datensätze bearbeiten
 
Nein, so geht das nicht! Lass mal die Zuweisungen der DataSource bei den DataSets weg:
Zitat:

ADOconnection1.Provider = VFPOLEDB.1

DataSource1.DataSet = ADOTable1
ADOTable1.Connection = ADOConnection1
ADOTable1.TableName habe ich den Namen der Datenbank-Tabelle eingegeben
DBGrid1.DataSource = DataSource1
DBNavigator1.DataSource = DataSource1 (sind aber immer alle Buttons grau)

SearchBot 23. Jul 2018 17:10

AW: FoxPro-DB lesen und Datensätze bearbeiten
 
Ooh.. so herum also.

Dankeschön, jetzt hab ich Daten in der Tabelle :thumb:
:bounce2:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf