AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Abfrage letzter Datensatz
Thema durchsuchen
Ansicht
Themen-Optionen

Abfrage letzter Datensatz

Ein Thema von PES · begonnen am 3. Mai 2004 · letzter Beitrag vom 10. Mai 2004
Antwort Antwort
Seite 1 von 2  1 2      
PES

Registriert seit: 3. Mai 2004
34 Beiträge
 
#1

Abfrage letzter Datensatz

  Alt 3. Mai 2004, 16:06
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
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#2

Re: Abfrage letzter Datensatz

  Alt 3. Mai 2004, 16:08
hall pes,

willkommen in der dp ,

recordcount sollte dein freund in der OH sein

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Abfrage letzter Datensatz

  Alt 3. Mai 2004, 16:19
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:

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.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
PES

Registriert seit: 3. Mai 2004
34 Beiträge
 
#4

Re: Abfrage letzter Datensatz

  Alt 3. Mai 2004, 16:20
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?
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Abfrage letzter Datensatz

  Alt 3. Mai 2004, 16:37
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:
form2.query1.sql.add ('SELECT Max(id) as maxid FROM Kunde');
Zitat:
form2.query1.active:=true;
form2.show;
Mit:
maxid := form2.query1.FieldByName('maxid').Value; kannst du auf die höchste ID zugreifen.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
PES

Registriert seit: 3. Mai 2004
34 Beiträge
 
#6

Re: Abfrage letzter Datensatz

  Alt 3. Mai 2004, 17:00
@ Spock
Jo danke, problem gelöst. Ja wir schreiben in drei tabellen, sind aber noch am überlegen ob wir das umschmeißen!
MFG Pes
  Mit Zitat antworten Zitat
PES

Registriert seit: 3. Mai 2004
34 Beiträge
 
#7

Re: Abfrage letzter Datensatz

  Alt 7. Mai 2004, 17:04
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]
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Abfrage letzter Datensatz

  Alt 8. Mai 2004, 08:38
Hai PES,

um welche Datenbank handelt es sich denn?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Abfrage letzter Datensatz

  Alt 8. Mai 2004, 15:14
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;
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#10

Re: Abfrage letzter Datensatz

  Alt 8. Mai 2004, 16:39
Zitat:
nach dem Öffnen der Query kannst du mit RecordCount prüfen, ob ein Ergebnis erzeugt wurde:

wie ich schon oben sagte

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:28 Uhr.
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