الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

طرح قيمة من نموذج فرعي

مغلقمُجاب
بدأه التميمي2007 في 17 يناير 2014 · 16 رد · 696 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اريد طرح قيمة من النموذج الى النموذج الفرعي حسب نوع القياس

مثلا محمد سالم لديه كمية صرف 2 والقياس الذي يحتاجة M  يتم طرح  2 من حقل M في النموذج الفرعي

133.12345.rar

#2

تفضل اخي :)

 

وبسبب انك لم تعطنا معلومات عن كيفية استقطاع الكمية من الجدول 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

post-273849-0-73258000-1389984420_thumb.

 

وهكذا شكل الجدول بعد استقطاع الكمية من الجدول:

post-273849-0-48505800-1389984447_thumb.

 

 

جعفر

 

133.2.12345.mdb.zip

#3

كل الشكر على التجاوب السريع

ولكن هل يمكن ان يتم الطرح دون تسجيل العملية في جدول table1

#4
التميمي2007 كتب:

ولكن هل يمكن ان يتم الطرح دون تسجيل العملية في جدول table1

 

بما ان الكميات الموجودة تنجمع ، فلابد من ان هذه الكمية تنطرح/تستقطع ،

واذا ما اردت ان تعمل سجل جديد لكل عملية ، ففي هذه الحالة لازم نطرح هذه الكمية من كميات احد الحقول الثلاثة الموجودة!!

 

شاور نفسك وخبرني نتيجة المشاورة :)

 

جعفر

#5

سبب طلب الغاء سجل جديد في جدول table  ان اريد فقط ادخال دفعات جديدة لكل قياس مع ادخال تاريخ ادخال الدفعة حتى لايتشتت مدخل البيانات بكثرة السجلات

#6

لازم ادخال الكمية في الجدول بطريقة او اخرى :(

 

طيب عندي اقتراح:

ايش رايك ان السجل رقم 1 في جدول Table1 يكون للكميات المطروحة فقط ، وبهذه الطريقة المواد المطروحة ما تكون مبعثرة في عدة سجلات في الجدول!!

او اذا تريد ، تعمل جدول خاص للمواد المطروحة فقط ، لك هذا بيعمل لك مشكلة في حساباتك واستعلاماتك و....

 

جعفر

#7

انا محتار

اهم شيء ان الجدول table1 يعرض فقط الدفعات التي تسجل يدويا دون تسجيل عمليات الطرح

#8

مثل ما قلت لك سابقاً :)

 

شاور نفسك وخبرني نتيجة المشاورة  :)

 

انا مجرد اداة ، فانت اطبخ وخبرني وين العشاء :)

 

جعفر

#9

لقد اخترت ان يتم طرح القيمة دون تسجيل قيمة الطرح بجدول table1 فهل هذا ممكن

#10

نعم ممكن ، بحيث نعمل جدول خاص بالمواد المطروحة ، وفي سجل واحد فقط مجموع فيه المواد حسب L، وM، وXL ،

والعملية بالنسبة لي سهلة ، بتغيير شي بسيط في معادلات المجاميع ،

 

ولكن:

ستواجه العديد من المشاكل في الوقت اللي تريد تعرف المجاميع في نموذج او استعلام او تقرير ، لانك لازم تحصل على المعلومات من جدولين ، جدول فيه المواد الداخله ، وجدول آخر فيه المواد الخارجة :(

 

جعفر

#11

نجرب ان نطرح دون تسجيل في جدول table1 بحيث يتم فقط ادخال بيانات الدفعات يدويا  دون تشتيت مدخل البيانات بكثرة السجلات

#12
التميمي2007 كتب:

دون تشتيت مدخل البيانات بكثرة السجلات

 

سجل واحد فقط لجميع المواد المطروحة ، وليس سجل لكل مادة مطروحة :)

وصدقني سجل واحد ما بيفرق :)

وانا استخدمت اول سجل ، علشان الامور ما تتلخبط :)

 

جرب البرنامج ، واطرح اللي تريد ، ولاحظ Table1 بعد كل عملية طرح :)

 

جعفر

133.2.12345.mdb.zip

#13

ابداع تبارك الرحمن

#14

الحمدلله :)

جعفر

#15

بكرة الصبح أن شاء الله بغير في البرنامج علشان يشتغل احسن :)

جعفر

#16 أفضل إجابة

اخي التميمي

 

اتفقنا على ان نحتفظ بالقيم المطروحة ، في اول سجل من الجدول 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

جعفر

133.2.12345.mdb.zip

1
#17

شكرا جزيلا على التوضيح

الان لدي تساؤل جديد

كيف يتم حذف السجل الاخير من النموذج الفرعي عند الضغط على زر التراجع عن الخطأ بشرط ان يكون تاريخ الوصل في النموذج الفرعي  هو تاريخ اليوم او اكبر من تاريخ اليوم اما اذا كان تاريخ الوصل قبل تاريخ اليوم لا يتم حذفه

هذا الموضوع مغلق.

مواضيع مشابهة