مشكله في الحدث AfterInsert
#1
السلام عليكم ,

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

PHP كود :
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. 
الرد
#2
و عليكم السلام ورحمة الله

أولا الحدث AfterInsert لا يطلق إلا بعد تنفيذ التعليمتين Insert و Append
أي في حالة إستخدام SQL مثل حالتك لايطلق
ثانيا يوجد خطآن هنا
إقتباس :ABSTable1.AfterInsert:= ABSQuery1AfterInsert;
1 أي للقراءة فقط ( الجزء الأيسر )
كود :
[Pascal Error] Unit1.pas(96): E2064 Left side cannot be assigned to
2 إستدعاء الحدث 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');
بالتوفيق



الرد
#3
حياك الله اخي الكريم ,
الــ AfterInsert لم يعمل و قد تم الموضوع عبر الطريقة اليدوية

باركك الله اخي الكريم ,
الرد
#4
السلام عليكم

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

إذا كنت ملحا على إستدعاء الحدث AfterInsert فهاهي الطريقة مثال
كود :
AfterInsertABSQuery1([COLOR=#000000][COLOR=#0000bb]ABSTable1[/COLOR][/COLOR]);
وفيك بركة أخي الكريم

بالتوفيق
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم