ich dachte weitergekommen zu sein aber werde wieder und wieder zurueckgeworfen.
Der Insert funkt und die Daten werden auch mit dem .Refresh angezeigt.
Code: Alles auswählen
procedure TForm1.Button4Click(Sender: TObject);
var
SuchStr : String;
ColFieldName :string;
begin
try
if ZQuery1.Active = True then
begin
ZQuery1.Insert;
ZQuery1Feld1.AsString := Edit3.Text;
ZQuery1.Refresh;
SuchStr := Edit3.Text;
ColFieldName := 'Feld1';
DataSource1.DataSet.Locate(ColFieldName,SuchStr,[loPartialKey,loCaseInsensitive]);
Edit3.Text := '';
end;
except
on E: EDatabaseError do
begin
MessageDlg('Meldung', 'Nachricht: ' +E.Message, mtError, [mbOK], 0);
Edit3.Text := '';
end;
end;
end;
Mein Datenbankfeld fuer den Insert (also hier im Beispiel Feld1) hat die Eigenschaft UNIQUE, versuche ich jetzt ein Doppelten Eintrag einzufuegen,
wird eine Meldung generiert und das Programm kehrt nicht mehr in den vorherigen Status zurueck.
// Es muss mit folgenden Fehlermeldung beendet werden.
SQL Error: constraint failed: library routine called out of sequence.
Press OK to ignore and risk data corruption.
Press Cancel to kill the program.
>
Edit: Hmmm mit den SQLite von Lazarus bekomme ich das Problem direkt gemeldet >> "Nachricht: UNIQUE constraint failed: MeineTabelle.Feld1"
mit der ZEOS nicht
Aber gut, es scheint mit CancelUpdates kehrt man wieder in den vorhaerigen Status zurueck.
Ist das richtig mit ZQuery1.CancelUpdates; ????
Code: Alles auswählen
except
on E: EDatabaseError do
begin
MessageDlg('Meldung', 'Nachricht: ' +E.Message, mtError, [mbOK], 0);
ZQuery1.CancelUpdates; // <---
Edit3.Text := '';
end;
end;