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

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

قام بنشر

السلام عليكم 

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

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

كيف استطيع التحكم في محتويات الفورم عن طريق الدوال في الموديول 

function.rar

قام بنشر (معدل)
10 hours ago, محمد أبوعبدالله said:

وعليكم السلام ورحمة الله وبركاته

استخدم دالة NZ لتفادي الحقول الفارغة بتعويضها بصفر



Me.txt3 = m(Nz(Me.txt1, 0), Nz(Me.txt2, 0))

function.rar 19.34 kB · 1 download

تحياتي

استاذي العزيز تسلم على الرد الجميل لكن الغاية هي اني هل استطيع ان اتحكم في مربع النص عن طريق الدالة الكاتبة في المثال 

مثل دالة اف الشرطية 

SNAG-42052714011900.png

تم تعديل بواسطه نبراس كاظم
قام بنشر
1 hour ago, biskra said:

msgbox "انتبه يوجد حقل أو أكثر فارغ", vbOKOnly
Me.txt3 = m(Nz(Me.txt1, 0), Nz(Me.txt2, 0))

 

اول شي منور اخي العزيز

شوف الصورة ولاحظ المثالث المرفق 

قصدي هل بالامكان ان اعمل هذا المسج او دالة اف الشرطية في الفنكشن وليس في الفورم

قام بنشر

 

2 ساعات مضت, احمد الفلاحجي said:

Function m(x, y As Variant)

اذا لم تكتب نوع المتغير ، فتلقائيا يأخذه الاكسس على انه Variant ، لذا ، مافي داعي تكتب انه Variant 🙂

 

 

وبتوسع لما كتبه اخي احمد :

Function m(x, y) As Double

    If Len(x & "") = 0 Then
    
        MsgBox "Please enter a value for X"
  
    ElseIf Len(y & "") = 0 Then
        
        MsgBox "Please enter a value for Y"
    
    Else
        m = CDbl(x) + CDbl(y)
    End If
    
End Function

 

جعفر

  • Like 2
قام بنشر
45 دقائق مضت, jjafferr said:

وبتوسع لما كتبه اخي احمد :

وما احلى التوسع اخى ومعلمنا العزيز جعفر

نعم صحيح ما ذكرت استاذى العزيز وتعلمت هذا الدرس يوم ذكرها الاخ هاوى ولكن زحمه الراس بتنسينى

جزاك الله خيرا اخى ومعلمى العزيز جعفر

قام بنشر
1 hour ago, jjafferr said:

 

اذا لم تكتب نوع المتغير ، فتلقائيا يأخذه الاكسس على انه Variant ، لذا ، مافي داعي تكتب انه Variant 🙂

 

 

وبتوسع لما كتبه اخي احمد :


Function m(x, y) As Double

    If Len(x & "") = 0 Then
    
        MsgBox "Please enter a value for X"
  
    ElseIf Len(y & "") = 0 Then
        
        MsgBox "Please enter a value for Y"
    
    Else
        m = CDbl(x) + CDbl(y)
    End If
    
End Function

 

جعفر

الدالة شغالة تمام اخي جعفر . بس في شغلة لماذا وضعنا دالة 

cdbl 

وافهم من حضرتك ان التعامل بالفكشن صعب وليس سهل ام انا مخطئ 

قام بنشر
18 ساعات مضت, نبراس كاظم said:

بس في شغلة لماذا وضعنا دالة 

cdbl 

لان المتغير X و Y عبارة عن Variant الشبية للنص String ، بينما انت تريد ان تجمع الرقمين ، فلابد من تحويلهم الى Double او Integer لتتم عملية الجمع بطريقة صحيحة ،

فهنا اخبرنا الكود: اعمل تغيير للمتغير X الى رقم: Convert to Double ، او cDbl 🙂

 

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

وفي حال موضوعك هو:

عند ارسال المعلومة:

    If Len(Me.txt1 & "") = 0 Then
    
        MsgBox "Please enter a value"
        Me.txt1.SetFocus
  
    ElseIf Len(Me.txt2 & "") = 0 Then
    
        MsgBox "Please enter a value"
        Me.txt2.SetFocus
    
    Else
        Me.txt3 = m(Nz(Me.txt1, 0), Nz(Me.txt2, 0))
    End If

.

فتصبح الدالة:

Function m(x As Double, y As Double) As Double

    m = x + y
    
End Function

.

 

ولكن لأنك قلت انك تريد الفحص في الفنكشن ، لهذا السبب شفت محاولات الشباب 🙂 :

في ١١‏/١‏/٢٠٢١ at 00:12, نبراس كاظم said:

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

..

.

.

18 ساعات مضت, نبراس كاظم said:

وافهم من حضرتك ان التعامل بالفكشن صعب وليس سهل ام انا مخطئ

من وين وصلتك هذه المعلومة ، فأنا لم اتكلم عنها لا من قريب ولا من بعيد !!

في الواقع ، لذة البرمجة هي في عمل الدوال والتي بها يتم اختصار العمل وعدم عمل تكرار للكود 🙂

 

جعفر

  • Like 1
  • Thanks 1
قام بنشر
23 minutes ago, jjafferr said:

لان المتغير X و Y عبارة عن Variant الشبية للنص String ، بينما انت تريد ان تجمع الرقمين ، فلابد من تحويلهم الى Double او Integer لتتم عملية الجمع بطريقة صحيحة ،

