Delphi-Quellcode:
procedure TClerkBox.BeforeDestruction;
begin
if FChanged then
begin
if FDataSetID <> -1 then
UpdateEntry
else
InsertEntry;
end;
inherited BeforeDestruction;
end;
procedure TClerkBox.UpdateEntry;
begin
if FChanged then
begin
FMySQL.Query('UPDATE staff SET name='''+txt_clerkname.Text+''' WHERE id='+inttostr(FDataSetID));
if FMysql.LastErrorNo <> 0 then
showmessage(FMySQL.LastErrorMsg);
FMySQL.FreeResult(FMySQL.LastResultID);
FChanged := false;
Caption := 'Information:';
LoadClerks;
end;
end;
procedure TClerkBox.InsertEntry;
begin
if FChanged then
begin
FMySQL.Query('INSERT INTO staff (name) VALUES('''+txt_clerkname.text+''')');
if FMysql.LastErrorNo <> 0 then
showmessage(FMySQL.LastErrorMsg);
FMySQL.FreeResult(FMySQL.LastResultID);
FChanged := false;
Caption := 'Information:';
LoadClerks;
end;
end;
zur erklärung der BeforeDestruction methode:
FChanged wird dann auf true gesetzt, wenn jemand den inhalt des textfeldes geändert hat (um nicht unnötig jedesmal einen eintrag zu updaten, der sich gar nicht geändert hat).
FDataSetID speichert den primärschlüssel, um auch den richtigen datensatz in der
db zu erwischen
ist FDataSetID = -1, wird angenommen, dass das ganze als neuer Datensatz gespeichert werden soll