AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken ID nicht gefunden nach last_insert_rowid()
Thema durchsuchen
Ansicht
Themen-Optionen

ID nicht gefunden nach last_insert_rowid()

Ein Thema von EdAdvokat · begonnen am 13. Mai 2017 · letzter Beitrag vom 16. Mai 2017
Antwort Antwort
nahpets
(Gast)

n/a Beiträge
 
#1

AW: ID nicht gefunden nach last_insert_rowid()

  Alt 13. Mai 2017, 20:59
Bitte Quelltext von refreshItems.

Was genau passiert da?
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: ID nicht gefunden nach last_insert_rowid()

  Alt 13. Mai 2017, 21:17
Hier die Procedure RefeshItmems:
Delphi-Quellcode:
procedure TMainFRM.refreshItems(ID, Name, Vorname, Geb, Strasse, Nr, PLZ, Ort,
  Tel, email, Bemerkung: string);
var
  item: TListItem;
begin
  item:=lv.Items.Add;
  item.Caption:= ID;
  item.SubItems.Add(Name);
  item.SubItems.Add(Vorname);
  item.SubItems.Add(Geb);
  item.SubItems.Add(Strasse);
  item.SubItems.Add(Nr);
  item.SubItems.Add(PLZ);
  item.SubItems.Add(Ort);
  item.SubItems.Add(Tel);
  item.SubItems.Add(email);
  item.SubItems.Add(Bemerkung);
end;
die rufe ich dann nach UPDATE und INSERT auf.
ist das nicht ausreichend?
Norbert
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: ID nicht gefunden nach last_insert_rowid()

  Alt 13. Mai 2017, 21:34
Delphi-Quellcode:
qMain.SQL.Text := 'SELECT LAST_INSERT_ROWID() AS ID FROM KONTAKTE';
qMain.Open;
if qMain.RecordCount > 0 then begin
  currentID := qMain.FieldByName('ID').AsString;
end else begin
  MessageDlg('LAST_INSERT_ROWID() liefert kein Ergebnis.',mtError,[mbok],0);
end;
qMain.Close;
Wie ist bei den ZEOS-Komponenten AutoCommit eingestellt?
Ebenso TransactIsolationLevel?

Eventuell gibt es da Abhängigkeiten, die es ZEOS ermöglichen, die Abfrage auf LAST_INSERT_ROWID() auszuführen, während bei anderen Datenbankschnittstellen hier kein Ergebnis geliefert wird.
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: ID nicht gefunden nach last_insert_rowid()

  Alt 13. Mai 2017, 21:51
Hallo Stefan, das sind ja die fast unergründlichen Tiefen der Komponenten:
Bei den Zeos-Komp. ist AutoCommit:= true;
und TransactlatsolatronLavel:=tinone
was auch immer das bedeuten soll. Jedenfalls hast Du mich in die Spur gebracht und ich werde wohl morgen daraufhin die dbExpress-Komp.-Einstellungen prüfen.
Könnten noch andere Unterschiede maßgeblich sein? Es ist doch spannend, auf was man alles achten muss.
Norbert
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: ID nicht gefunden nach last_insert_rowid()

  Alt 13. Mai 2017, 22:05
Als erstes interessiert mich, was bei meinem Quelltext 2 Posts höher rauskommt.

Exception, weil Feld nicht gefunden (also der bekannte Fehler) oder wird der Fehlerdialog angezeigt?

Das AutoCommit := True müsste bedeuten, dass das qMain.ExecSQL in einer eigenen Transaktion ausgeführt wird. Das Lesen von LAST_INSERT_ROWID() erfolgt also nach einem Commit.

Wenn andere Komponenten nicht jeweils eine eigene Transaktion machen, könnte es sein, dass es für LAST_INSERT_ROWID() noch keinen Wert gibt, weil der (eventuell) erst nach Abschluss einer Transaktion zur Verfügung steht.
Da müsste man sich dann mal durch die Datenbankdokumentation durchwühlen.

TransactIsolationLevel gibt an, ob Daten anderer Transaktionen gelesen werden, ob nur die per Commit festgeschriebenen oder auch die, die noch nicht per Commit festgeschrieben wurden ...
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: ID nicht gefunden nach last_insert_rowid()

  Alt 14. Mai 2017, 08:49
Hallo Stephan, nach Einfügen deines Code kommt folgende Exception:
Zitat:
qMain: Das Feld 'ID' wurde nicht gefunden
Also die bekannte Meldung.
In den dbExpress-Komp. gibt es leider nicht die Einstellmöglichkeiten der Zeos-Komp.
Ich könnte auch das anze Prog. posten, denn es ist nicht groß und dient lediglich meiner Übung.
Norbert
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: ID nicht gefunden nach last_insert_rowid()

  Alt 14. Mai 2017, 09:22
setze ich if qMain.RecordCount > 0 then begin aufRecordCount = 0 oder -1 kommt Dein geschriebener Meldungstext.
Der RecordCount sollte doch stets >0 sein. Also irgendwas hindert das Programm das Feld 'ID' zu finden. Mit Debugger das Prog. geprüft und genau an der Stelle currentID := qMain.FieldByName('ID').AsString; kommt die Exception. Es ist ja nicht weltbewegend und sicher könnte man damit leben, doch ich bin in der Lernphase und da interessiert mich so eine Kleinigkeit doch etwas, genau wie das Problem der einzelnen Darstellung des letzten veränderten Datensatzes ohne die vorhierigen Datensätze darzustellen nach Aufruf der Bearbeiten-Procedure.
Norbert
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:55 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