husseinharby قام بنشر الجمعة at 09:11 قام بنشر الجمعة at 09:11 السلام عليكم في نموذج sale قمت بعمل زر copy لنقل البيانات الي نموذج buy لكنه ينقل فقط البيانات الخاصة بالنموذج الرئيسي فقط اريده ان ينقل ايضا بيانات النموذج الفرعي وهي العدد والسعر والصنف كما هو موضح في الفيديو Downloads.rar
Foksh قام بنشر الجمعة at 12:20 قام بنشر الجمعة at 12:20 وعليكم السلام ورحمة الله وبركاته .. رغم عدم قناعتي بهيكلة وتصميم الملف ، اعتقد أن ذهابك إلى جدول منفصل لعمليات البيع وجدول آخر منفصل لعميات الشراء ، أو جدول الحركات الموحد العام وهو جدول يعرض تفاصيل لجميع حركات المخزن ( بيع ، شراء ، مرتجع ، تحويل من إلى ... إلخ ) ، ولكن بحقول موحدة ( TransID , DocType , DocID , Item , Qty , Price , Discount ) ؛ حيث DocType كمثال ، سيحدد هل الحركة هي حركة بيع أم شراء ، وبذلك لا تحتاج لتكرار حقول sale_qty و buy_qty .... ولكن !! في فكرة التنفيذ على الزر ، استعمل الحدث التالي :- Private Sub Command160_Click() On Error GoTo ErrHandler If Me.NewRecord Or IsNull(Me.sale_id) Then MsgBox "يرجى تحديد فاتورة بيع أولاً", vbExclamation + vbMsgBoxRight, "" Exit Sub End If If Me.Dirty Then Me.Dirty = False Dim db As DAO.Database Dim rsBuy As DAO.Recordset Dim rsSaleDet As DAO.Recordset Dim rsBuyDet As DAO.Recordset Dim newBuyID As Long Set db = CurrentDb Set rsBuy = db.OpenRecordset("buy", dbOpenDynaset) rsBuy.AddNew rsBuy!reg_date = Me.reg_date rsBuy!code = Me.code rsBuy!explain = Me.explain rsBuy!discount = Me.discount rsBuy!note = Me.note rsBuy!saving = Me.saving newBuyID = rsBuy!buy_id rsBuy.Update rsBuy.Close Set rsBuy = Nothing Set rsSaleDet = db.OpenRecordset("SELECT * FROM details WHERE sale_id = " & Me.sale_id, dbOpenSnapshot) Set rsBuyDet = db.OpenRecordset("details", dbOpenDynaset) Do While Not rsSaleDet.EOF rsBuyDet.AddNew rsBuyDet!buy_id = newBuyID rsBuyDet!item = rsSaleDet!item rsBuyDet!buy_qty = rsSaleDet!sale_qty rsBuyDet!buy_price = rsSaleDet!sale_price rsBuyDet!buy_discount_percent = rsSaleDet!sale_discount_percent rsBuyDet!note = rsSaleDet!note rsBuyDet!m = rsSaleDet!m rsBuyDet!check = rsSaleDet!check rsBuyDet!serial = rsSaleDet!serial rsBuyDet.Update rsSaleDet.MoveNext Loop rsSaleDet.Close: Set rsSaleDet = Nothing rsBuyDet.Close: Set rsBuyDet = Nothing DoCmd.OpenForm "buy", acNormal, , "buy_id = " & newBuyID Exit Sub ErrHandler: MsgBox "حدث خطأ أثناء نسخ الفاتورة الحالية", vbCritical + vbMsgBoxRight, "" End Sub تفضل الملف المرفق :- yasser_10.zip 1 1
husseinharby قام بنشر منذ 6 ساعات الكاتب قام بنشر منذ 6 ساعات السلام عليكم استاذ @Foksh اولا شكرا علي تعبك واهتمامك طلب اخر .. هل يمكن تنفيذ ما سبق باستخدام استعلام الحاق ؟
Foksh قام بنشر منذ 44 دقائق قام بنشر منذ 44 دقائق 5 ساعات مضت, husseinharby said: هل يمكن تنفيذ ما سبق باستخدام استعلام الحاق ؟ نعم أخي الكريم .. يمكن تنفيذ الجزء الأكبر من هذا الحدث باستخدام استعلامات إلحاق ، وأعتقد أنه سيكون الحل الأسرع والأنظف من المرور على السجلات باستخدام Recordset .. لكن توجد نقطة مهمة جداً جداً في حالتك الحالية :- هنا لديك عمليتان منفصلتان :- إنشاء سجل جديد في جدول buy وذلك للحصول على buy_id جديد نسخ تفاصيل الفاتورة من جدول details وربطها بـ buy_id الجديد الذي تم انشاؤه لذلك يمكن تنفيذ العملية بثلاث خطوات. إولاً إنشاء سجل فاتورة جديدة ، ثم الحصول على رقم فاتورة الشراء الجديدة (buy_id) ، وأخيراً إلحاق تفاصيل فاتورة البيع إلى تفاصيل فاتورة الشراء الجديدة . ولكم من خلال الكود ستكون العملية أسهل مرة واحدة . 1
الردود الموصى بها
انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد
يجب ان تكون عضوا لدينا لتتمكن من التعليق
انشئ حساب جديد
سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .
سجل حساب جديدتسجيل دخول
هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.
سجل دخولك الان