![]() |
Abfrage letzter Datensatz
Hallo,
habe unter Delphi eine Datenbank erstellt die ein FELD ID hat, das wird mit jedem Datensatz automatisch erhöht. Nun möchte ich einfach auf meiner Form mir die letzte ID angucken. Wie geh ich da am besten vor. MFG PES |
Re: Abfrage letzter Datensatz
hall pes,
willkommen in der dp , recordcount sollte dein freund in der OH sein raik |
Re: Abfrage letzter Datensatz
Hallo PES,
zunächst einmal herzlich willkommen im Delphi-PRAXIS Forum. Recordcout funktioniert leider nicht immer, weil ja auch Datensätze gelöscht werden können. Es gibt zwei Möglichkeiten:# Entweder du schreibst ein einfachen SQL Statement:
SQL-Code:
oder, falls ID der Primärschlüssel ist (und aufsteigend sortiert ist), kannst du mit:
SELECT MAX(ID) FROM myTable
Delphi-Quellcode:
die höchste ID feststellen.
myTable.Last;
maxID := myTableID.Value; |
Re: Abfrage letzter Datensatz
Erstmal danke
Da ich noch nicht ganz verstehe was mit record count gemeint ist habe ich folgenden weg gedacht form2.show; form2.table1.insert; form2.table2.insert; form2.table3.insert; form2.query1.active:=false; form2.query1.sql.clear; form2.query1.sql.add ('SELECT id FROM Kunde'); form2.query1.active:=true; form2.show; dieses gebe ich in einen dbgrind aus. Leider verstehe ich nicht wie ich hier auf auf den letzten Datensatz zugreife um diesen dan auszugeben MFG PES @Mr Spock Was meinst den genau mit mytable? Ist das der Name der DB(Kunde) oder die komponente ttable? |
Re: Abfrage letzter Datensatz
Hallo PES,
RecordCount ist eine Methode, die dir die Anzahl der Datensätze in einer Datenmenge zurückgibt. Zitat:
Zitat:
Delphi-Quellcode:
form2.query1.sql.add ('SELECT Max(id) as maxid FROM Kunde');
Zitat:
Delphi-Quellcode:
kannst du auf die höchste ID zugreifen.
maxid := form2.query1.FieldByName('maxid').Value;
|
Re: Abfrage letzter Datensatz
@ Spock
Jo danke, problem gelöst. Ja wir schreiben in drei tabellen, sind aber noch am überlegen ob wir das umschmeißen! MFG Pes |
Re: Abfrage letzter Datensatz
Hallo, wir haben jetzt folgendes Problem:
Wir erstellen eine neue Kundendb. Haben nur das Problem das wenn wir die MAxid ermitteln jedoch noch nichts in der db steht er abstürzt, da er maxid ja nicht belegen kann. Ist ja auch logisch.
Delphi-Quellcode:
Wie können wir diesen Fehler umgehen?
begin
NeuerKunde.show; NeuerKunde.TTableKunde.insert; NeuerKunde.querySQL.active:=false; NeuerKunde.querySQL.sql.clear; NeuerKunde.querySQL.sql.add('SELECT Max(Kundennummer) as maxid FROM Kunde'); NeuerKunde.querySQL.active:=true; maxID:=NeuerKunde.querySQL.FieldbyName('maxid').Value; NeuerKunde.DBKundennummer.text:=IntToStr(maxID+1); Danke PES [edit=Sharky]Deplhi-Tags gesetzt. Mfg, Sharky[/edit] |
Re: Abfrage letzter Datensatz
Hai PES,
um welche Datenbank handelt es sich denn? |
Re: Abfrage letzter Datensatz
Hallo PES,
nach dem Öffnen der Query kannst du mit RecordCount prüfen, ob ein Ergebnis erzeugt wurde:
Delphi-Quellcode:
maxID := -1;
try NeuerKunde.querySQL.active:=false; NeuerKunde.querySQL.sql.clear; NeuerKunde.querySQL.sql.add('SELECT Max(Kundennummer) as maxid FROM Kunde'); NeuerKunde.querySQL.active:=true; if NeuerKunde.RecorCount > 0 then maxID:=NeuerKunde.querySQL.FieldbyName('maxid').Value except on E:exception do MessageDlg('Fehler bei der Abfrage'#13 +E.Message, mtError, [mbOK], 0); end; |
Re: Abfrage letzter Datensatz
Zitat:
wie ich schon oben sagte :mrgreen: raik |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 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