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

متى يحقق هذا الكود للفيجول بيسك الهدف

بدأه GAVAN في 6 سبتمبر 2014 · 26 رد · 969 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم لدي مربعان نص q و q1 في الحدث AfterUpdate وضعنا الكود التالي:

Private Sub q1_AfterUpdate()

Dim a As Double Dim b As Double

Dim m as double

a = Me![q1])

b = Nz(Me![q])

m = a + b

Me![q] = m

End Sub

عند كتابة رقم في خانة q1 مثلا 5 يؤدي الى كتابة الرقم 5 في خانة q , حسب المعادلة ويكون صحيح , ولكن عند تبديل الرقم 5 ب 4 في خانة q1 , يضهر رقم 9 في خانة q , اي يتم الحساب 5و4 , المطلوب كيف لي بتصحيح المعادلة بحيث عند تبديل رقم 5 في q1 يؤدي الى تغيرة في q . وشكرا لكم

تم تعديل هذه المشاركة بواسطة GAVAN في 6 سبتمبر 2014 في 00:25

#2

هذا السطر يجمع الحقلين:

m = a + b

 

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

Me![q] = Me![q1]

 

 

جعفر

#3

مشكور لك سيد جعفر ، وإذا كنت اريد ان يكون me!q = مجموع me!q1 , كيف يكمن كتابته وشكرا لك

#4

حياك الله :)

 

 

GAVAN كتب:

مشكور لك سيد جعفر ، وإذا كنت اريد ان يكون me!q = مجموع me!q1 , كيف يكمن كتابته وشكرا لك

 

نعم ممكن ، الكود اللي انت عرضته في مشاركتك الاولى كان يعمل هذا :)

 

 

واذا طلبك غير ، رجاء توضيحه بمثال او مثالين :)

 

جعفر

1
#5
السلام عليكم 
في الرابط المثال المرفق لانه الحجم 
1mb
 في النموذجين
1-بيانات الاصناف : يوجد حقل الكمية الحالية و التي تسمى 
q
2-فاتورة الشراء  :يوجد حقل الكمية (كمية الشراء ) و التي تسمى 
q1
فعند شراء كمية معينة في فاتورة الشراء مثلا 5 يتم احتسابها في حقل الكمية الحالية و التي تسمى
q1
الى هنا الكل جيد 
المشكلة هي :
عندما اريد ان ابدل او اغير الكمية في حقل كمية الشراء من 5 الى 2 و التي تسمى 
q1
لا يتم التغير في حقل الكمية الحالية و التي تسمى 
q
بل يتم احتساب 5+2 و تكون النتيجة 7 بدل من 2
كيف اكتب الكود الصحيح بحيث يؤدي الى الناتج الصحيح وشكرا   

 

http://www.up-00.com/?v6oS

#6

اخي الفاضل :)

 

القيمة عندما تتبدل في الجدول ، فلا يمكن ان نسترجعها لاحقا :) (إلا اذا عملنا جداول خاصة وعمليات خاصة لهذا) ،

لهذا السبب ، في النموذج الفرعي فرعي_فاتورة_شراء ، لما تغير قيمة الكمية ، يجب ان لا نغير قيمة الكمية_الحالية (يعني إلغي الكود اللي عندك) ،

واعمل الكود التالي في النموذج الفرعي ، والذي سوف نناديه من النموذج الفرعي لاحقا:

Public Sub cal_Qty()

    Set rst = Me.RecordsetClone
    rst.MoveLast: rst.MoveFirst
    
    For i = 1 To rst.RecordCount
    
        rst.Edit
            rst![الكمية_الحالية] = rst![الكمية_الحالية] - rst![الكمية]
        rst.Update
        rst.MoveNext
    Next i
    
End Sub

بالطريقة هذه ، فقيمة الكمية_الحالية لن تتغير من الجدول ، ويمكنك ان ترجع لأي قيمة وتغير فيها كيف تشاء ،

 

النموذج الرئيسي،

الوقت الوحيد الذي سنقوم بعملية الحساب ، هي في الحالة التالية:

