So wie Du das beschreibst, liegt die Vermutung nahe, dass die neuen Daten nach dem Insert der letzte Satz in der Tabelle sind. Hier müsste dann frmmain.table.last vor frmmain.table.edit den Datensatzzeiger an die richtige Stelle bringen, vorausgesetzt, Du hast in frmmain.table.indexname nichts eingetragen. Steht dort ein Indexname drin, so wirst Du den neuen Datensatz an der entsprechenden Stelle nach der Sortierreihenfolge finden. Einfachste Variante ist also, den Indexnamen (sofern vorhanden) wegzunehmen.
Wäre eine Änderung von SaveBlob eine Alternative?
Dann versuche es mal mit
Delphi-Quellcode:
Procedure SaveBlob;
var
FileStream: TMemoryStream;
BlobStream: TABSBlobStream;
begin
// frmmain.Table.Edit;
frmmain.Table.Append;
frmmain.fieldbyname('brand').AsString := txtMarke.Text;
frmmain.fieldbyname('model').AsString := txtModell.Text;
try
FileStream := TMemoryStream.Create;
FileStream.LoadFromFile(showImage);
BlobStream := TABSBlobStream(frmmain.Table.CreateBlobStream(frmmain.Table.FieldByName('image_show'),bmWrite));
BlobStream.CopyFrom(FileStream,FileStream.Size);
FileStream.Free;
BlobStream.Free;
frmmain.Table.Post;
except
frmmain.Table.Cancel;
raise;
end;
end;
So solltest Du die Texte für brand und model sowie das Blobfeld in "einem Rutsch" in die Datenbank bekommen.
Stephan