فهنا اخبرنا الكود: اعمل تغيير للمتغير X الى رقم: Convert to Double ، او cDbl 🙂

 

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

وفي حال موضوعك هو:

عند ارسال المعلومة:


    If Len(Me.txt1 & "") = 0 Then
    
        MsgBox "Please enter a value"
        Me.txt1.SetFocus
  
    ElseIf Len(Me.txt2 & "") = 0 Then
    
        MsgBox "Please enter a value"
        Me.txt2.SetFocus
    
    Else
        Me.txt3 = m(Nz(Me.txt1, 0), Nz(Me.txt2, 0))
    End If

.

فتصبح الدالة:


Function m(x As Double, y As Double) As Double

    m = x + y
    
End Function

.

 

ولكن لأنك قلت انك تريد الفحص في الفنكشن ، لهذا السبب شفت محاولات الشباب 🙂 :

..

.

.

من وين وصلتك هذه المعلومة ، فأنا لم اتكلم عنها لا من قريب ولا من بعيد !!

في الواقع ، لذة البرمجة هي في عمل الدوال والتي بها يتم اختصار العمل وعدم عمل تكرار للكود 🙂

 

جعفر

قصدي لو عملنا المطلوب من النموذج حيكون الناتج بهذه الصيغة 

if isnull(trim(me.txt1.value) then

msgbox"enter number"

endif

يبنما في الفكشن قمنا بخطوه اكثر وهي تعريف المتغير على انه رقم وليس سترنك

قام بنشر
5 دقائق مضت, نبراس كاظم said:

يبنما في الفكشن قمنا بخطوه اكثر وهي تعريف المتغير على انه رقم وليس سترنك

 

خليني احاول اقنعك 🙂

 

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

Me.txt3 = Me.txt1 + Me.txt2

والآن ، ادخل هذه القيم في الحقلين:

txt1 : 1

txt2 : 3.1

 

واخبرني اذا حصلت على النتيجة الصحيحة عند النقر على الزر 🙂

 

جعفر

قام بنشر
43 minutes ago, jjafferr said:

 

خليني احاول اقنعك 🙂

 

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


Me.txt3 = Me.txt1 + Me.txt2

والآن ، ادخل هذه القيم في الحقلين:

txt1 : 1

txt2 : 3.1

 

واخبرني اذا حصلت على النتيجة الصحيحة عند النقر على الزر 🙂

 

جعفر

الناتج يكون 4.1 مع العلم ان القيمة فلوت 

قام بنشر

هل حصلت على هذه القيمة من النموذج؟

 

هذا ما حصلت عليه انا :

image.png.6c4aa98804227484f255b21876f9aab9.png

.

وهذه كانت المعادلة :

image.png.f298cc0e34358ace39c990840fc4342a.png

.

 

الخلاصة:

لأننا في النموذج لم نذكر نوع الحقول ، فأخذها كنص ، وجمعها كنص !!

لهذا السبب يجب ان نخبره نوع الحقل/المتغير علشان نحصل على الاجابة الصحيحة 🙂

 

جعفر

1325.function.accdb.zip

قام بنشر
1 hour ago, jjafferr said:

هل حصلت على هذه القيمة من النموذج؟

 

هذا ما حصلت عليه انا :

image.png.6c4aa98804227484f255b21876f9aab9.png

.

وهذه كانت المعادلة :

image.png.f298cc0e34358ace39c990840fc4342a.png

.

 

الخلاصة:

لأننا في النموذج لم نذكر نوع الحقول ، فأخذها كنص ، وجمعها كنص !!

لهذا السبب يجب ان نخبره نوع الحقل/المتغير علشان نحصل على الاجابة الصحيحة 🙂

 

جعفر

1325.function.accdb.zip 37.32 kB · 1 download

اتعبتك مع اخي العزيز الحين لو كان لدينا اكثر من مربع نص كيف حيمكنني التحكم به عن طريق الفنكشن 

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

SNAG-42052821551400.png

قام بنشر
1 ساعه مضت, نبراس كاظم said:

الناتج يكون 4.1 مع العلم ان القيمة فلوت 

لا زلت انتظر الجواب !!

 

 

36 دقائق مضت, نبراس كاظم said:

لو كان لدينا اكثر من مربع نص

هذا الرابط يفيدك

 

جعفر

قام بنشر

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

قام بنشر

معظم المبرمجين يعتقدون بأن جمع قيم حقلين في نموذج ، سيعطي نتائج صحيحة ، ولكن المثال الذي ارفقته في مشاركتي السابقة اثبت بأن هذا غير صحيح.

فالاكسس يتعامل مع الحقل كتعامله مع Variant ، 

لهذا السبب يجب ان نخبر الاكسس بأن الحقل (سواء نوع الحقل في الجدول عبارة عن رقم ، او عن طريق تنسيق الحقل ونخبره بأنه رقم) ، او قيمة الحقل نغيرها الى رقم (ونستعمل دوال مثل: Val او Int  او cInt او cDbl ، مثل :

Val(X)
Int(X)
cInt(X)
cDbl(X)

.

والموضوع لا يتوقف على النموذج او الكود (سواء في النموذج او التقرير او الوحدة النمطية) ، وانما في الاستعلام والتقرير والماكرو ايضا.

 

جعفر

  • Like 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information