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

بديل IIF


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

الاخوة الكرام

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

هل هناك بديل لــ IIF في الاستعلامات حيث اني لدي 10 شروط والاستعلام وهي كالتالي

IIf([G1]<[R1]*.3;K1;IIf([G1]<[T1];"K1";
IIf([G2]<[R2]*.3;K2;IIf([G2]<[T2];"K2";
IIf([G3]<[R3]*.3;K3;IIf([G3]<[T3];"K3";
IIf([G4]<[R4]*.3;K4;IIf([G4]<[T4];"K4";
IIf([G5]<[R5]*.3;K5;IIf([G5]<[T5];"K5";
IIf([G6]<[R6]*.3;K6;IIf([G6]<[T6];"K6";
IIf([G7]<[R7]*.3;K7;IIf([G7]<[T7];"K7";
IIf([G8]<[R8]*.3;K8;IIf([G8]<[T8];"K8";
IIf([G9]<[R9]*.3;K9;IIf([G9]<[T9];"K9";
IIf([G10]<[R10]*.3;K10;IIf([G10]<[T10];"K10";"OK"))))))))))))))))))))

والاستعلام يرقض كتابة باقي الصيغة

فارجو ان يكون لدى الاخوة الكرام حل او بديل عن IIF لاستكمال المعادلة

ولكم وافر الاتحية

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

3 دقائق مضت, jjafferr said:

استعمل وحدة نمطية

استاذنا الفاضل بالنسبة للحقول G1 ; R1 ; K1  ... الخ

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

دمتم بالخيرات

تحياتي

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

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

وتارة ممكن نرسل ID السجل من الاستعلام ، ثم في الوحدة النمطية ننادي السجل بالكامل ، ونحصل منه على هذه البيانات ، هكذا:

public function Add_All(myID)

	dim rst as dao.recordset
	set rst= currentdb.openrecordset ("Select * From myTable Where ID=" & myID)

	do while not rst.eof
هنا ناخذ اسماء الحقول من الجدول 
		if rst!G1 < rst!R1 then

                          
        end if

	loop

    Add_All = myAnswer_back_to_the_query

    rst.close : set rst = nothing
end function

 

جعفر

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

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

A: myFunction([G1],[R1],K1,[T1],[G2],[R2]....)

 

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

public function myFunction(G1,R1,K1,T1,G2,R2....)


جعفر

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

معذرة المثال الاول ناقص حقل T

UP-D3.rar

 

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

تفضل 🙂

 

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

 

هكذا ننادي الوحدة النمطية:

image.png.6a48705de45512d9a059e8d768a72fa7.png

 

وهذه النتيجة:

image.png.f5d6309bbfd2628883d27d3b012734e3.png

 

وهذه الوحدة النمطية:

Public Function Add_All(ID As Long) As String
On Error GoTo err_Add_All

'G1, R1, K1, G2, R2, K2, G3, R3, K3, G4, R4, K4, G5, R5, K5, G6, R6, K6, G7, R7, K7, G8, R8, K8, G9, R9, K9, G10, R10, K10

    Dim rst As dao.Recordset
    Set rst = CurrentDb.OpenRecordset("Select * From tbl1 Where ID=" & ID)
    

        If Nz(rst!G1, 0) < Nz(rst!R1, 0) * 0.3 Then
            Add_All = Nz(rst!K1, 0)
        
        ElseIf Nz(rst!G1, 0) < Nz(rst!T1, 0) Then
            Add_All = "K1"

        ElseIf Nz(rst!G2, 0) < Nz(rst!R2, 0) * 0.3 Then
            Add_All = Nz(rst!K2, 0)
        
        ElseIf Nz(rst!G2, 0) < Nz(rst!T2, 0) Then
            Add_All = "K2"

        ElseIf Nz(rst!G3, 0) < Nz(rst!R3, 0) * 0.3 Then
            Add_All = Nz(rst!K3, 0)
    
        ElseIf Nz(rst!G3, 0) < Nz(rst!T3, 0) Then
            Add_All = "K3"

        ElseIf Nz(rst!G4, 0) < Nz(rst!R4, 0) * 0.3 Then
            Add_All = Nz(rst!K4, 0)
        
        ElseIf Nz(rst!G4, 0) < Nz(rst!T4, 0) Then
            Add_All = "K4"
        
        ElseIf Nz(rst!G5, 0) < Nz(rst!R5, 0) * 0.3 Then
            Add_All = Nz(rst!K5, 0)
        
        ElseIf Nz(rst!G5, 0) < Nz(rst!T5, 0) Then
            Add_All = "K5"
        
        ElseIf Nz(rst!G6, 0) < Nz(rst!R6, 0) * 0.3 Then
            Add_All = Nz(rst!K6, 0)
        
        ElseIf Nz(rst!G6, 0) < Nz(rst!T6, 0) Then
            Add_All = "K6"
        
        ElseIf Nz(rst!G7, 0) < Nz(rst!R7, 0) * 0.3 Then
            Add_All = Nz(rst!K7, 0)
        
        ElseIf Nz(rst!G7, 0) < Nz(rst!T7, 0) Then
            Add_All = "K7"
        
        ElseIf Nz(rst!G8, 0) < Nz(rst!R8, 0) * 0.3 Then
            Add_All = Nz(rst!K8, 0)
        
        ElseIf Nz(rst!G8, 0) < Nz(rst!T8, 0) Then
            Add_All = "K8"
        
        ElseIf Nz(rst!G9, 0) < Nz(rst!R9, 0) * 0.3 Then
            Add_All = Nz(rst!K9, 0)
    
        ElseIf Nz(rst!G9, 0) < Nz(rst!T9, 0) Then
            Add_All = "K9"
        
        ElseIf Nz(rst!G10, 0) < Nz(rst!R10, 0) * 0.3 Then
            Add_All = Nz(rst!K10, 0)
        
        ElseIf Nz(rst!G10, 0) < Nz(rst!T10, 0) Then
            Add_All = "K10"
        
        Else
            Add_All = "OK"
    
        End If



Exit_Add_All:

    rst.Close: Set rst = Nothing
    
    Exit Function
err_Add_All:

    If Err.Number = 3265 Then
        'No field
        Add_All = ""
        Resume Exit_Add_All
    Else
        MsgBox Err.Number & vbCrLf & Err.Description
    End If
    
End Function

 

جعفر

 

1136.D3.accdb.zip

  • Thanks 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