اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

انشاء معادله من خلال حقل فى جدول


الردود الموصى بها

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

عند الضغط علي الزر يعطي الناتج في المربع النصي

المشكله
لو  وضعت كود الزر نص المعادله مباشره يعطي ناتج رقم  

لو وضعت كود استدعاء نص المعادله من الجدول  لا يعطى في المربع النصي ناتج

 مع العلم ان حقل المعادله متغير وليس ثابت 

Cal error.accdb

رابط هذا التعليق
شارك

الصح ان الاكواد تكون داخل المحرر

ويتم التحكم في الكود بناء على متغير 

وضح فكرتك وما تريد الوصول اليه .. ستجد الحل المناسب ان شاء الله

 

  • Like 1
رابط هذا التعليق
شارك

11 دقائق مضت, ابوخليل said:

الصح ان الاكواد تكون داخل المحرر

ويتم التحكم في الكود بناء على متغير 

وضح فكرتك وما تريد الوصول اليه .. ستجد الحل المناسب ان شاء الله

 

محتاج المستخدم النهائى يتحكم فى انه يعمل اي معادله لاى اختبار كما يشى بدون الدخول منى فى محرر الاكواد 

مثال لدينا 3 اختبارات 
والمعادله المطلوبه هتكون الاختبار الاول / الاختبار الثاني = الاختبار الثالث 
طبعا النتائج ارقام 

 

رابط هذا التعليق
شارك

بدلا من كتب المعادلة في الجدول

اعمل في الجدول عمود بـــــ المعادلة1 / المعادلة2 / المعادلة3 .. الخ ..

وعمود بجانبه رقمي يمثل معرف

في محرر الفيجوال اعمل فنكشن :

اذا قيمة الحقل الفلاني في الجدول الفلاني = 1  نفذ هذا السطر

واذا القيمة = 2 نفذ السطر الآخر هذا

وهكذا ... لو تعمل 100 سطر

اتمنى شرحي واضح ومفهوم

 

  • Like 1
رابط هذا التعليق
شارك

في 3‏/10‏/2024 at 18:28, ابوخليل said:

بدلا من كتب المعادلة في الجدول

اعمل في الجدول عمود بـــــ المعادلة1 / المعادلة2 / المعادلة3 .. الخ ..

وعمود بجانبه رقمي يمثل معرف

في محرر الفيجوال اعمل فنكشن :

اذا قيمة الحقل الفلاني في الجدول الفلاني = 1  نفذ هذا السطر

واذا القيمة = 2 نفذ السطر الآخر هذا

وهكذا ... لو تعمل 100 سطر

اتمنى شرحي واضح ومفهوم

 

ما هى الاختبارات غير موحده او ثبته ممكن يحذف او يضيف اى اختبار 
هنتعامل كده ازاى 
استاذ
@ابوخليل

رابط هذا التعليق
شارك

أخي الكريم مؤيداً لما تفضل به معلمينا ، و وجهة نظر أخرى ..

فإذا كانت القيمة المطلوبة هي نتيجة قسمة حقلين مختلفين استناداً إلى شروط معينة ، يمكننا تعديل كودك بحيث يستخدم دالة DLookup للحصول على القيمتين ثم يقسمهما مباشرةً ، ومن ثم يقوم بتقريب الناتج وحفظه في الحقل المطلوب.

 

جرب الكود التالي :-

Private Sub Command7_Click()
    Dim value1 As Variant
    Dim value2 As Variant
    Dim result As Variant
    value1 = DLookup("result", "Table1", "[code] = 33")
    value2 = DLookup("result", "Table1", "[code] = 36")
    If Not IsNull(value1) And Not IsNull(value2) And value2 <> 0 Then
        result = Round(value1 / value2, 3)
        Me.C = result
    Else
        MsgBox "قيم غير صحيحة"
    End If
End Sub

جرب وأخبرنا بالنتيجة ..

رابط هذا التعليق
شارك

13 دقائق مضت, Foksh said:

أخي الكريم مؤيداً لما تفضل به معلمينا ، و وجهة نظر أخرى ..

فإذا كانت القيمة المطلوبة هي نتيجة قسمة حقلين مختلفين استناداً إلى شروط معينة ، يمكننا تعديل كودك بحيث يستخدم دالة DLookup للحصول على القيمتين ثم يقسمهما مباشرةً ، ومن ثم يقوم بتقريب الناتج وحفظه في الحقل المطلوب.

 

جرب الكود التالي :-

Private Sub Command7_Click()
    Dim value1 As Variant
    Dim value2 As Variant
    Dim result As Variant
    value1 = DLookup("result", "Table1", "[code] = 33")
    value2 = DLookup("result", "Table1", "[code] = 36")
    If Not IsNull(value1) And Not IsNull(value2) And value2 <> 0 Then
        result = Round(value1 / value2, 3)
        Me.C = result
    Else
        MsgBox "قيم غير صحيحة"
    End If
End Sub

جرب وأخبرنا بالنتيجة ..

اشكرك على وقتك 
جزاك الله خيرا 
من فضلك اطلع على الملف التالى
  

Cal error.accdb

رابط هذا التعليق
شارك

9 ساعات مضت, UserUser2 said:

حضرتك اطلعت على المثال ؟

نعم، وعليه كتبت ملاحظاتي.

 

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

image.png.29dc8452a067d8738385ffe38f4d1b9c.png

بمعنى انك تريد ان يظهر لك في Table2 هذه النتائج ؟

  • Like 1
رابط هذا التعليق
شارك

5 ساعات مضت, jjafferr said:

نعم، وعليه كتبت ملاحظاتي.

 

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

image.png.29dc8452a067d8738385ffe38f4d1b9c.png

بمعنى انك تريد ان يظهر لك في Table2 هذه النتائج ؟

اشكرك على تعبك استاذنا الفاضل 
المطلوب العكس 
المعادله هتتكتب فى جدول Table2 والنتيجه هتظهر فى جدول Table1 فى حقل ال result 
مثلا لو كتابنا فى المعادله ان الtest المسمى ب Creat النتيجه الخاصه به هتكون ناتج قسمه نتيجه ال urea المسجله فى حقل result / 5
وعند الضغط على cal  فى النموذج يظهر الناتج 
الارقام المكتوبه فى جدول Table1 افتراضيه 

تم تعديل بواسطه UserUser2
رابط هذا التعليق
شارك

طيب من واقع مرفع حضرتك الاخير يا استاذ @UserUser2 

ممكن نمشى خطوة خطوة

اولا لما نفتح النموذج حضرتك عاوز تكتب ايه فى مربع النص ؟

وطبعا بناء على ما سوف يتم كتابته فى مربع النص نبتدى نفكر فى الكود على زر الامر 

خلينا بس نمشى خطوة تلو الاخرى لان لحد دلوقتى محدش قادر يفهم حضرتك عاوز تعمل ايه

رابط هذا التعليق
شارك

1 ساعه مضت, ابو جودي said:

طيب من واقع مرفع حضرتك الاخير يا استاذ @UserUser2 

ممكن نمشى خطوة خطوة

اولا لما نفتح النموذج حضرتك عاوز تكتب ايه فى مربع النص ؟

وطبعا بناء على ما سوف يتم كتابته فى مربع النص نبتدى نفكر فى الكود على زر الامر 

خلينا بس نمشى خطوة تلو الاخرى لان لحد دلوقتى محدش قادر يفهم حضرتك عاوز تعمل ايه

يظهر نتيجه المعادله

  • Confused 1
رابط هذا التعليق
شارك

هل هذه خطوات العمل:

1- يختار المستخدم احد قيم الحقل test في الجدول Table2 ، وليكن مثلا ASO ،

2- المستخدم يكتب المعادلة التالية في السجل اعلاه:

[Bili]/2

3- في حقل result في الجدول Table1 ، تريد ان تظهر نتيجة المعادلة اعلاه ؟

 

هذا كله سهل ،

السؤال هو ، في الخطوة 2 اعلاه ، من اين سيأتي البرنامج بقيمة [Bili] ؟

رابط هذا التعليق
شارك

انا اللي فاهم على صاحب الموضوع هو يريد تنفيذ (تشغيل) كود مكتوب في الجدول 

لهذا وجهته ان هذه الطريقة ستسبب له لاحقا مشاكل برمجية .. وايضا فيها محاذير أمنية . 

على كل حال انت صاحب الشان جرب هذا

  Dim x As String
  x = DLookup("cal", "test_tbl")
  Me.C = Round(Eval(x), 3)

 

Cal error2.rar

  • Like 1
  • Thanks 1
رابط هذا التعليق
شارك

انا حاولت اكثر من ساعة احاول افهم هو عاوز ايه ومقدرتش افهم والله

على العمود طبعا انا اتفق تماما مع رأى استاذى الجليل و ومعلمى القدير و والدى الحبيب الاستاذ @ابوخليل :fff:

14 دقائق مضت, ابوخليل said:

هذه الطريقة ستسبب له لاحقا مشاكل برمجية .. وايضا فيها محاذير أمنية

ولأنه لم نفهم الية العمل او فكرة صاحب المسألة 

هذه فكرتى 

وظيفة ثغنونه وبنت حلال تعمل كل ده

Function GetDLookupResult(code1 As Long, code2 As Long) As Double
    Dim result1 As Variant
    Dim result2 As Variant
    
    ' Retrieve the value from Table1 based on the passed values
    result1 = DLookup("result", "Table1", "[code] = " & code1)
    result2 = DLookup("result", "Table1", "[code] = " & code2)
    
    ' Check if the values are not null to avoid errors
    If IsNull(result1) Or IsNull(result2) Then
        GetDLookupResult = 0 ' Or return a blank value or an error message
        Exit Function
    End If
    
    ' Calculate the final result
    GetDLookupResult = result1 / result2
End Function

مرر القيم التى تريد اليها بالشكل التالى من خلال زر الامر 

    Dim finalResult As Double
    finalResult = GetDLookupResult(33, 36)
    Me.C = finalResult

 

رابط هذا التعليق
شارك

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

SELECT Table1.code, Table1.test, Table1.result, Table2.Cal, Nz([result], 0)/Nz([Cal], 1) AS FinalCalc
FROM Table1 INNER JOIN Table2 ON Table1.code = Table2.code;


وما اخدت بالى من موضوع التقريب لو اردنا استخدام التقريب تكون جملة الاستعلام بالشكل التالى 
 

SELECT 
    Table1.code, 
    Table1.test, 
    Table1.result, 
    Table2.Cal, 
    IIf(Nz([result], 0) <> 0 And Nz([Cal], 1) <> 0, Round(Nz([result], 0) / Nz([Cal], 1), 3), Nz([result], 0) / Nz([Cal], 1)) AS FinalCalc
FROM 
    Table1 
INNER JOIN 
    Table2 ON Table1.code = Table2.code;



وهذا هو المرفق انظر الى الاستعلام مباشرة وغير القيم فى الحقل Cal  تظهر لك النتيجة المرجوة مباشرة فى الحقل FinalCalc :wink2:

دا اذا كنت قدرت افهم انت عاوز ايه :biggrin2:

Cal error.accdb

  • Like 1
رابط هذا التعليق
شارك

منذ ساعه, jjafferr said:

لسؤال هو ، في الخطوة 2 اعلاه ، من اين سيأتي البرنامج بقيمة [Bili] ؟

من جدول Table1  هتكون مدخله مسبقا

 

جزاك الله خيرا 
استاذ محمد @ابو جودي
وشاكر لتعبك ومجهودك ووقتك 

رابط هذا التعليق
شارك

منذ ساعه, ابوخليل said:

انا اللي فاهم على صاحب الموضوع هو يريد تنفيذ (تشغيل) كود مكتوب في الجدول 

لهذا وجهته ان هذه الطريقة ستسبب له لاحقا مشاكل برمجية .. وايضا فيها محاذير أمنية . 

على كل حال انت صاحب الشان جرب هذا

  Dim x As String
  x = DLookup("cal", "test_tbl")
  Me.C = Round(Eval(x), 3)

 

Cal error2.rar 28.21 kB · 2 downloads

جزاك الله خيرا 
استاذنا @ابوخليل
وشاكر لتعبك ومجهودك ووقتك 

منذ ساعه, jjafferr said:

هل هذه خطوات العمل:

1- يختار المستخدم احد قيم الحقل test في الجدول Table2 ، وليكن مثلا ASO ،

2- المستخدم يكتب المعادلة التالية في السجل اعلاه:

[Bili]/2

3- في حقل result في الجدول Table1 ، تريد ان تظهر نتيجة المعادلة اعلاه ؟

 

هذا كله سهل ،

السؤال هو ، في الخطوة 2 اعلاه ، من اين سيأتي البرنامج بقيمة [Bili] ؟

من جدول Table1  هتكون مدخله مسبقا
جزاك الله خيرا استاذنا @jjafferr

فى انتظار حضرتك 

رابط هذا التعليق
شارك

19 دقائق مضت, UserUser2 said:

من جدول Table1  هتكون مدخله مسبقا

 

جزاك الله خيرا 
استاذ محمد @ابو جودي
وشاكر لتعبك ومجهودك ووقتك

 

هل هذه خطوات العمل:

1- يختار المستخدم احد قيم الحقل test في الجدول Table2 ، وليكن مثلا ASO ،

2- المستخدم يكتب المعادلة التالية في السجل اعلاه:

[Bili]/2

3- البرنامج يأخذ قيمة السجل [Bili] من الحقل [result] في الجدول Table1 ، ويضعها في المعادلة اعلاه ،

4- ونتيجة المعادلة يضعها في سجل [ASO] من الحقل [result] في الجدول Table1 ، يعني قيمة [result] لهذا السجل راح تتغير قيمتها حسب نتيجة المعادلة اعلاه ؟

 

هل هذا صحيح ؟

رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information