AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi wie bekomme ich die id des zuletzt geschriebenen Datensatzes
Thema durchsuchen
Ansicht
Themen-Optionen

wie bekomme ich die id des zuletzt geschriebenen Datensatzes

Ein Thema von Grumble · begonnen am 20. Aug 2004 · letzter Beitrag vom 20. Aug 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Grumble
Grumble

Registriert seit: 19. Mär 2003
Ort: Dresden
203 Beiträge
 
Delphi 6 Enterprise
 
#1

wie bekomme ich die id des zuletzt geschriebenen Datensatzes

  Alt 20. Aug 2004, 11:28
hi

ich habe ne IBdatenbank und schreibe nun mit sql strings in eine tabelle, das klappt auch, nun moechte ich gern die zuletzt geschriebene automatisch erzeugt ID herausbekommen, ich hatte mit das in etwa so vorgestellt (zusammengesucht):

Delphi-Quellcode:
       // schreiben der werte
       DBForm.SQLI.sql.clear;
       DBForm.sqli.SQL.Add('insert into IDRECORDS (RECA,RECB,DATNAME,EINSPIELDATUM,EINSPIELER) values ('''+s+''','''+tempstring+''','''+vn+''','''+d+''','''+au+''');');
       DBForm.sqli.ExecQuery;

       DBForm.sqli.sql.clear;
       DBForm.sqli.SQL.add('commit retain;');
       DBForm.sqli.ExecQuery;

       // suchen der ID
       DBForm.sqli.sql.clear;
       DBForm.sqli.SQL.add('Select GEN_ID(GEN_IDRECORDS_ID,1) From RDB$Database into :cid;');
       DBForm.sqli.ExecQuery;
beim suchen der id krieg ich ne exception in der steht das into unbekannt ist..

wie kann man sowas machen ?
gruss
Grumble

... moege der code mit dir sein ...
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#2

Re: wie bekomme ich die id des zuletzt geschriebenen Datensa

  Alt 20. Aug 2004, 11:32
Hi

Delphi-Quellcode:
// suchen der ID
       DBForm.sqli.sql.clear;
       DBForm.sqli.SQL.add('Select GEN_ID(GEN_IDRECORDS_ID,1) From RDB$Database;');
       DBForm.sqli.Open;
        
       id := DBForm.sqli.Fields[0].AsInteger;
PS.: Bei der obigen INSERT, üwrde ich trotzdem eher die Variante mit ParamByName bevorzugen, ist einfach viel Übersichtlicher, und nicht so Fehleranfällig (wenn im Text irgendwelche Spezialzeichen vorkommen !!!)
  Mit Zitat antworten Zitat
Benutzerbild von Grumble
Grumble

Registriert seit: 19. Mär 2003
Ort: Dresden
203 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: wie bekomme ich die id des zuletzt geschriebenen Datensa

  Alt 20. Aug 2004, 11:37
Zitat:
PS.: Bei der obigen INSERT, üwrde ich trotzdem eher die Variante mit ParamByName bevorzugen, ist einfach viel Übersichtlicher, und nicht so Fehleranfällig (wenn im Text irgendwelche Spezialzeichen vorkommen !!!)
gut dann werd ich die parambyname variante nehmen...

nun krieg ich beim compilieren in der zeile

DBForm.sqli.Open; die fehlermeldung:
[Fehler] Anweisung erforderlich, aber Ausdruck vom Typ 'Boolean' gefunden

was fehlt denn da noch??
gruss
Grumble

... moege der code mit dir sein ...
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#4

Re: wie bekomme ich die id des zuletzt geschriebenen Datensa

  Alt 20. Aug 2004, 11:40
Zitat von Grumble:
DBForm.sqli.Open; die fehlermeldung:
[Fehler] Anweisung erforderlich, aber Ausdruck vom Typ 'Boolean' gefunden

was fehlt denn da noch??
Was ist den sqli für ein Typ ?
  Mit Zitat antworten Zitat
Benutzerbild von Grumble
Grumble

Registriert seit: 19. Mär 2003
Ort: Dresden
203 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: wie bekomme ich die id des zuletzt geschriebenen Datensa

  Alt 20. Aug 2004, 11:41
es ist ein TIBSQL
gruss
Grumble

... moege der code mit dir sein ...
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#6

Re: wie bekomme ich die id des zuletzt geschriebenen Datensa

  Alt 20. Aug 2004, 11:43
Zitat von Grumble:
es ist ein TIBSQL
Probiers mal mit einem TIBQuery. Mit dem sollte beides funktionieren (ExecSQL und Open)
  Mit Zitat antworten Zitat
Benutzerbild von Grumble
Grumble

Registriert seit: 19. Mär 2003
Ort: Dresden
203 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: wie bekomme ich die id des zuletzt geschriebenen Datensa

  Alt 20. Aug 2004, 11:57
ok

nun hab ichs so:
Delphi-Quellcode:
       DBForm.query1.SQL.Clear;
       DBForm.query1.SQL.add('Select GEN_ID(GEN_IDRECORDS_ID,1) From RDB$Database');
       DBForm.query1.open;
       cid:=DBForm.query1.FieldByName('IDR').AsInteger;
nun krieg ich die fehlermeldung, dass er mein feld IDR nicht findet
gruss
Grumble

... moege der code mit dir sein ...
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#8

Re: wie bekomme ich die id des zuletzt geschriebenen Datensa

  Alt 20. Aug 2004, 12:14
Zitat von Grumble:
ok

nun hab ichs so:
Delphi-Quellcode:
       DBForm.query1.SQL.Clear;
       DBForm.query1.SQL.add('Select GEN_ID(GEN_IDRECORDS_ID,1) From RDB$Database');
       DBForm.query1.open;
       cid:=DBForm.query1.FieldByName('IDR').AsInteger;
nun krieg ich die fehlermeldung, dass er mein feld IDR nicht findet
entweder mit
       cid:=DBForm.query1.Fields[0].AsInteger; oder mit

Delphi-Quellcode:
       DBForm.query1.SQL.Clear;
       DBForm.query1.SQL.add('Select GEN_ID(GEN_IDRECORDS_ID,1) AS IDR From RDB$Database');
       DBForm.query1.open;
       cid:=DBForm.query1.FieldByName('IDR').AsInteger;
  Mit Zitat antworten Zitat
Benutzerbild von Grumble
Grumble

Registriert seit: 19. Mär 2003
Ort: Dresden
203 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: wie bekomme ich die id des zuletzt geschriebenen Datensa

  Alt 20. Aug 2004, 12:23
danke nun klappt es

allerdings addierte
DBForm.query1.SQL.add('Select GEN_ID(GEN_IDRECORDS_ID,1) From RDB$Database'); immer noch ne id dazu...

deshalb hab ichs in
DBForm.query1.SQL.add('Select GEN_ID(GEN_IDRECORDS_ID,0) From RDB$Database'); geaendert... nun krieg ich wirklich die zuletzt geschriebene id raus

gruss
Grumble

... moege der code mit dir sein ...
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#10

Re: wie bekomme ich die id des zuletzt geschriebenen Datensa

  Alt 20. Aug 2004, 12:28
Zitat von Grumble:
danke nun klappt es

allerdings addierte
DBForm.query1.SQL.add('Select GEN_ID(GEN_IDRECORDS_ID,1) From RDB$Database'); immer noch ne id dazu...

deshalb hab ichs in
DBForm.query1.SQL.add('Select GEN_ID(GEN_IDRECORDS_ID,0) From RDB$Database'); geaendert... nun krieg ich wirklich die zuletzt geschriebene id raus

wo wird den die ID verwendet und in die Tabelle geschrieben ?
Wenn du es so machst wie oben, kann es dir passieren, wenn zwei gleichzeitig (von verschiedenen Computern) aus einen Eintrag erzeugen, das dann die ID's falsch sind, die die bekommst (mit GEN_ID(GEN_IDRECORDS_ID,0))

daher vielleicht eher so :
Delphi-Quellcode:
DBForm.query1.SQL.add('Select GEN_ID(GEN_IDRECORDS_ID,1) From RDB$Database');
DBForm.query1.Open;
id := DBForm.query1.Fields[0].AsInteger;

DBForm.query1.SQL.Add('insert into IDRECORDS (ID, s, ...) values (:ID, :s);');
DBForm.query1.ParamByName('ID').AsInteger := id;
DBForm.query1.ParamByName('s').AsString := s;
DBForm.query1.ExecQuery;
damit hast du 100% die richtige ID ...

nur als Vorschlag

Gruss
Hans
  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:39 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