Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Wie macht das TTable-Object das? (https://www.delphipraxis.net/60397-wie-macht-das-ttable-object-das.html)

MPirnstill 6. Jan 2006 11:29

Datenbank: MS-SQL-SERVER • Version: 2000 • Zugriff über: BDE

Wie macht das TTable-Object das?
 
Hi Leute!

Ich bastele gerade so ein bißchen um und ändere dabei auch manche TTable in TQuery. Jetzt hab ich damals (anno domini) auch noch mit dem Feld-Editor gearbeitet und bei der TTable ein Lookup-Feld benutzt.

Wenn ich jetzt den SQL meiner TQuery so schreibe, daß die Namen aufgrund der ID im Datensatz gleich mitgelesen werden, kann ich diese Query natürlich nicht mehr updaten, da dabei ja immer nur eine Tabelle im SQL vorkommen darf.

Wie funktioniert das bei der TTable, daß die die Lookup-Info zurück gibt, man aber trotzdem zurückschreiben kann? :?: Und wie kann ich das bei der TQuery realisieren? :?:

Gruß

P.S.: Alles in Delphi 2.0

sir-archimedes 6. Jan 2006 11:39

Re: Wie macht das TTable-Object das?
 
Ich bin mir nicht sicher, wie die BDE das handhabt, da ich meistens mit den ADO-Komponenten arbeite.

Nehmen wir an ich habe folgende Query:

SQL-Code:
SELECT
          Tabelle1.Feld1,
          Tabelle1.FK,
          Tabelle2.Beschreibung
     FROM
          Tabelle1 INNER JOIN Tabelle2 ON Tabelle1.FK = Tabelle2.PK
Mit FK meine ich den Foreign-Key und mit PK den Primary-Key.

Ich habe dann so etwas, wie ein Lookup-Feld: das DataSet, das ich erhalte hat sowohl den Schlüssel, als auch die dazu passende Beschreibung aus Tabelle2 zurückgegeben.

Wenn z.B. das Objekt Query1 dieses ausführt kann ich ohne weiteres folgendes machen:

Delphi-Quellcode:
Query1.Edit;
Query1.FieldByName('FK').AsInteger := 2;
Query1.Post;
ausführen. Wenn ich dann Query1 refreshe, wird auch das Beschreibungsfeld automatisch neu geladen.

Gruß,
Dominik

MPirnstill 6. Jan 2006 12:04

Re: Wie macht das TTable-Object das?
 
@Dominik

Danke erstmal für deine Antwort!

Es geht mir jedoch darum, daß ich die Query dann auch weiterhin updaten kann. Und nach meiner Erfahrung kann man keine Query updaten bei der mehr als eine Tabelle in der FROM-Klausel vorkommt.

Es ist mir klar das ich die Daten, auch gleich mit den entspr. Lookup-Info anzeigen kann, nur dann kann ich eben meine Query nicht zurückschreiben, was allerdings bei einer TTable mit einem Lookup-Feld funktioniert.

Darum wollte ich wissen wie das da gehandhabt wird.

Gruß

mkinzler 6. Jan 2006 12:14

Re: Wie macht das TTable-Object das?
 
UpdateSql verwenden. Einer TQuery Komponente kann über die Eigenschaft UpdateObject ein Instanz von TUpdateSQL zugeordnet werden.
Einem Objekt dieses Typs kann du dann Querystrings für Insert, Update, Delete konfigurieren.

MPirnstill 9. Jan 2006 06:58

Re: Wie macht das TTable-Object das?
 
Zitat:

Zitat von mkinzler
UpdateSql verwenden. Einer TQuery Komponente kann über die Eigenschaft UpdateObject ein Instanz von TUpdateSQL zugeordnet werden.
Einem Objekt dieses Typs kann du dann Querystrings für Insert, Update, Delete konfigurieren.

Das hab ich ja, aber müssen diese SQL-Anweisungen im UpdateSQL nicht auch zu dem Select in meiner TQuery passen und dementsprechend dürfte sich die SQL-Anweisung in meinem TQuery auch nur auf eine Tabelle beziehen, da sie ja sonst nicht update-fähig ist, oder? Und wenn das so ist, wie bekomme ich dann den zu meinem FK gehörigen Wert rein.

Die TTable müßte es doch eigentlich genauso machen, doch wie behandelt das TTable-Objekt die Lookup-Felder aus dem Feld-Editor?

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 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