كيف تخزن سجل لمنتج ولم تخزن الفاتورة بعد؟
#21
ربما يكون خطا في ربط الجدوليين
اذا كان رقم الفاتورة هو المفتاح الرئيسي في الجدول facture
يجب ان يكون رقم الفاتورة في الجدول factproduit هو مفتاح رئيسي كذلك
تأكد من ان رقم الفاتورة يتكرر في الجدول factprduit كل ما اضفنا منتج جديد
قم باظهار جميع حقول factproduit في dbgrid بما فيها رقم الفاتورة لتتاكد من ذلك
الرد
#22
إقتباس : أستخدم lockType=ltbatchOptimistic من أجل التأكيد الجماعي
الـ Transaction أفضل لهذا الغرض ( هل جربت ما ذكره الأخ ناجي http://www.delphi4arab.net/forum/showpos...ostcount=7 )
إقتباس : يجب ان يكون رقم الفاتورة في الجدول factproduit هو مفتاح رئيسي كذلك
مفتاح رئيسي مركب أو خارجي foreign key
الرد
#23
tarek.inf كتب :ربما يكون خطا في ربط الجدوليين
أتأسف عن ردي السابق لأني لم أرى رديكما في الصفحة الثالثة.
أخي طارق ليس المشكل في ما طرحت لأني لو وضعت refresh فإن هذا يؤدي إلى تخزين سجل المنتج و
تظهر كل المنتجات في الدبغريد و لكن في هذا الحالة الزر إلغاء لم يعد له معنى أي cancel لن تفيد.
هل فهمت مشكلتي؟

أخي عبد الجليل هذا هو كود زر الموافقة
ما رأيك في وضع transaction؟
locktype تفيدني في حالة إلغاء الفتورة و حتى كل المنتجات المخزنة طبعا قبل المرور على التعليمة updateBatch
كود :
procedure TFiche_Facture2.BitBtn1Click(Sender: TObject); begin if dbtext2.Caption='' Then Raise exception.Create('Il n''exsiste Aucun client dans cette Pièce'); if DbcomboBox1.Text='' Then Raise exception.Create('" Saisir le Mode de Règlement"'); IF data.FacProd.RecordCount=0 then Raise exception.Create('" Aucun Article Dans cette Pièce "'); IF data.Facture_VenteEcheance.Value<data.Facture_Ventedate_Facture.Value Then Raise Exception.Create('L''Echéance et Infèrieur a la Date '); /////////////////////////////////////// try data.ADOConnection1.BeginTrans; // بداية الصفقة /////////////////////////////////////// data.FacProd.First; while Not data.FacProd.Eof Do Begin data.FacProd.Edit; data.FacProdcode_Client.Value:=data.Facture_Ventecode_Client.Value; data.FacProddate_Facture.Value:=data.Facture_Ventedate_Facture.Value; data.FacProd.Post; data.FacProd.Next; end; Data.Facture_Vente.Post; close; //////////////////////////////////////////////////////////////// if data.ADOConnection1.InTransaction then data.ADOConnection1.CommitTrans; except if data.ADOConnection1.InTransaction then data.ADOConnection1.RollbackTrans; ShowMessage('Erreur pendant la sauvegarde'); end; /////////////////////////////////////////////////////////////////// end;
الرد
#24
السلام عليكم

أرفق مشروع مصغر إذا أمكن (جدولين + فورم الإضافة) ، لنعدل عليه مباشرة
الرد
#25
لقد وضعت مشروع مصغر على هذا الرابط
http://www.4shared.com/rar/h5SwoVlk/gcapp.html
الرد
#26
السلام عليكم

تحقق من الرابط
الرد
#27
صحيح مع أني رفعته و جربت تحميله.

لكن لقد اتبعت ارشاداتك و أضفت refresh كما قال بعض الاخوة و كل شيء شغال شكرا جزيلا أخي عبد الجليل.
الرد


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


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