البحث والحذف بن جدولين
#11
بالنسبة للنمودج المرفق الثاني ، لا يعاني من نفس المشكل ، ملف قاعدة البيانات سليم ، القضية برمجية فقط .
أولا اضافة السجلات سليمة و عادية جدا (على غرار المشكل المطروح أولا)
ثانيا ليست نفس الرسالة.
كتأكيد فقط على هذا الكلام (فكرة فقط، لست أعرف طبيعة و ماهية البرنامج) راجع الكووود

كود :
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;

راجع ملفك المرفق بعد التعديل. (أين الإشكال ؟)
بالتوفيق


الملفات المرفقة
.rar   Project.rar (الحجم : 4.76 ك ب / التحميلات : 22)
الرد
#12
مكونات DataSet تمثل نسخة من قاعدة البيانات، يتم التعامل معها في الذاكرة ثم ترفق التعديلات إلى قاعدة البيانات.
التكامل المرجعي يطبق مستوى قاعدة البيانات ولا يطبق على مستوى مكونات DataSet.
فللحذف نحن أمام خيارين:
- الحذف على مستوى قاعدة البيانات وبالتالي تطبيق آلي للتكامل المرجعي (أي يتم حذف السجل المقابل تلقائيا)، وهذه الطريقة تتم بإرسال استعلام SQL يقوم بالحذف.
- حذف سجل من كل جدول يدويا -إن صح التعبير- بكتابة أمر الحذف Table2.Delete في الحدث OnBeforeDelete للمكون Table1.
الطريقة الثانية في المرفقات.
هذا ما أعرف، والله أعلم.


الملفات المرفقة
.rar   Project.rar (الحجم : 2.84 ك ب / التحميلات : 34)
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#13
شكرا اخي العزيز على مجهودك معاي
لكن للاسف جدول'eau' لم يفتح معي. يا ريت لو تقولي ماذا عملت بالضبط حتى اعيد انشاء قاعدة البيانات واعيد ربط الجدولين بالطريقة الصحيحة .واي طريقة alias استعملت.؟
شكرا لك مرة اخرى.
الرد
#14
نصحتك باعادة انشاء الجداول ، لتختزل الجهد و الوقت عن نفسك .
قضية l'alias لمـــا لا تزووووور روابط هذا الموضوع بالمنتدى ، فتتضح لك أمووووور عديدة أضنك بحاجة لها. ؟؟؟؟

بالتوفيق أخي الكريم
الرد
#15
هنا تجد حل أنا جديد ولا أعرف كيف أنسق المهم وهو الأهم تفضل
كود :
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;;
الرد


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


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