عند ورقة بيانات فرعية عبارة عن فاتورة اريد منع اضافة نفس الصنف اكثر من مرة للفاتورة الوحدة
ورقة بيانات فرعية
ريم اهلا بك من جديد،،
لدي الرابط التالي لموضوع ساله احد الاخوة واجبت عليها في حينه، الفكرة تختلف من حيث ان الادخال يتم من نموذج اخر وبالتالي يسهل منع التكرار،،،،
ادراج سجلات في نموذج فرعي وحل مشكلة التكرار
همام
وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ
مرحبا اخي همام ابو الحلول المثال حلو لكن هل يمكن ان تم ذلك في نموذج واحد دوان ارباك المستخدم بنموذج اخر مشكلة المفتاح الاساسي انة يقوم بتعميم منع التكرار في الجدول كامل
مشكلة الفاتورة انة يجب الحد من سوء فهم المستخدم فبعض المستخدمين يكرر ادخال الصنف اكثر من مرة في فاتور واحدة مع انة الصحيح اختيار الصنف واضافة الكمية فقط فلو اشتري الزبون 10 حبات خبز فان بعض المستخدمين يضبف الصنف عشر مرة في الفاتورة وهنا المشكلة كيف تحد من اخطاء الادخال
الحل في جعل رقم الفاتورة ورقم الصنف مفتاحا اساسيا،، هذا براي الحل الافضل، وعرض رسائل خطا خاصة في حال حدوث هذا الخطأ..ولكن تصميم قاعدة البيانات لديك يمنع استخدام هذا الحل بشكل امثل، حيث ان جدول Transaction تشترك به فواتير الشراء والبيع.،، ولكن ساحاول مع ما هو متاح...
ان وجود اشتراك في transaction واستقلالية لجدول الشراء عن البيع، يعد عقبة كبيرة في سبيل تغيير المفاتيح وعرض البيانات المرتبطة بشكل سليم،،
لذا كان من الافضل اولا ، اشتراك في كل شي، او استقلالية في كل شي،، وهذا اقوله من واقع تجربة عملية قمت بها في اكثر من برنامج مماثل، ومنها للصيدلية، والجمعية التعاونية، ومكتب التعهدات، ومدير المزرعة وغيرها....
تم تعديل هذه المشاركة بواسطة همام ابوعرقوب في 12 سبتمبر 2007 في 21:06
وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ
اخي الفاضل همام
بارك الله فيك
وكل عام وانتم بخير
قد يكون هذا الحل هو الأفضل بدون تعديل اي شيء في قاعدة البيانات فلا نحتاج الى جعل الحقلين بمفتاح واحد لأن القاعدة مترابطة
اختي الفاضله ريم
السلام عليك ورحمة الله وبركاته
وكل عام وانت بخير
اليك الحل حسب الكود التالي
يوضع هذا الكود في حدث قبل التحديث لحقل كود الصنف في النموذج الفرعي ( الذي هو ورقة البيانات )
Private Sub كود_الصنف_BeforeUpdate(Cancel As Integer)
Dim NID As String
Dim stLinkCriteria As String
Dim rsc As DAO.Recordset
Set rsc = Me.RecordsetClone
NID = Me.number.Value
stLinkCriteria = "[Number]=" & "'" & NID & "'"
'فحص هل كود الصنف مكرر في الجدول ام لا
If DCount("Number", "Transaction", stLinkCriteria) > 0 Then
'عدم التكرار
Me.Undo
MsgBox " هذا الكود موجود مسبقا", vbCritical, "كود الصنف مكرر"
Cancel = -1
Me.number = ""
End If
End Subوهذا ملفك بعد التعديل
للتجربه حاولي ادخال الأرقام الخاصة بكود الصنف وهي 1 او 2 او 3 او 4 وحاولي تكرار اي واحد منها وانظري النتيجة
على فكره اخي همام
يتم استخدام حلك وطريقتك عندما نكون في النموذج الرابع من نماذج قواعد التسوية للبيانات حيث يكون هناك جدول رابط نقوم بالربط بين الجداول .
اما في حالتنا هذه فنحن نستخدم النموذج الثالث من قواعد تسوية البيانات حيث لدينا نموذج رئيسي ونموذج فرعي كما ان عدد الجداول قليل وكذلك النماذج
شكر اختي زهرة لكن عندما افتح فاتورة جديدة يعطي ان الصنف مكرر اريد من التكرار في كل فاتورة مستقلة ليس من المعقول ان امنع تكرار صنف وعندما اريد افتح فاتورة جديدة لااستطيع لانه مكرر
السلام عليكم
بعد أذن معلمتنا جميعا الأخت زهرة
فقط هذا تعديل طفيف على الكود ... من أجل الا يقبل تكرار
كود الصنف للفاتورة فقط .. ويقبل التكرار اذا تغير رقم الفاتورة
محاولة عالسريع ..... كل عام والجميع بخير
Ekseer
كل عام وانت بخير دائما اجد عندك الحل لكل شئ مشكور ومبروك عليكم الشهر الاخت زهرة المعذرة نست اهنيكم بالشهر انت والاخ همام كل عام وانتم بخير وجعل الله الشهر عليكم خير في خير
هل ممكن تدلوني على كتب برمجة ممتازة سوي عربي او انجليزي
تكون متوفرة في السعودية
جيت مكتبت جرير وحصلت كتب الاسعار نار ولكن لاعرف اي الكتب احلى
السلام عليكم
هناك كتاب صادر عن الدار العربية للنشر
وهو : علم نفسك ACCESS2003
وأي كتاب برمجي صادر عن :
الدار العربية للنشر
أو
دار شعاع للنشر
أنا مجرب كتب هاتين الدارين ( وهما أكثر من رائعة ومحترمة )
في كل التحصصات
بالتوفيق ...... EKSEER
اخي االفضل اكسير
كل عام وانتم بخير
وتقبل الله منا ومنكم صالح الأعمال
و بارك الله فيك على هذه الإضافة الأكثر من رائعة
بسم الله الرحمن الرحيم
ما شاء الله ابداع حقيقي
هذا الموضوع مغلق.

