اذهب الي المحتوي
أوفيسنا

المساعدة في دالة IFF


almosafer almasry
إذهب إلى أفضل إجابة Solved by almosafer almasry,

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

نامل من الاخوة المساعدة في حل الدالة 

في حالة  ان حقل الخدمة = ايواء يكون حقل السعر = قيمة مبلغ الشراء

في حالة  ان حقل الخدمة = يومي  يكون حقل السعر = الايجار اليومي * عدد الايام

ولكم التوفيق

بيانات القيد.accdb

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

اتفضل ونصيحة بلاش تسمى الحقول بالعربى


Sub Calc()
    Select Case Nz([الخدمة], "")
        Case "": Me.[السعر] = ""
        Case Is = "ايواء": Me.[السعر] = Me.[مبلغ الشراء]
        Case Is = "يومي": Me.[السعر] = Me.[الايجار] * Me.[عدد الايام]
    End Select
End Sub

Private Sub الخدمة_AfterUpdate()
    Call Calc
End Sub

Private Sub الايجار_AfterUpdate()
    Call Calc
End Sub

Private Sub عدد_الايام_AfterUpdate()
    Call Calc
End Sub

 

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

تفضل اخي الكريم

Private Sub Form_BeforeUpdate(Cancel As Integer)
    Me.السعر = IIf([الخدمة] = "يومي", [مبلغ الشراء], (Nz([عدد الايام]) * Nz([الايجار])))
End Sub

بيانات القيد.accdb

تحياتي

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

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

قولى يا almosafer almasry  هل قدرت تفهم قاعدة iif مع العربى 🤭 كما تفضل اساتذتى الكرام بوضع الحل طبقا للاحرف العربية مع قاعدة iif 

 

انا عن نفسي لا بافهما ولا باعرف اكتبها مع العربى ههههههه

علشان كدع استخدمت Select Case عن نفسى بافضلها فى كل الاحوال مرنه اكثر

والان صار معاك الحلين

,وحل ثالث ايضا اثراء للموضوع استخدام الدالة switch  :wink2: 

    Me.[السعر] = Switch(Me.[الخدمة] = "ايواء", Me.[مبلغ الشراء], Me.[الخدمة] = "يومي", Me.[الايجار] * Me.[عدد الايام])

 

تم تعديل بواسطه ابو جودي
  • Like 1
رابط هذا التعليق
شارك

اتقضل
 

Me.[السعر] = Switch(IsNull(Me.[الخدمة]), 0, Me.[الخدمة] = "ايواء", Me.[مبلغ الشراء], Me.[الخدمة] = "يومي", Me.[الايجار] * Me.[عدد الايام])

 

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

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

    If Len(Me.[الخدمة] & vbNullString) = 0 Then
        Me.[السعر] = 0
    Else
        Me.السعر = IIf([الخدمة] = "ايواء", [مبلغ الشراء], (Nz([عدد الايام]) * Nz([الايجار])))
    End If

تحياتي

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

تفضل اخي الكريم

    If Len(Me.[الخدمة] & vbNullString) = 0 Then
        Me.[السعر] = 0
    Else
        Me.السعر = IIf([الخدمة] = "ايواء", [مبلغ الشراء], IIf([الخدمة] = "يومي", (Nz([عدد الايام]) * Nz([الايجار])), 0))
    End If

 

41.gif.5c9aea140e5f0c2007cad073eec59f30.gif

بيانات القيد.rar

تحياتي

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

المرفق الاول لم يكن به سوا ايواء  , يومى لذا اعتقدت انه غير ذلك سوف تكون قيمة خالية ولذلك اعتذر لضيق افقى فى التصور الصحيح

اليكم الاجابة

Me.[السعر] = Switch(IsNull(Me.[الخدمة]), 0, Me.[الخدمة] = "ايواء", Me.[مبلغ الشراء], Me.[الخدمة] = "يومي", Me.[الايجار] * Me.[عدد الايام], Me.[الخدمة] <> "ايواء" And Me.[الخدمة] <> "يومي", 0)

اذا الكود كبير على سطر واحد وحابب تقسمه على اكثر من سطر 

Me.[السعر] = Switch( _
                        IsNull(Me.[الخدمة]), 0, _
                        Me.[الخدمة] = "ايواء", Me.[مبلغ الشراء], _
                        Me.[الخدمة] = "يومي", Me.[الايجار] * Me.[عدد الايام], _
                        Me.[الخدمة] <> "ايواء" And Me.[الخدمة] <> "يومي", 0 _
                    )

 

واذا اسم الحقل كبير وراح يتكرر كثرا ممكن استخدام الكود الاتى 

    Dim Fld As String: Fld = Nz(Me.[الخدمة])
    Me.[السعر] = Switch(IsNull(Fld), 0, Fld = "ايواء", Me.[مبلغ الشراء], Fld = "يومي", Me.[الايجار] * Me.[عدد الايام], Fld <> "ايواء" And Fld <> "يومي", 0)

 

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

25 دقائق مضت, almosafer almasry said:

جزاك الله الف خير ابو جودي انا اللي ما وضحت التفاصيل كاملة من البداية 

ولك الف شكر

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

على كل حال اهلا بيك وان شاء الله تكون توصلت للنتيجة التى ترغب بها على اكمل وجه

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

انظر فى مصدر بيانات النموذج :yes:

 

 

بيانات القيد.accdb

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

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