بالنسبة للنمودج المرفق الثاني ، لا يعاني من نفس المشكل ، ملف قاعدة البيانات سليم ، القضية برمجية فقط .
أولا اضافة السجلات سليمة و عادية جدا (على غرار المشكل المطروح أولا)
ثانيا ليست نفس الرسالة.
كتأكيد فقط على هذا الكلام (فكرة فقط، لست أعرف طبيعة و ماهية البرنامج) راجع الكووود
كود :
procedure TForm1.Button2Click(Sender: TObject);
begin
if not table1.IsEmpty then if not table2.IsEmpty then
begin
if ( table1.FindKey([table2.FieldByName('N_bon')])) and ( table2.FindKey([table1.FieldByName('N_bon')]))
then begin
table2.Delete; table1.Delete; end else showmessage('hhhh');
end;
end;
راجع ملفك المرفق بعد التعديل. (أين الإشكال ؟)
بالتوفيق
مكونات DataSet تمثل نسخة من قاعدة البيانات، يتم التعامل معها في الذاكرة ثم ترفق التعديلات إلى قاعدة البيانات.
التكامل المرجعي يطبق مستوى قاعدة البيانات ولا يطبق على مستوى مكونات DataSet.
فللحذف نحن أمام خيارين:
- الحذف على مستوى قاعدة البيانات وبالتالي تطبيق آلي للتكامل المرجعي (أي يتم حذف السجل المقابل تلقائيا)، وهذه الطريقة تتم بإرسال استعلام SQL يقوم بالحذف.
- حذف سجل من كل جدول يدويا -إن صح التعبير- بكتابة أمر الحذف Table2.Delete في الحدث OnBeforeDelete للمكون Table1.
الطريقة الثانية في المرفقات.
هذا ما أعرف، والله أعلم.
شكرا اخي العزيز على مجهودك معاي
لكن للاسف جدول'eau' لم يفتح معي. يا ريت لو تقولي ماذا عملت بالضبط حتى اعيد انشاء قاعدة البيانات واعيد ربط الجدولين بالطريقة الصحيحة .واي طريقة alias استعملت.؟
شكرا لك مرة اخرى.
نصحتك باعادة انشاء الجداول ، لتختزل الجهد و الوقت عن نفسك .
قضية l'alias لمـــا لا تزووووور روابط هذا الموضوع بالمنتدى ، فتتضح لك أمووووور عديدة أضنك بحاجة لها. ؟؟؟؟
13-11-2010, 06:45 PM (آخر تعديل لهذه المشاركة: 13-11-2010, 08:34 PM بواسطة kachwahed.)
هنا تجد حل أنا جديد ولا أعرف كيف أنسق المهم وهو الأهم تفضل
كود :
label 1;
var rech:string;i,s:integer;
begin
1:
rech:=(inputbox('enter le numero','numero','00'));
table1.Edit;
if table1.Locate('mat_fonc',rech,[])then
begin
table4.FieldValues['mat_fonc']:=table1.FieldValues['mat_fonc'];
table1.Delete;
table2.Filter:='mat_fonc='''+rech+'''';
table2.Filtered:=true;
for i := 1 to table2.RecordCount do
if table2.Locate('mat_fonc',rech,[])then
begin
table2.Next;
table2.Delete
end
else
if messagedlg('le numero n''exixte pas ',mtinformation,[mbyes,mbno],0)=mrno then exit
else
goto 1;
end;;