السلام عليكم
اريد طرح قيمة من النموذج الى النموذج الفرعي حسب نوع القياس
مثلا محمد سالم لديه كمية صرف 2 والقياس الذي يحتاجة M يتم طرح 2 من حقل M في النموذج الفرعي
السلام عليكم
اريد طرح قيمة من النموذج الى النموذج الفرعي حسب نوع القياس
مثلا محمد سالم لديه كمية صرف 2 والقياس الذي يحتاجة M يتم طرح 2 من حقل M في النموذج الفرعي
تفضل اخي :)
وبسبب انك لم تعطنا معلومات عن كيفية استقطاع الكمية من الجدول Table1 ، فاضطررت ان اعمل سجل جديد لكل عملية استقطاع :)
1. في الحدث بعد التحديث ، لكل من الحجم والكمية ، عملنا هذا الكود:
Public Function calculate_qty()
If Len(Me.mkas & "") <> 0 And Len(Me.mname & "") <> 0 Then
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("Select * From Table1")
rst.AddNew
rst!dfaa = Now()
If Me.mkas = "L" Then
rst!kmyaL = -1 * Val(Me.mname)
rst!kmyaM = 0
rst!kmyaXL = 0
ElseIf Me.mkas = "M" Then
rst!kmyaM = -1 * Val(Me.mname)
rst!kmyaL = 0
rst!kmyaXL = 0
ElseIf Me.mkas = "XL" Then
rst!kmyaXL = -1 * Val(Me.mname)
rst!kmyaL = 0
rst!kmyaM = 0
End If
rst.Update
Me.Table1_Query_subform.Requery
rst.Close: Set rst = Nothing
End If
End Function
Private Sub mkas_AfterUpdate()
Call calculate_qty
End Sub
Private Sub mname_AfterUpdate()
Call calculate_qty
End Sub
وهكذا شكل الجدول بعد استقطاع الكمية من الجدول:
جعفر
كل الشكر على التجاوب السريع
ولكن هل يمكن ان يتم الطرح دون تسجيل العملية في جدول table1
التميمي2007 كتب:ولكن هل يمكن ان يتم الطرح دون تسجيل العملية في جدول table1
بما ان الكميات الموجودة تنجمع ، فلابد من ان هذه الكمية تنطرح/تستقطع ،
واذا ما اردت ان تعمل سجل جديد لكل عملية ، ففي هذه الحالة لازم نطرح هذه الكمية من كميات احد الحقول الثلاثة الموجودة!!
شاور نفسك وخبرني نتيجة المشاورة :)
جعفر
سبب طلب الغاء سجل جديد في جدول table ان اريد فقط ادخال دفعات جديدة لكل قياس مع ادخال تاريخ ادخال الدفعة حتى لايتشتت مدخل البيانات بكثرة السجلات
لازم ادخال الكمية في الجدول بطريقة او اخرى :(
طيب عندي اقتراح:
ايش رايك ان السجل رقم 1 في جدول Table1 يكون للكميات المطروحة فقط ، وبهذه الطريقة المواد المطروحة ما تكون مبعثرة في عدة سجلات في الجدول!!
او اذا تريد ، تعمل جدول خاص للمواد المطروحة فقط ، لك هذا بيعمل لك مشكلة في حساباتك واستعلاماتك و....
جعفر
انا محتار
اهم شيء ان الجدول table1 يعرض فقط الدفعات التي تسجل يدويا دون تسجيل عمليات الطرح
مثل ما قلت لك سابقاً :)
شاور نفسك وخبرني نتيجة المشاورة :)
انا مجرد اداة ، فانت اطبخ وخبرني وين العشاء :)
جعفر
لقد اخترت ان يتم طرح القيمة دون تسجيل قيمة الطرح بجدول table1 فهل هذا ممكن
نعم ممكن ، بحيث نعمل جدول خاص بالمواد المطروحة ، وفي سجل واحد فقط مجموع فيه المواد حسب L، وM، وXL ،
والعملية بالنسبة لي سهلة ، بتغيير شي بسيط في معادلات المجاميع ،
ولكن:
ستواجه العديد من المشاكل في الوقت اللي تريد تعرف المجاميع في نموذج او استعلام او تقرير ، لانك لازم تحصل على المعلومات من جدولين ، جدول فيه المواد الداخله ، وجدول آخر فيه المواد الخارجة :(
جعفر
نجرب ان نطرح دون تسجيل في جدول table1 بحيث يتم فقط ادخال بيانات الدفعات يدويا دون تشتيت مدخل البيانات بكثرة السجلات
التميمي2007 كتب:دون تشتيت مدخل البيانات بكثرة السجلات
سجل واحد فقط لجميع المواد المطروحة ، وليس سجل لكل مادة مطروحة :)
وصدقني سجل واحد ما بيفرق :)
وانا استخدمت اول سجل ، علشان الامور ما تتلخبط :)
جرب البرنامج ، واطرح اللي تريد ، ولاحظ Table1 بعد كل عملية طرح :)
جعفر
ابداع تبارك الرحمن
الحمدلله :)
جعفر
بكرة الصبح أن شاء الله بغير في البرنامج علشان يشتغل احسن :)
جعفر
اخي التميمي
اتفقنا على ان نحتفظ بالقيم المطروحة ، في اول سجل من الجدول Table1 :)
البرنامج السابق كان يجمع كل قيمة مطروحة ، ولكن اذا اخترت حجم ثم اذا غيرت رايك واخترت حجم آخر او عدد آخر ، فالبرنامج لا يهتم بذلك وانما سيزيد هذه القيم الجديدة كذلك ، مما سيعطينا ارقام خطأ ، اي: لو لم ترتكب خطأ او تغير رايك ، فالبرنامج سيعمل بالطريقة الصحيحة .
ولكن هذا البرنامج الجديد متسامح ، فيسمح لك بالتغيير ، وحسابه في النهاية صح ، والسبب انه لا يعتمد على الارقام المطروحة المخزنه ، وانما يقوم بجمعها من اول وجديد في كل مرة ، وعليه فالنتائج دائما صحيحة :)
وهذا هو الكود الجديد:
Public Function calculate_qty()
'only do the calculations when both the fields are filled in
If Len(Me.mkas & "") <> 0 And Len(Me.mname & "") <> 0 Then
'save the Record, so that the new values can be read from the Table
DoCmd.RunCommand acCmdSaveRecord
'calculate the sums
Sum_L = DSum("[mname]", "Table11", "[mkas]='L'") * -1
Sum_M = DSum("[mname]", "Table11", "[mkas]='M'") * -1
Sum_XL = DSum("[mname]", "Table11", "[mkas]='XL'") * -1
'make the update query
mySQL = "UPDATE Table1 SET dfaa = Now(), "
mySQL = mySQL & "kmyaL = '" & Sum_L & "', "
mySQL = mySQL & "kmyaM = '" & Sum_M & "', "
mySQL = mySQL & "kmyaXL = '" & Sum_XL & "' "
mySQL = mySQL & "WHERE ID=2"
CurrentDb.Execute mySQL
'lets see the results
Me.Table1_Query_subform.Requery
End If
End Function
Private Sub mkas_AfterUpdate()
Call calculate_qty
End Sub
Private Sub mname_AfterUpdate()
Call calculate_qty
End Subجعفر
شكرا جزيلا على التوضيح
الان لدي تساؤل جديد
كيف يتم حذف السجل الاخير من النموذج الفرعي عند الضغط على زر التراجع عن الخطأ بشرط ان يكون تاريخ الوصل في النموذج الفرعي هو تاريخ اليوم او اكبر من تاريخ اليوم اما اذا كان تاريخ الوصل قبل تاريخ اليوم لا يتم حذفه
هذا الموضوع مغلق.