![]() |
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 |
Re: Abfrage letzter Datensatz
Zitat:
Ihr kennt euch ja alle mit DB Systemen aus. Also weiss auch jeder das es,je nach System, die möglichkeit gibt die letzte "ID" vom Server abzufragen. |
Re: Abfrage letzter Datensatz
hallo fischlein
ich glaube er arbeitet mit einer paradoxen datei :mrgreen: ein blick auf seien anderen threads, würde daa vielleicht helfen. mi dem blick auf die db heb ich schonmal den ausserirdischen angesprochen, man müsste in diesem forum erst ein feld ausfüllen, wo man DB , zugriff und ausgabe definiert, erst dann kann man seine frage stellen, würde auf jeden fall zeit sparen raik |
Re: Abfrage letzter Datensatz
Hallo, Mr Spock wir haben deinen Lösungsansatz getested. Leider bekommen wir immer noch folgende Fehlermeldung. Ungültige Variant-Typ Umwandlung. Da ja wie gesagt kein Datensatz in der DB steht.
MFG PES |
Re: Abfrage letzter Datensatz
Hallo PES,
darum habe ich die Anweisungen ja in einen try ... except Block geschrieben. maxID ist mit -1 vorbesetzt und ändert dann seinen Wert nicht. Nur in der IDE siehst du die exception, wenn du "bei Delphi exception anhalten" angewählt hast. Wenn du das Programm ohne IDE laufen lässt oder die Option ausschaltest, läuft das Programm ohne Probleme. Prüfe nach dem try ... except ... end Block einfach den Wert von maxID, ist er -1, so ist kein Datensatz vorhanden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:07 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