يا على حدث زر"حفظ" ، او على زر "اغلاق" او اي زر/حدث آخر ، نضع هذا الكود ، والذي سينادي الكود اعلاه ، ويقوم بالعملية الحسابية:

 

    Call Form_فرعي_فاتورة_شراء.cal_Qty

 

ولكن ، كلما ضغطت على الزر ، فالعملية الحسابية ستحسب الكمية_الحالية الجديدة :(

 

جعفر

246.مثال.accdb.zip

تم تعديل هذه المشاركة بواسطة jjafferr في 6 سبتمبر 2014 في 13:00

1
#7

مشكور جدا اخي الحبيب جعفر 

هل المثال تم التعديل علية من قبلك ؟؟ لانه لا يعطي النتيجة , اي انه عند ادخال كمية في فاتورة الشراء وضغط زر الحفظ لايؤدي الى اضهارها في حقل الكمية الحالية في نموذج بيانات الصنف , وان تم بيع جزء من الكمية في فاتورة البيع فانه لايتم ظهورها فيه وشكرا

#8

نعم اخي الفاضل ، انا استخدمت المثال اللي ارفقته لك علشان اعمل لك الصور التالية (رجاء الضغط على الصورة علشان تشوف الصور المتحركة)

 

في النموذج بيانات الصنف ، الكمية الحالية = 14 ،  للصنف رقم 3 ،

انتقلنا للنموذج فاتورة شراء من مورد ، واخترنا الصنف 3 ، واخترنا الكمية 4 ، ثم غيرناها الى 3 ، وضغطنا على زر الحفظ ،

ولما انتقلنا الى نموذج بيانات الصنف ، صارت الكمية 11 :)

 

post-273849-0-97599200-1410020338_thumb.

 

 

هل هذا المطلوب؟

 

 

جعفر

1
#9

اسف اخي الحبيب جعفر :) على التاخير على الرد  :o 

نعم هو المطلوب :lol:  ولكن !!!!! :o   

المثال المرفق من قبلك لايتم فيه العملية المشروحة :(  :( ,, اكرر هل قمت بالعملية داخل الملف المرفق ;) , ام انا اطبق الكود المشروح من قبلك :mellow: , شكرا لك :wub: 

#10

نعم أخي ، انا قمت باستعمال نفس البرنامج المرفق في مشاركتي رقم 6 اعلاه :)

 

واذا عندك مشكلة ، فجرب البرنامج على كمبيوتر آخر :)

جعفر

#11

اخي الحبيب جعفر السلام عليكم 

لقد جربت المثال على كومبيوتر اخر ولم تضبط ايظا , لذا اضطرت الى الرجوع الى المشاركة رقم 6 للدراسة من جديد حول الكود ولكن لم افهم راجعت المثال 246 , ولم اجد سوى هذا الكود 

 Dim a As Double
 Dim b As Double
 Dim m As Double
 
 'a = Me![q1]
 'b = Nz(Me![q])
 ' m = a + b
 ' Me![q] = m
 
  'Me.q = Me.q - Me.q1

في خانة الكمية في نموذج الفرعي لفاتورة الشراء في حدث " بعد التحديث "

ولم اجد الكود

Public Sub cal_Qty()
 
    Set rst = Me.RecordsetClone
    rst.MoveLast: rst.MoveFirst
    
    For i = 1 To rst.RecordCount
    
        rst.Edit
            rst![الكمية_الحالية] = rst![الكمية_الحالية] - rst![الكمية]
        rst.Update
        rst.MoveNext
    Next i
    
End Sub

ف هل يمكنك اخباري بمكان وضع الكودين , اذا لم اكن قد ازعجتك , وشكرا لوقتك الذي اعطيتني اياه ,, شكرا لك

#12

:)  :)  :)

#13

وعليكم السلام :)

 

GAVAN كتب:

لقد جربت المثال على كومبيوتر اخر ولم تضبط ايظا

 

لوسمحت تكون دقيق في ما هية الشئ الذي لم يضبط!!

يعني البرنامج ما اشتغل ، او الجمع ما اشتغل صح ، او ايش؟

 

جعفر

تم تعديل هذه المشاركة بواسطة jjafferr في 8 سبتمبر 2014 في 17:58

1
#14

نعم سيدي الكريم ، عند الضغط على زر الحفظ ل نموذج فاتورة الشراء لا يتم استدعاء الدالة call Qty وبالتالي الناتج لا يطلع في الكمية الحالية ل نموذج بيانات الأصناف ، حيث يبقى فارغا ، وشكرا لك

#15

وسيدي ساتعبك قليلا ,, لماذا قمنا باظافة هذا الكود 

'Me.q = Me.q - Me.q1
#16

1. سطر الكود الذي يبدأ بـ '   معناه انه امر بعدم قراءة هذه السطر واعتباره ملاحظة ، لهذا السبب ، فالسطر التالي لا يعمل:

'Me.q = Me.q - Me.q1

2. رجاء العمل على نفس قاعدة البيانات اللي ارسلتها لك في مشاركتي رقم 6 اعلاه ، وعلى رقم الصنف 3 (لأني عملت عليه وكان فيه نتيجة) ، وإخباري بالنتيجة لو سمحت.

 

جعفر

1
#17

سيدي الكريم : نعم قمت بتحميل الملف في المشاركة 6 , من جديد :

 عند تكوين فاتورة شراء واعطاء الكمية 5 والضغط على الحفظ ( لقد لاحظت الخطأين ) :

1-العملية تؤدي الى النقص في الكمية الحالية في النموذج بيانات الصنف بنفس المقدار .

2- عند اعادة الرجوع الى نفس الفاتورة وتغير الكمية 5 الى 10 يحدث كارثة .

هل تتفق معي , وشكرا على صبرك من جديد

#18

فهل هنالك تصحيح للمعادلة وشكرا

#19

:)  :)  :)

#20

سيدي العزيز :)

 

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

ولكني وبعد النظر في تفاصيل هذه الجزئية من برنامجك ، اتضح اننا نسير في الطريق الخاطئ ،

فالطريق الصحيح انك لا تغير قيمة الكمية الحالية ، وانما علينا ان نجمع الكميات المباعة من الصنف ونطرحها من الكية الحالية ، ونضع الجواب في حقل منفصل ، فالنسميه الكمية المتبقية ،

والكمية المتبقة هي قيمة لا تحفظ في الجدول ، وانما هي عملية حسابية نستعملها كلما احتجنا الى معرفة الكمية المتبقية.

 

المرفق ما فيه اي من الاكواد السابقة.

رجاء تجربة المرفق وابداء ملاحظاتك لو سمحت :)

 

جعفر

246.مثال.accdb.zip

1
#21

اخي الحبيب : البرنامج معقد جدا , اذا كان لديك الرغبة سنكمل , انا اتعبتك كثيرا لدرجة انني اريد القول ان البرنامج يعمل بالتمام , اسلم واشد على يديك مهما كان , ولكن صدقني المشكلة تظهر كما في الصورة 

 

Eru5lB.png

#22

ولا يهمك :)

عندنا مثل عماني يقول: اكلنا الثور وما باقي إلا الذيل :)

 

شو هي رسالة الخطأ اللي تظهر لك؟ اريد صورة منها.

 

جعفر

تم تعديل هذه المشاركة بواسطة jjafferr في 9 سبتمبر 2014 في 20:06

#23

هل الصورة تظهر عندك سيد جعفر ,,, هل انت من السلطنة , اهلين بالغالي و الله

#24

حياك الله :)

نعم انا من سلطنة عمان - مسقط :)

 

نعم ارى الصورة ، لكن هذه الصورة تأتي بعد نافذة الخطأ في النموذج ، واللي لما تضغط عليها تأتي بك لصفحة الكود اعلاه :)

اريد ان اعرف ما هو الخطأ :)

 

جعفر

#25

يا هلا بالغوالي من مسقط ، الخطأ يا شيخ عندما تقوم بإضافة رقم ٥ للكمية في فاتورة الشراء وتقوم بالضغط على السعر او اي حقل اخر في نفس فاتورة الشراء يظهر هذا الخطأ ، وشكرا ، بالاضافة هل لي بايميلك ، و شكرًا لك

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