AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?
Thema durchsuchen
Ansicht
Themen-Optionen

DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?

Ein Thema von baurat · begonnen am 12. Sep 2011 · letzter Beitrag vom 24. Sep 2011
Antwort Antwort
Seite 1 von 3  1 23      
baurat

Registriert seit: 20. Jan 2007
34 Beiträge
 
#1

DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?

  Alt 12. Sep 2011, 16:41
Datenbank: mysql+dbf • Version: 5.1 • Zugriff über: zeos + tdbf
Hallo zusammen,

ich arbeite seit langem mit MySQL und Zeos problemlos aus Delphi 6 prof (inzwischen etwas angegraut, tuts aber). Nun muss ich aus einer "Fremddatenbank" mit offenbar uralten *.dbf-Dateien einige Infos auslesen.

Dazu habe ich die tdbf-Komponente (http://tdbf.sourceforge.net/) gefunden, mit der ich schön auf die dbf-Tabellen komme.

In der "echten" SQL-Welt hole ich mir die gewünschten Informationen als Join über mehrere Tabellen (select * from tabelle1, tabelle2 where ....).

Nun meine Frage: wie geht das mit den DBF-Tabellen? Gibts überhaupt sowas wie eine Query? Wenn ja, wie müssen da die Pfadangaben zu den einzelnen Tabellen rein?

Konkret:
pfad\schueler.dbf mit schuelerid als Primärschlüssel
pfad\kurs.dbf mit kursid als Primärschlüssel
pfad\belegung.dbf mit belegungid als Primärschlüssel und Fremdschlüsseln fs_schuelerid und fs_kursid (welcher Schueler belegt welchen Kurs)

Jetzt hätt ich gern sowas wie
Code:
Select s.name, s.vorname, k.kursname from schueler s, kurs k, belegung b
where s.schuelerid = b.fs_schuelerid and
b.kursid = k.kursid and b.kursid = 23
(dh. Namen aller Schueler im Kurs 23)


Ich habe dazu leider keine schlüssigen Infos gefunden. Mir ist klar dass das ein Uralt-System ist, aber das hilft mir nichts, ich muss da an die Daten ran und wäre über einen einfachen und schnellen Weg dankbar...

Vielen Dank für die Hilfe (und falls es trivial ist bitte nicht steinigen...)

Danke!

LG Heiko
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?

  Alt 12. Sep 2011, 17:41
DBF? war das nicht DBase?
Wenn ich mich nicht vertue kann die BDE doch mit DBase umgehen??
Ansonsten in ein "richtiges" System importieren und dann kannst Du mit SQL arbeiten.
(ACCESS hat noch importfilter für DBF-Dateien, von da aus sollte der Import in ein richtiges System wohl funktionieren)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
baurat

Registriert seit: 20. Jan 2007
34 Beiträge
 
#3

AW: DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?

  Alt 12. Sep 2011, 17:53
Hi K-H, Danke für deine schnelle Antwort.

DBF? war das nicht DBase?
Wenn ich mich nicht vertue kann die BDE doch mit DBase umgehen??
Ansonsten in ein "richtiges" System importieren und dann kannst Du mit SQL arbeiten.
(ACCESS hat noch importfilter für DBF-Dateien, von da aus sollte der Import in ein richtiges System wohl funktionieren)
Ähmm... ob das jetzt dbase-Daten sind, weiß ich gar nicht... ich glaub aber irgendwie wurde das ursprünglich mit Foxpro oder so gemacht...? Keine Ahnung!
Ich hatte mit der BDE noch nie was am Hut, deswegen hilft mir der gut gemeinte Hinweis leider nicht. Das Lesen der dbf-Files ist aber wie gesagt kein Problem.

Zitat:
Ansonsten in ein "richtiges" System importieren und dann kannst Du mit SQL arbeiten.
Das hab ich mir auch schon überlegt, aber die dbf-Daten ändern sich laufend, so dass halt gern "direkt" daraus lesen würde und nicht über die Krücke dbf > Access > mysql o.ä. muss, denn den Importprozess müsste ich dann ja auch jedes Mal neu durchführen.

Irgendwie muss man diese einzelnen Tabellen-Dateien doch auch joinen können?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#4

AW: DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?

  Alt 12. Sep 2011, 17:54
Wenn es wirklich um dBase geht (100% sicher scheint das nicht zu sein): ich mag mich irren, aber IIRC unterstützte dBase gar keine referentielle Integrität.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?

  Alt 12. Sep 2011, 18:21
Natürlcih geht ein Join auch ohne Schlüssel. Nur ist die Perfomance dann schlechter. Schau Dir mal den Advantage Local Server an.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
baurat

Registriert seit: 20. Jan 2007
34 Beiträge
 
#6

AW: DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?

  Alt 12. Sep 2011, 18:28
IIRC unterstützt dBase gar keine referentielle Integrität.
... das muss ja auch gar nicht sein, um die kümmert sich (hoffentlich) das original-Programm, das die dbf-Dateien erzeugt. Es liegen zumindest die nötigen Informationen auf verschiedenen "Daten-Dateien" (sagt man das so?) verteilt, eben schon nach einem relationalen Schema organisiert.

Ich bin nur das "arme Schw....", das den Kram einlesen und aus den vielen verstreuten Einzelinformationen was Sinnvolles zusammenstellen muss... und immer noch hoffe, dass das über joins geht und ich mich nicht in ewiger Kleinarbeit mit Schleifen und lookups von Tabelle zu Tabelle hangeln zu müssen...
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#7

AW: DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?

  Alt 12. Sep 2011, 18:51
dbase ist eine 'teilrelationale' Datenbank, sie unterstützt Joins (siehe http://viprex.de/gkinfo/datenbanken/db_befeh.html), aber eine Delphikomponente die es auch schafft einen Join auszuführen kenne ic noch nicht, in einem ähnlichen Fall (Clipper) half eine ODBC Treibersoftware, die einen eigenen SQL Dialekt unterstützte.

Man kann eventuell mit ClientDataSets und Master/Detail Abhängigkeiten einen Teil der zu Fuss Programmierung einsparen. Nachteil bei beiden (und auch bei ODBC Zugriff) ist, dass alle Datensätze in den Hauptspeicher geladen werden.

Falls nicht noch zufällig eine DBF Komponente oder ein O/R Mapper auftaucht, ist das 'Zu Fuss' in Objektlisten einlesen nicht die schlechteste Alternative - vorausgesetzt die Datenmenge ist absehbar im RAM unterzubringen.
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?

  Alt 12. Sep 2011, 18:54
"Wenn" es sich um Visual Foxpro handelt, dann einfach den Visual Foxpro ODBC Treiber installieren und dann per ADO darauf zugreifen.

Damit klappt dann auch das JOIN
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?

  Alt 12. Sep 2011, 19:10
Natürlcih geht ein Join auch ohne Schlüssel. Nur ist die Perfomance dann schlechter. Schau Dir mal den Advantage Local Server an.
Und es gab mal Delphi Komponenten:
TDataSet
Damit habe ich das immer gemacht.

Frank
Frank Reim
  Mit Zitat antworten Zitat
Singlepin

Registriert seit: 3. Sep 2011
10 Beiträge
 
#10

AW: DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?

  Alt 12. Sep 2011, 19:20
Hast du dir schon mal die "Master Tabellen Beziehungen" in http://wiki.lazarus.freepascal.org/L...bf_Tutorial/de
angesehen? Das könnte dich weiterbringen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 03:18 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