![]() |
Letzten oder bestimmten Datensatz finden
Moinsen,
ich möchte in meiner Datenbank einen bestimmten letzten Datensatz finden, dort den Wert eines bestimmten Feldes abfragen und das noch in Abhängigkeit eines anderen Feldes. Mal klarer: Es gibt ein Feld "Regalnummer" Die soll incrementiert werden bzw. eingetragen werden, wenn ich einen neuen Datensatz anlege. Nun gibts es aber zwei verschiedene Arten von Regalnummern, einmal die, die noch ein "E" hinten dran haben und die, die ein "K" hinten dran haben. Ob E oder K hängt von einem anderen Feld ab. Ich möchte nun: zb nach E abgrenzen, dann dort den letzten Datensatz finden und ein Feld dieses Datensatzes abfragen. Wie mach ich das, vor allen Dingen, ohne die Anzeige der Daten in meinem DBGrid zu verändern(FindLast würde also nicht in Frage kommen) Geht das vielleicht irgendwie mit SQL? Gruß Gambit P.S Hoffe, ich hab das einigermaßen klar machen können, irgendwie raucht mir der Kopp bei dem schwülen Wetter... |
Hallo Gambit,
die Abfrage mittels SQL wäre mit dem like operator möglich:
Delphi-Quellcode:
SELECT Max(regalNr) as letzterMitE FROM regale WHERE regalNr LIKE '%E'
|
Ja, Danke! Aber würde das Ergebnis dann nicht auch sofort in meinem DBGrid angezeigt? Das Ergebnis soll ja nur intern verarbeitet werden.
Engage! Gambit |
Hallo Gambit,
nein, das Ergebnis steht nur in der TQuery Komponente. Um es anzuzeigen müsstest du erst noch ein Grid und eine TDataSource Komponente mit DIESER Query verknüpfen. Das Ergebnis liest du mit:
Delphi-Quellcode:
aus. Je nach verwendeter Datenbank kannst du auch noch die Funktion SubString im SQL Statement benutzen, falls gewünscht.
letzter := qryRegale.FieldByName('letzterMitE').AsString;
|
Das hört sich gut an! Allerdings scheine ich wieder ein Tüddelchen-Problem zu haben:
Habe geschrieben:
Delphi-Quellcode:
wenn ich nun:
Query2.SQL.Add('Select Max(Regalnummer) as letzterMitE FROM DVDBank WHERE Regalnummer LIKE ''%E''');
Delphi-Quellcode:
schreibe, bekomm ich die Fehlermeldung: Feld 'letzterMitE' nicht gefunden.
letzter := Query2.FieldByName('letzterMitE').AsString;
Ist das nun ein Tüddelchen-Problem oder was mach ich falsch? Ist mir ja schon fast peinlich... Gambit |
Hallo Gambit 8)
TDataSet.Lookup Delphi F1-Taste drücken: "Die virtuelle Methode Lookup gibt die Feldwerte eines Datensatzes zurück, der mit den angegebenen Suchwerten übereinstimmt." Von mir: Im gegensatz zu Locate macht Lookup den gefundenen Datensatz NICHT zu dem aktuellen Datensatz... Alternative: Du musst eine zusätzliche Query benutzen und so die Werte herausfinden Gruß Paul Jr. |
Query2 ist bereits eine zusätzliche.
Gruß Gambit |
Also wo liegt Dein Problem?
Gruß Paul Jr. |
Hab ich doch oben geschrieben: Es wird das Feld letzterMitE nicht erkannt. Ich dachte dieses Alias könnte ich wie einen ganz normalen Feldnamen benutzen.
Gambit |
Mal so aus'm Bauch heraus. Versuche doch mal zur Design-Zeit dieses SELECT inzutragen, und anschließend in der Query die Felder hinzuzufügen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:46 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