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

مشكلة بدالة Count مقترنة بIIF


Amr Ashraf

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

السلام عليكم 

اساتذتى الافاضل ما الخطأ بهذا الكود

=Count(IIf("[text286]>0",0))

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

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

 

دمتم بخير

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

10 دقائق مضت, ابو ياسين المشولي said:

على ما اظن الخطاء في التنصيص

=Count(IIf("[text286]>0";0))

جرب هكذ

;

بدل

,

انا استخدم النسخة الانجليزية اخى الكريم ولذلك عندى , وليس ; شكرا على المتابعة

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

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

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

 

جرب هذا


=Count(IIf([text286]>0,1,0))

 

جعفر

استاذى الفاضل مازالت المشكلة قائمة بيعطى #خطأ 

مرفق قاعدة مصغرة

 

2.rar

تم تعديل بواسطه Amr Ashraf
تغيير مرفق به مشكلة
رابط هذا التعليق
شارك

اخي عمرو:smile:

 

لا يمكن عمل اي متغيرات للامر Count او Sum في ذيل النموذج ، غير اسم الحقل مثل (Count(myField او Count(*)

اما اذا اردنا الحساب بشروط ، فيجب ان نعمله في الكود ،

وعملت هذه الوحدة


Private Sub Coun_Count()


    Dim rst As DAO.Recordset
    Set rst = Me.RecordsetClone
    rst.MoveLast: rst.MoveFirst
    RC = rst.RecordCount
    
    Counter = 0
    For i = 1 To RC
    
        If rst!cons > 0 Then
            Counter = Counter + 1           'Count cons
            'Counter = Counter + rst!cons    'Sum   cons
        End If
        
        rst.MoveNext
    Next i
    
    Me.Coun = Counter
    rst.Close: Set rst = Nothing
    

End Sub

.

وتستطيع مناداتها من اي حدث من النموذج هكذا

    Call Coun_Count

.

مثلا ، في حدث النقر على اسم productcode في الحقل t0 :

Private Sub t0_Click()
Me.T216 = "" & Me.t0.Column(0) & ""
Me.T216.Requery
search_Products = ""
Me.Requery
Me.T3.SetFocus

    Call Coun_Count
End Sub

 

جعفر

824.count.accdb.zip

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

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

تظهر رسالة خطأ 

Item is not found in this Collection

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

تقبل تحياتى :fff:

انظر المرفق

3.rar

1 دقيقه مضت, ابو ياسين المشولي said:

بعد اذن اخي جعفر 

نفس ما تفضل اخي جعفر

باختلاف بسيط

824.count.accdb.zip

جزاك الله خير يا غالى نفس الملاحظة لن تعمل الطريقة على الحقول الغير منضمة فى النموذج انظر المرفق

 

3.rar

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

استخدم هذا الكود

Private Sub Coun_Count()


    Dim rst As DAO.Recordset
    Set rst = Me.RecordsetClone
    rst.MoveLast: rst.MoveFirst
    RC = rst.RecordCount
    
    Counter = 0
    For i = 1 To RC
    
        If Nz(rst!cons, 0) * Nz(Me.T3, 0) > 0 Then
            Counter = Counter + 1           'Count cons
            'Counter = Counter + rst!cons    'Sum   cons
        End If
        
        rst.MoveNext
    Next i
    
    Me.Coun = Counter
    rst.Close: Set rst = Nothing
    

End Sub

Private Sub T3_AfterUpdate()

    Call Coun_Count
End Sub

 

جعفر

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

استاذ @jjafferr بعد التجربة على القاعدة الاصلية حدث معى خطأ لا اعرف سببه حيث ان عدد السجلات خاطئ ليس بالعدد الفعلى الذى ينطبق عليه الشرط لو تكرمت القى نظرة على المرفق

 

5.rar

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

تفضل:smile:

 

لما شفت انك مستخدم الامر Dlookup في النموذج ونفسه في الكود ، يعني انك تطلب بيانات من الجدول 8 مرات * 2 = 16 مرة ، نظرت فيه ، 

824.Clipboard01.jpg.1834d312d241e3c167ba03d2907cd255.jpg

.

فجمعت بين الاستعلام مصدر بيانات النموذج ، والاستعلام QryRawBlnc اللى تحتاج منه نتيجة حقل Balance ، وربطت الجدولين بالحقل code

824.Clipboard02.jpg.f1dd776f7066b2fe4411dbd93a4d1523.jpg

.

عليه ، اصبح هذا الاستعلام الجديد مصدر بيانات النموذج

824.Clipboard03.jpg.fa8141e2ff1ad0925fcf4a83e0c6d91e.jpg

.

وقيمة الحقل Balance اصبحت جاهزة

824.Clipboard04.jpg.040a5bcd257cdf66088a113b7213c179.jpg

.

وعليه تم تعديل الكود ليشمل هذه التغييرات

Private Sub Coun_Count()


    Dim rst As DAO.Recordset
    Set rst = Me.RecordsetClone
    rst.MoveLast: rst.MoveFirst
    RC = rst.RecordCount
    
    Counter = 0
    For i = 1 To RC
 '''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Dim con As Long
      con = Nz(rst!cons, 0) * Nz(Me.T3, 0)
      Debug.Print "con= " & con & " >> " & "Balance= " & rst!Balance

         'If con > Bal Then
         If con > rst!Balance Then
            Counter = Counter + 1           'Count cons
            'Counter = Counter + rst!cons    'Sum   cons
         End If
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        rst.MoveNext
    Next i
    
    Me.Coun = Counter
    rst.Close: Set rst = Nothing
    

End Sub

.

ولكن خلينا نشوف الحساب والمقارنة اللي يشوفها الكود ،

وبسبب استعمالك Long للمتغير con ، ترى قيمة معادلتك بدون كسور عشرية (Long معناه Integer طويل ، يعني رقم كامل بدون منازل عشرية) ،

ولما غيرته الى Double ، اعطى القيمة حسب الظاهر في النموذج

Dim con as Long

con= 1 >> Balance= 100000
con= 4 >> Balance= 400000
con= 1 >> Balance= 100000
con= 0 >> Balance= 0.005
con= 0 >> Balance= 4
con= 2 >> Balance= 200000
con= 3 >> Balance= 0
con= 2 >> Balance= 200000
--------------------------------

Dim con as Double

con= 1 >> Balance= 100000
con= 4 >> Balance= 400000
con= 1 >> Balance= 100000
con= 0.00004 >> Balance= 0.005
con= 0.00004 >> Balance= 4
con= 2 >> Balance= 200000
con= 3 >> Balance= 0
con= 2 >> Balance= 200000

 

جعفر

824.3.count.accdb.zip

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

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

تفضل:smile:

 

لما شفت انك مستخدم الامر Dlookup في النموذج ونفسه في الكود ، يعني انك تطلب بيانات من الجدول 8 مرات * 2 = 16 مرة ، نظرت فيه ، 

 بيانات النموذج ، والاستعلام QryRawBlnc اللى تحتاج منه نتيجة حقل Balance ، وربطت الجدولين بالحقل code

 

والله يا استاذى الفاضل احب جدا اتناقش معك فى المشاكل بحس انى اتعلم كتير :wavetowel: جزاك الله خير وزادك علما ... ان شاء الله بجرب واشوف النتيجة تقبل فائق احترامى :fff:

تمام النتيجة استاذ جعفر وبالفعل غيرت نوع المتغير لدوبل مع العلم كنت عامله دوبل فى الاول بس جربت كتير :wavetowel: وبالنسبة لموضوع 

Debug.print

اول مرة اصادف عمله وبحثت عنه فى منتدى اجنبى واستفدت جدا من الطريقة جزاك الله خير :biggrin:

 

 

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

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