Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Abfrage letzter Datensatz (https://www.delphipraxis.net/21471-abfrage-letzter-datensatz.html)

PES 3. Mai 2004 15:06


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

kiar 3. Mai 2004 15:08

Re: Abfrage letzter Datensatz
 
hall pes,

willkommen in der dp ,

recordcount sollte dein freund in der OH sein

raik

MrSpock 3. Mai 2004 15:19

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:
SELECT MAX(ID) FROM myTable
oder, falls ID der Primärschlüssel ist (und aufsteigend sortiert ist), kannst du mit:

Delphi-Quellcode:
myTable.Last;
maxID := myTableID.Value;
die höchste ID feststellen.

PES 3. Mai 2004 15:20

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?

MrSpock 3. Mai 2004 15:37

Re: Abfrage letzter Datensatz
 
Hallo PES,

RecordCount ist eine Methode, die dir die Anzahl der Datensätze in einer Datenmenge zurückgibt.

Zitat:

form2.show;
form2.table1.insert;
form2.table2.insert;
form2.table3.insert;
Fügst du tatsächlich gleichzeitig Daten in 3 Tabellen ein?

Zitat:

form2.query1.active:=false;
form2.query1.sql.clear;
form2.query1.sql.add ('SELECT id FROM Kunde');
Es muss heißen:
Delphi-Quellcode:
form2.query1.sql.add ('SELECT Max(id) as maxid FROM Kunde');
Zitat:

form2.query1.active:=true;
form2.show;
Mit:
Delphi-Quellcode:
maxid := form2.query1.FieldByName('maxid').Value;
kannst du auf die höchste ID zugreifen.

PES 3. Mai 2004 16:00

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

PES 7. Mai 2004 16:04

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:
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);
Wie können wir diesen Fehler umgehen?
Danke PES

[edit=Sharky]Deplhi-Tags gesetzt. Mfg, Sharky[/edit]

Sharky 8. Mai 2004 07:38

Re: Abfrage letzter Datensatz
 
Hai PES,

um welche Datenbank handelt es sich denn?

MrSpock 8. Mai 2004 14:14

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;

kiar 8. Mai 2004 15:39

Re: Abfrage letzter Datensatz
 
Zitat:

nach dem Öffnen der Query kannst du mit RecordCount prüfen, ob ein Ergebnis erzeugt wurde:

wie ich schon oben sagte :mrgreen:

raik


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 Uhr.
Seite 1 von 2  1 2      

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