delphi4arab منتديات دلفي للعرب

نسخة كاملة : البحث والحذف بن جدولين
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
بالنسبة للنمودج المرفق الثاني ، لا يعاني من نفس المشكل ، ملف قاعدة البيانات سليم ، القضية برمجية فقط .
أولا اضافة السجلات سليمة و عادية جدا (على غرار المشكل المطروح أولا)
ثانيا ليست نفس الرسالة.
كتأكيد فقط على هذا الكلام (فكرة فقط، لست أعرف طبيعة و ماهية البرنامج) راجع الكووود

كود :
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 لمـــا لا تزووووور روابط هذا الموضوع بالمنتدى ، فتتضح لك أمووووور عديدة أضنك بحاجة لها. ؟؟؟؟

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