AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FoxPro-DB lesen und Datensätze bearbeiten

FoxPro-DB lesen und Datensätze bearbeiten

Ein Thema von SearchBot · begonnen am 20. Jul 2018 · letzter Beitrag vom 23. Jul 2018
Antwort Antwort
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
272 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

FoxPro-DB lesen und Datensätze bearbeiten

  Alt 20. Jul 2018, 13:27
Datenbank: FoxPro • Version: 9 • Zugriff über: ADO
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?
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.330 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: FoxPro-DB lesen und Datensätze bearbeiten

  Alt 20. Jul 2018, 13:40
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.
Peter

Geändert von Jasocul (20. Jul 2018 um 13:44 Uhr)
  Mit Zitat antworten Zitat
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
272 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: FoxPro-DB lesen und Datensätze bearbeiten

  Alt 20. Jul 2018, 14:47
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.

Geändert von SearchBot (20. Jul 2018 um 14:48 Uhr) Grund: Ergänzung
  Mit Zitat antworten Zitat
tggmx

Registriert seit: 29. Okt 2006
33 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: FoxPro-DB lesen und Datensätze bearbeiten

  Alt 21. Jul 2018, 13:57
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.
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
672 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: FoxPro-DB lesen und Datensätze bearbeiten

  Alt 21. Jul 2018, 14:04
Table- und Query-Komponenten sind von TDataset abgeleitet.

TDBGrid --> TDataSource --> TTable
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
272 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: FoxPro-DB lesen und Datensätze bearbeiten

  Alt 23. Jul 2018, 16:21
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.

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

Kann es sein 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 daß mir das Ergebnis meines Query automatisch in der TDBGrid angezeigt wird (so als erstes Erfolgserlebnis)...
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#7

AW: FoxPro-DB lesen und Datensätze bearbeiten

  Alt 23. Jul 2018, 16:29
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)
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
272 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: FoxPro-DB lesen und Datensätze bearbeiten

  Alt 23. Jul 2018, 17:10
Ooh.. so herum also.

Dankeschön, jetzt hab ich Daten in der Tabelle
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz