SQLITE ZEOS DBGRID Daten nach insert anzeigen

Für Fragen von Einsteigern und Programmieranfängern...
lazEdgar
Beiträge: 17
Registriert: Do 27. Mär 2014, 14:46

Re: SQLITE ZEOS DBGRID Daten nach insert anzeigen

Beitrag von lazEdgar »

Hallo nochmals,
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;
 
Zu Abwechslung kann ich aber Exceptions nicht abfangen.

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; 
 
SG.Edgar

LAZ Debütant

Antworten