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

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


haniameen

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

السلام عليكم اخواني 

لدي تقريرين لحساب اجماليات بالدالة 

dcount

وهما صورة طبق الأصل من بعضهما بس الفرق بينهما أن

تقرير1 يحسب من استعلام 1

وتقرير 2 يحسب عند التحميل من دالة 

dcount

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

vba 

اسرع من تقرير 1 المحسوب عن طريق استعلام

المطلوب : 

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

vba

حيث أنكم ستلاحظون كمية معادلات كثيرة ومرهقة عند استعمال كود

vba

اعلم أن الاستعلام يفي بالغرض ولكن سرعة الأداء في التقرير الثاني وخاصة عند عمل احصائيات لاعداد كبيرة جعلتني أتمنى ايجاد طريقة لتقليص المعادلات لأقصى عدد ممكن    

sheet_hani.mdb

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

الف شكر اخي احمد

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

انا بسال هل يمكن التعامل مع كود ال

VBA 

عشان انا معاي احصائيات كتير بناء على شروط متعددة 

ونفسي اطبقها بكود 

VBA

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

انسخ و الصف الكود في حدث لأي ازرار

مرفق التعديل

On Error Resume Next
DoCmd.SetWarnings False
DoCmd.RunSQL "SELECT sheet.dept_code, sheet.dept_name, " _
& " Val(Nz(DCount('*','sheet',' dept_code= ' & [dept_code] & ' and c_moslem = 1'),0)) AS مسلم, " _
& " Val(Nz(DCount('*','sheet',' dept_code= ' & [dept_code] & ' and c_moslem = 2'),0)) AS مسيحي, " _
& " Val(Nz(DCount('*','sheet',' dept_code= ' & [dept_code] & ' and c_male = 1'),0)) AS ذكر, " _
& " Val(Nz(DCount('*','sheet',' dept_code= ' & [dept_code] & ' and c_male = 2'),0)) AS انثى, " _
& " Val(Nz(DCount('*','sheet',' dept_code= ' & [dept_code] & ' '),0)) AS جملة " _
& " INTO sheet1 FROM sheet GROUP BY sheet.dept_code, sheet.dept_name;"
DoCmd.SetWarnings True
MsgBox "تم جمع البيانات بنجاح" & vbNewLine & "New Table Name" & " : " & " sheet1 ", vbInformation + vbMsgBoxRight, "تأكيد"

 

sheet_hani.mdb

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

4 hours ago, د.كاف يار said:

انسخ و الصف الكود في حدث لأي ازرار

مرفق التعديل


On Error Resume Next
DoCmd.SetWarnings False
DoCmd.RunSQL "SELECT sheet.dept_code, sheet.dept_name, " _
& " Val(Nz(DCount('*','sheet',' dept_code= ' & [dept_code] & ' and c_moslem = 1'),0)) AS مسلم, " _
& " Val(Nz(DCount('*','sheet',' dept_code= ' & [dept_code] & ' and c_moslem = 2'),0)) AS مسيحي, " _
& " Val(Nz(DCount('*','sheet',' dept_code= ' & [dept_code] & ' and c_male = 1'),0)) AS ذكر, " _
& " Val(Nz(DCount('*','sheet',' dept_code= ' & [dept_code] & ' and c_male = 2'),0)) AS انثى, " _
& " Val(Nz(DCount('*','sheet',' dept_code= ' & [dept_code] & ' '),0)) AS جملة " _
& " INTO sheet1 FROM sheet GROUP BY sheet.dept_code, sheet.dept_name;"
DoCmd.SetWarnings True
MsgBox "تم جمع البيانات بنجاح" & vbNewLine & "New Table Name" & " : " & " sheet1 ", vbInformation + vbMsgBoxRight, "تأكيد"

 

sheet_hani.mdb 1.79 MB · 2 downloads

جاري التجريب 

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

اتفضل استاذ @haniameen

تم انشاء موديول كالتالى

Public Function GetCountKind(strCode As Integer, strMale As Integer) As Integer
'لعدد الذكور والاناث
GetCountKind = DCount("*", "sheet", "[dept_code] = " & strCode & " and [c_male]=" & strMale)
End Function
Public Function GetCountReligion(strCode As Integer, strReligion As Integer) As Integer
'لعدد المسلمين والمسيحين
GetCountReligion = DCount("*", "sheet", "[dept_code] = " & strCode & " and [c_moslem]=" & strReligion)
End Function

Public Function GetCounTotal(strCode As Integer) As Integer
'للاجمالى
GetCounTotal = DCount("*", "sheet", "[dept_code] = " & strCode)
End Function

وتم استدعائه بالاستعلام

شوف الاستعلام qryCount والتقرير rpt_qryCount

count.png.1c51eca6074be37b41c92152dd0e5184.png

بالتوفيق

sheet_hani_1.mdb

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

On 3/12/2021 at 4:43 PM, احمد الفلاحجي said:

اتفضل استاذ @haniameen

تم انشاء موديول كالتالى




Public Function GetCountKind(strCode As Integer, strMale As Integer) As Integer
'لعدد الذكور والاناث
GetCountKind = DCount("*", "sheet", "[dept_code] = " & strCode & " and [c_male]=" & strMale)
End Function
Public Function GetCountReligion(strCode As Integer, strReligion As Integer) As Integer
'لعدد المسلمين والمسيحين
GetCountReligion = DCount("*", "sheet", "[dept_code] = " & strCode & " and [c_moslem]=" & strReligion)
End Function

Public Function GetCounTotal(strCode As Integer) As Integer
'للاجمالى
GetCounTotal = DCount("*", "sheet", "[dept_code] = " & strCode)
End Function

وتم استدعائه بالاستعلام

شوف الاستعلام qryCount والتقرير rpt_qryCount

count.png.1c51eca6074be37b41c92152dd0e5184.png

بالتوفيق

sheet_hani_1.mdb 2 MB · 5 downloads

ربنا يبارك فيك اخي الفلاحي 

الصراحة حاجة فوق الخيال انت مثال لهذا الصرح العظيم 

وشاكر جدا جدا جدا لمجهودك

 وليا سؤالين

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

c_natega

حيث  ناجح 

=1

فكيف اعد مثلا المسلم كما بالمثال السابق ولكن بشرط 

c_natega = 1

 الحاجات دي عشان نا اوصلها اتعلمها فين او ادرسها فين

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

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

وفيك بارك الله اخى @haniameen

الشكر لله ثم لاخواننا واساتذتنا جزاهم الله عنا كل خير

بالنسبه للسؤال الاول سوف اتركك تحاول فيه حتى تتعلم وان شاء الله سوف تصل وان لم تعرف قدمناه لك

بالنسبه للسؤال الثانى فعن نفسى اتعلمها من مساعده اخوانى السائلين بالموقع ومحاولة الاجابه على استفسارتهم

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

وبالبحث هنا وهناك حتى فالمواقع الاجنبيه التى لا اطيقها ولكن الحمد لله ماشى الحال

بالتوفيق اخى

  • 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