Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Letzten oder bestimmten Datensatz finden (https://www.delphipraxis.net/5708-letzten-oder-bestimmten-datensatz-finden.html)

Gambit 16. Jun 2003 13:59


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...

MrSpock 16. Jun 2003 16:02

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'

Gambit 16. Jun 2003 21:27

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

MrSpock 17. Jun 2003 06:53

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:
letzter := qryRegale.FieldByName('letzterMitE').AsString;
aus. Je nach verwendeter Datenbank kannst du auch noch die Funktion SubString im SQL Statement benutzen, falls gewünscht.

Gambit 17. Jun 2003 09:29

Das hört sich gut an! Allerdings scheine ich wieder ein Tüddelchen-Problem zu haben:

Habe geschrieben:

Delphi-Quellcode:
Query2.SQL.Add('Select Max(Regalnummer) as letzterMitE FROM DVDBank WHERE Regalnummer LIKE ''%E''');
wenn ich nun:

Delphi-Quellcode:
letzter := Query2.FieldByName('letzterMitE').AsString;
schreibe, bekomm ich die Fehlermeldung: Feld 'letzterMitE' nicht gefunden.

Ist das nun ein Tüddelchen-Problem oder was mach ich falsch?

Ist mir ja schon fast peinlich...

Gambit

Gast 17. Jun 2003 09:29

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.

Gambit 17. Jun 2003 09:35

Query2 ist bereits eine zusätzliche.

Gruß

Gambit

Gast 17. Jun 2003 09:43

Also wo liegt Dein Problem?

Gruß

Paul Jr.

Gambit 17. Jun 2003 09:45

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

r_kerber 17. Jun 2003 09:47

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 01:21 Uhr.
Seite 1 von 3  1 23      

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