السلام عليكم
احاول استخدام InterBase للمرة الاولى وصادفتني عدة مشاكل ارجو ان اجد حلا لها
استخدمت IBTransaction و IBDataBase و IBTable و طبعاً DataSource
عند اضافة سجل جديد غالباً لايحدث اي خطأ ولكن عند حذف او تعديل سجل موجود وبعد اعادة تشغيل البرنامج
اجد التعديل الاخير غير موجود ولو كان السجل محذوفاً اجده قد عاد
سؤالي عند استخدام Interbase يجب استخدام اوامر مثل IBTransaction.commit و Strattransaction
و ApplyUpdates فما هي الطريقة الصحيحة لاستخدامها واين؟
وجدت في الامثلة المرفقة مع دلفي هذا الكود ولكن وبصراحة لم افهم كل ماكتب فيه
function TMastData.DataSetApplyUpdates(DataSet: TDataSet; Apply: Boolean): Boolean;
begin
Result := True;
with TIBCustomDataSet(DataSet) do
begin
if (State in dsEditModes) or UpdatesPending then
begin
if Apply then
begin
Database.ApplyUpdates([DataSet as TIBCustomDataSet]);
Transaction.CommitRetaining;
{ Always call CancelUpdates to remove any discard changes }
CancelUpdates;
end
else
begin
if (MessageDlg('Unsaved changes, exit anyway?', mtConfirmation,
[mbYes, mbCancel], 0) = mrYes) then
CancelUpdates
else
Result := False;
end;
end;
end;
end;وفي الحدث OnCloseQuery
CanClose := MastData.DataSetApplyUpdates(MastData.Cust, ModalResult = mrOK); if CanClose then MastData.Transaction.CommitRetaining;