Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen? (https://www.delphipraxis.net/163002-dbf-neulingfrage-wie-kann-ich-eine-query-ueber-mehrere-dbf-tabellen-joinen.html)

baurat 12. Sep 2011 21:28

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

vielen Dank für die vielen schnellen Antworten - klasse!

Zitat:

Zitat von Singlepin (Beitrag 1123755)
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.

Das hab ich angeschaut, ja. Aber soooo trivial ist es dann leider doch nicht, dass ich mit zwei Tabellen auskäme - ich muss über drei und z.T. noch mehr Tabellen verknüpfen - und das geht dann damit nicht (oder?)

Zitat:

Zitat von dataspider (Beitrag 1123751)
Und es gab mal Delphi Komponenten:
TDataSet
Damit habe ich das immer gemacht.

Hm. Ich hab ja an der tdbf-Tabelle (also DBF-Tabelle) schon auch eine native DataSource dran hängen. Aber hilft mir das für joins? Die Sybase-Komponente ist leider nicht lizenzfrei :-(

Zitat:

Zitat von Sir Rufo (Beitrag 1123744)
"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

DAS klingt sehr gut, ich denke es ist in der Tat Visual Foxpro. Hatte mit ODBC + ADO und Delphi bislang noch nichts zu tun, deswegen... hat jemand vielleicht für den von dir beschriebenen Weg "zufällig" ein kleines Tutorial oder so...?

Aber wenn das ginge, wär es wohl genau das was ich brauche... *Hoffnung*!

Union 12. Sep 2011 22:13

AW: DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?
 
Mit ADS (sybase) kannst Du in der lokalen Version kostenfrei arbeiten.

Sir Rufo 12. Sep 2011 22:18

AW: DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?
 
Eine Suche bei Google bringt dich z.B. hierhin ;)
OLEDB-Treiber, der tut auch mit ADO (eigentlich sogar besser als ODBC)

Singlepin 12. Sep 2011 22:26

AW: DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?
 
Um die Frage zu beantworten, bei den TDBF-Komponenten sind
Master-Detail Beziehungen natürlich auch über mehrere Tabellen möglich.
Sprich, Baumartige Strukturen.

Sir Rufo 12. Sep 2011 22:30

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

Zitat von Singlepin (Beitrag 1123850)
Um die Frage zu beantworten, bei den TDBF-Komponenten sind
Master-Detail Beziehungen natürlich auch über mehrere Tabellen möglich.
Sprich, Baumartige Strukturen.

Bei dem VF-Treiber via ADO gibt man das Datenbank-Verzeichnis an und kann dann einfach per SQL die Tabellen ansprechen.
Das ist dann schon etwas einfacher in der Handhabung :)

Union 12. Sep 2011 22:32

AW: DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?
 
Mit Standard Delphi geht es über TAdoCeonnection und TAdoQuery. Wichtig der richtige Connectionstring:

Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source=<DEIN PFAD WO DIE DBF LIEGEN>;Mode=Share Deny None;Extended Properties=dBASE IV;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=17;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False

Sir Rufo 12. Sep 2011 22:42

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

Zitat von Union (Beitrag 1123858)
Mit Standard Delphi geht es über TAdoCeonnection und TAdoQuery. Wichtig der richtige Connectionstring:

Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source=<DEIN PFAD WO DIE DBF LIEGEN>;Mode=Share Deny None;Extended Properties=dBASE IV;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=17;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False

Besser du setzt das in einen Code-Block ;)
Code:
Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source=<DEIN PFAD WO DIE DBF LIEGEN>;Mode=Share Deny None;Extended Properties=dBASE IV;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=17;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False
Allerdings kann man sich den Connectionstring ja auch schön per Doppelklick auf die ADOConnection zusammenklicken

Union 12. Sep 2011 22:52

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

Zitat von Sir Rufo (Beitrag 1123864)
Allerdings kann man sich den Connectionstring ja auch schön per Doppelklick auf die ADOConnection zusammenklicken

Ging auf meinem PC nicht. Ich musste die wichtigsten Teile manuell setzen und dann hat er das beim Speichern auf diesen Monsterstring expandiert. Kann man bestimmt die Hälfte von löschen.

dataspider 13. Sep 2011 07:03

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

Zitat von baurat (Beitrag 1123830)
Hm. Ich hab ja an der tdbf-Tabelle (also DBF-Tabelle) schon auch eine native DataSource dran hängen. Aber hilft mir das für joins? Die Sybase-Komponente ist leider nicht lizenzfrei :-(

Die Zugriffskomponenten von SyBase sind IMHO kostenfrei. Nur für den ADS Server muss man bezahlen. Du hast aber DBF.
In den Komponenten ist die TADSQuery, welche perfekt SQL - Statemants verarbeitet.
Beim Zugriff (Benutzung von Index) kommt es auf die Indexe an.
Da gab es wohl:
.ndx (DBase II)
.ntx (Clipper)
.mdx / .cdx (?)
TDataSet von SyBase kann IMHO mit allen Indexformaten umgehen. Bei ADO bin ich mir da nicht so sicher.
Bei meinen Versuchen mit ADO habe ich es irgendwie mit dem OEM - Zeichensatz nicht hinbekommen.

Ich habe noch eine EXE bzw. Source. Da habe ich für einen Kunden nur ein Statement gezimmert, welches aus eine Datei geladen komplexe Daten angezeigt hat.
Bei Interesse könnte ich das schicken (Source ist mit DevExpress Grid, aber das Handling mit ADSQuery kann man als Basis sicher verwenden).
Ist aber etwas grösser (PN angebracht).

Wenn du es allerdings mit ADO lösen kannst, würde ich auf zusätzliche Komponenten verzichten.

Frank

baurat 13. Sep 2011 22:39

AW: DBF-Neulingfrage: Wie kann ich eine Query über mehrere DBF-Tabellen joinen?
 
Merci für die ausführlichen Hilfen, schau ich mir an und melde mich!


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:07 Uhr.
Seite 2 von 3     12 3      

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