المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : مشكله في الحدث AfterInsert


palunix
12-08-2010, 12:52 AM
السلام عليكم ,

احاول عند ادخال سجل ان يعمل الحدث الخاص بـ AfterInsert وتظهر الرسالة بادخال السجل
لا ادري ان كان هناك خطا ,,


procedure TForm1.Button1Click(Sender: TObject);
begin
ABSQuery1.DatabaseName:='new.ABS';
ABSQuery1.SQL.Add(
'insert into Constz(name,Sdate,Edate,info) values("xxx","11/2/2002","11/2/2002","xxzzz")');
ABSQuery1.ExecSQL();
ABSTable1.Refresh;
ABSTable1.AfterInsert:= ABSQuery1AfterInsert;
end;

procedure TForm1.ABSQuery1AfterInsert(DataSet: TDataSet);
begin
ShowMessage('the record is inserted');
end;

end.

Lam.Abdeldjalil
12-08-2010, 11:25 AM
و عليكم السلام ورحمة الله

أولا الحدث AfterInsert لا يطلق إلا بعد تنفيذ التعليمتين Insert و Append
أي في حالة إستخدام SQL مثل حالتك لايطلق
ثانيا يوجد خطآن هنا
ABSTable1.AfterInsert:= ABSQuery1AfterInsert;1 أي للقراءة فقط ( الجزء الأيسر )
[Pascal Error] Unit1.pas(96): E2064 Left side cannot be assigned to2 إستدعاء الحدث AfterInsert لا فائدة منه فإذا أردت إظهار الرسالة أضفها مباشرة بعد Refresh

أما إذا أردت التأكد من إتمام الإضافة بنجاح :
إذا لم تظهر رسالة خطأ فإن التسجيل تم إضافته بنجاح
إذا أردت التأكد يدويا توجد عدة طرق أعطيك واحدة
بإفتراضي أن ConstzID هو المفتاح الأساسي عندك و TheaddedCode هو قيمة المفتاح للسجل المضاف

ABSQuery1.close;
ABSQuery1.SQL.clear;
ABSQuery1.SQL.add('select * from Constz where ConstzID=TheaddedCode ');
ABSQuery1.open;
If ABSQuery1.IsEmpty then
ShowMessage('no record inserted')
else
ShowMessage('the record is inserted');بالتوفيق

palunix
12-08-2010, 07:00 PM
حياك الله اخي الكريم ,
الــ AfterInsert لم يعمل و قد تم الموضوع عبر الطريقة اليدوية

باركك الله اخي الكريم ,

Lam.Abdeldjalil
12-08-2010, 07:31 PM
السلام عليكم

الحدث AfterInsert لا و لم و لن يعمل بإستعمال SQL إلا إذا إستدعيته يدويا مثله مثل باقي الإجراءات العادية

إذا كنت ملحا على إستدعاء الحدث AfterInsert فهاهي الطريقة مثال
AfterInsertABSQuery1(ABSTable1);وفيك بركة أخي الكريم

بالتوفيق