![]() |
Current Record in einer Query ermitteln.
Hi, :)
ich habe auf einem Formular ein DBGrid mit DataSourse QueryX und mehrere DBEdit Felder mit DataSource TableY. Qery und Table haben gleichen Wert in einer Spalte. Wie kann ich auf den entsprechenden Record in der Tabelle springen, wenn ich im Grid(Query) die Zeilen markiere??? Natalia |
Hallo Natalia,
zunächst einmal herzlich willkommen im Delphi-PRAXIS Forum. Die DataSource Komponente, die mit QueryX verbunden ist, stellt das Ereignis OnDataChange zur Verfügung, das ausgelöst wird, z.B. wenn sich der aktuelle Datensatz der zugehörigen Datenmenge ändert. Hier kannst du dann Code einfügen, der z.B. mit Locate den entsprechenden Datensatz aus der Tabelle auswählt. |
Hi,MrSpock
Danke für den Tipp! ("Locate" war eine gute Idee) :D |
Hallo Natalia,
freut mich, dass es funktioniert. Neben locate solltest du dir auch einmal "Schlüssel" Felder (primary keys, foreign keys) und dazu die FindKey Methode. Wenn "ID" z.B. ein Schlüsselfeld ist (das auch ausgewählt sein muss), dann wählst du den Satz mit der ID 5 wie folgt aus:
Delphi-Quellcode:
if myTable.FindKey([5]) then
{ Satz gefunden und ausgewählt } else { gibbet nich :-)) }; |
Hi, :)
Jetzt habe ich ein weiteres Problem :( ich habe Query Artikel und Query Aufträge und suche für den bestimmten Artikel offene Aufträge: Code:
Delphi-Quellcode:
SQL Query Auftrag:
artNr : integer;
artN:=qrArtikelArtikelnummer.AsInteger; if not (qrAuftrag.Locate('artikelnummer',artNr, [])) then begin ShowMessage('Keine offene Aufträge'); Exit; end;
Delphi-Quellcode:
Es wirt nichts gefunden
Select .....
From Auftrag1 a, Auftrag2 b Where a.Artikelnummer=:artNr Was mache ich falsch? :?: [edit=mrSpock]Code Tags hinzugefügt.[/edit] |
Hallo Natalia,
in deiner Query benutzt du den Ausdruck :artNr, dadurch wird artNr ein Parameter deiner Query. Du kannst ihn dir sogar in der Params Eigenschaft anschauen. Um deine Variable artNr jetzt diesem Parameter zuzuweisen, musst du folgendes schreiben:
Delphi-Quellcode:
natürlich mit dem korrekten Querynamen...
qrAuftrag.ParamByName('artNr').AsInteger := artNr;
Zuerst die Query schließen, dann die obigen Zuweisung an den Parameter. Anschließend kannst du die Query mit Open ausführen. |
Danke, MrSpock!
Es funktioniert! :D Natalia |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 Uhr. |
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-2025 by Thomas Breitkreuz