Verknüpfung einer Haupt- u Untertabelle mit ADOQuery möglich?
-
Hallo,
bin gerade dabei mich in die DB-programm. einzuarbeiten. Dazu habe ich eine DB mit MySQL erstellt. Den Zugriff darauf von BCB6 Prof aus konnte ich anhand des Tutorials "FH-Karlsruhe" bereits erfolgreich mit kleinen ADO-Programmen üben. In diesem Tut., das hier gerne des Öfteren erwähnt wird, ist auch ein Beispiel, wie man eine Haupttabelle mit einer Untertabelle über einen gemeinsamen Index verbindet. Das Beispiel wird mit je zwei BDE-Table- u DataSource-Komponenten durchgeführt. Klappt soweit auch mit ADO ganz gut.Frage: Ließe sich das auch mit ADOQuery-Komponenten machen? Wenn ja, welche Komponenten würde ich benötigen? Wie müßte ich was im OI verknüpfen?
Eine kurze Beschreibung wäre super.
Vielen Dank schon 'mal für Eure 1000 Antworten ;).
-
Dafür sind SQL JOIN zuständig
http://www.w3schools.com/sql/sql_join.asp
-
Hallo @VergissEs,
vielen Dank für Deinen Hinweis.
Guter Gedanke mit JOIN. Allerdings erhalte ich dann nur 1 Ergebnistabelle.Unabhängig davon habe ich ein Beispiel "Shape" auf meinem PC wieder entdeckt, das ich glaube ich einmal von borland-developer.net/ unter Examples geladen hatte. Darin wird mit der Beispieldatenbank "bcdemos.mdb"gezeigt wie man mit je 2 ADODataSet, TDataSource u TDBGrids eine Haupt- u eine Untertabelle erzeugt, also genau das wonach ich suchte.
Die Abfrage findet über die Eigenschaft CommandText in der Komponente TADODataSet statt. Haupt- u Untertabelle sind über das Feld "CustNo" verknüpft
Leider verstehe ich aufgrund fehlendem Quellcodes im Beispielprogramm das Ganze noch nicht so recht.
Deshalb meine Frage:
Gibt es irgendwo eine Quelle mit der ich mir die Befehlszeile hinter CommandText erklären kann? Es handelt sich hier ja nicht um reine MySQL-Befehle sondern scheinbar um irgendeinen SQL-Dialekt?Hier der entsprechende Ausschnitt aus der ShapeMain.dfm (was anderes kann ich leider nicht anbieten
, es gibt nur das Formular und die Kompos darauf)
object Customers: TADODataSet //gehört zu Haupttabelle Kunden Connection = ADOConnection1 CursorType = ctStatic CommandText = //????????????????????????????????????????????????????????????????????????? 'SHAPE {select * from customer} '#13#10'APPEND ({select * from orders}' + ' AS Orders'#13#10' RELATE CustNo TO CustNo) ' //????????????????????????????????????????????????????????????????????????? Parameters = <> Left = 12 Top = 196 object CustomersCustNo: TFloatField //Spalte 1 = gemeinsames Verknüpfungsfeld! FieldName = 'CustNo' end object CustomersCompany: TWideStringField //Spalte 2 FieldName = 'Company' Size = 30 end ..usw. object CustomersOrders: TDataSetField //letzte Spalte FieldName = 'Orders' ReadOnly = True end end object OrderSource: TDataSource //gehört zu Untertabelle Aufträge DataSet = Orders Left = 49 Top = 337 end object Orders: TADODataSet //TADODataSet der Untertabelle Aufträge CursorType = ctStatic DataSetField = CustomersOrders Parameters = <> Left = 11 Top = 337 object OrdersOrderNo: TFloatField //Spalte 1 FieldName = 'OrderNo' end object OrdersCustNo: TFloatField //Spalte 2 = gemeinsames Verknüpfungsfeld! FieldName = 'CustNo' end ...usw. end
-
Haaallooh, haaallooh, ist hier jemand?
Ich hatte mir solche Mühe mit meinem Post gemacht
. Gibt's hier keinen - @VergissEs 'mal ausgenommen - der mir zu meiner bescheidenen Frage weiterhelfen kann?
Vielleicht habe ich mich etwas zu umständlich ausgedrückt.
Ich formulier es deshalb nochmal:CommandText =
//?????????????????????????????????????????????????????????????????????????
'SHAPE {select * from customer} '#13#10'APPEND ({select * from orders}' +
' AS Orders'#13#10' RELATE CustNo TO CustNo) '
//?????????????????????????????????????????????????????????????????????????Das, was mit "?????" eingerahmt ist, ist wie jeder sieht eine SQL-Abfrage.
Fragen:
Ist das ein spezieller BCB-SQL?
Oder hat der SQL etwas mit der Beispieldatenbank von Borland zu tun?Ich arbeite mit MySQL. Läßt sich CommandText = auch mit MySQL-Abfragen zuweisen? Bitte hierauf nicht mit "Probier's doch aus" antworten, das mache ich nämlich gerade!
-
Hallo
Google zum Beispiel mal nach SQL SHAPE, da findest du zum Beispiel das hier.
Ist also nicht Builder oder MySQL-spezifisch, sondern ein Teil von MS ADObis bald
akari
-
Dieser Thread wurde von Moderator/in akari aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum Datenbanken verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.