الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

DCount مع Between

مغلق
بدأه falantokh في 24 مايو 2003 · 28 رد · 2,449 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

احبتي في الله ..

لماذا لا أستطيع معرفة عدد السجلات عندما أستخدم دالة Dcount ، لـِ حصر عدد السجلات بين تاريخين بإستخدام Between ؟؟

مثال:

(" "Dcount("Fld", "Tbl","MyDate Between "Me.From" And "Me.To

حيث Fld إسم الحقل وهو Primary لا يتكرر.

Tbl إسم الجدول المراد البحث فيه.

MyDate سجل التاريخ في الجدول.

Me.From حقل غير منظم يتم إدخال تاريخ1 به.

Me.To حقل غير منظم يتم إدخال تاريخ2 به.

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

Me.From And Me.To

جربتها ولكن ... !!! يعطيني عدد السجلات دائما = صفر ؟؟؟

وإذا قمت بإزالة Between بين تاريخين وجعلت الكود هكذا:

("Dcount("Fld", "Tbl

فإنه يتم تحديد نتيجة السجلات بشكل صحيح، فلماذا لا يقبل التحديد بواسطة التاريخ؟؟؟

دمتم بحفظ الله

#2

ملاحظة : غيرت الكود إلى التالي .. ولم ينفع

" #"Dcount("Fld", "Tbl","MyDate Between # "Me.From" # And # "Me.To

دمتم :)

#3

أعتذر مرة أخرى

فقد قمت بمحاولة التغيير التالية أيظاً ولم تجدِ المحاولات

#" Dcount("Fld", "Tbl","MyDate Between # " & Me.From & " # And

" # " & Me.To & "

دمتم مرة ثالثة :)

#4

أخي الكريم الصيغة الصحيحة لكتابة ماذكرت هي مايلي:

DCount("[fld]", "Tbl", "[MyDate] Between #" & Me.[From] & "# AND #" & Me.[To] & "#")

وقد تكون هي الصيغة التي إتبعتها غير أنني أحببت المشاركة بالتأكيد على طريقة الكتابة فقط.

#5

أخي المزيني شكرا لك من الأعماق على ردك

ولكن أخي الكريم .. جربتها ولم تنفع معي ، حيث تكون النتيجة دائما = صفر!!

بينما عندما أقوم بإستبدال Between وأضع بدلاً منها علامة (<) H, (>) فإن النتيجة تكون صحيحة ... ولكن أريد حصر النتائج بين التاريخين

ذهبت إلى Help في الآكسس ولم أجد استخدام للـ Dcount بواسطة Between

أرجو أن أجد الحل لديكم .. ويمكن تجربة ذلك لديك وقد تجد أن النتيجة = صفر أيظاً، ولا أريد تعقيد الأمور .. حيث أن النتيجة الأولى التي تخرج لي عن الضغط على زر أمر النتيجة تكون الإجابة صحيحة .. وعند الضغط مرة أخرى تأتي النتيجة بـ صفر؟؟ أي أنه يقرأها مره فقط .. ولا يستخرج النتيجة مرة أخرى!!!!

المشكلة أن البرنامج أود أن أرسله ولكن المصيبة أن حجمة أكثر من 86 ميقا ..

#6

السلام عليكم

جرب أن تستخدم دالة CDate مع :

CDate(MyDate)

CDate(Me.From)

CDate(Me.To)

وإذا لم ينفع معك حاول تبديل إسم To إلى ToDate فقد تكون هي سبب المشكلة .

تحياتي .

#7

السلام عليكم

اخي العزيز

طريقة أخرى

انشئ استعلام انشاء جدول وحدد له الفترة المطلوبة بين التاريخين في المعايير

الجدول الجديد يحتوي فقط على السجلات الواقعه بين التاريخين المحددين

طبق داله Dcount على الجدول الجديد وتمتع .

swcc-1052254947.gif

صورة
صورة

حسابي في الفيس بوك
http://goo.gl/XIzwL

حسابي في تويتر
http://goo.gl/6p4e3

 

 
 
#8

أخي العزيز ابو هادي ... أشكر لك اهتمامك

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

وقد ضربت مثالاً من عندي بأسماء حقول وجدول وهمي، بينما أنا أستخدم الكود التالي في برنامجي ولكن استبدلتها هنا للتوضيح

والكود الذي استخدمه في برنامجي كالتالي:

RecordN = DCount("[serialNo]", "TblMain", "[MainDate] Between

(" # " & Me.FromDate & " # And # " & Me.ToDate & " #

وقد استخدمت معه دالة الـ CDate ولم تفلح!! لا أدري لماذا يحدث ذلك معي في الـ Between ولا يحدث عند استخدام < أو > !!! وعند استخدام أحد هاتين الدالتين لا نستخدم CDate ومع ذلك تظهر النتيجة صحيحة .. وهذا يجعلنا نتأكد بأن CDate غير ضرورية هنا لحصر نتيجة بين تاريخين .. وأن هذا الخطأ من استخدام الحصر لتاريخين، حيث لا توجد مشكلة مع تاريخ واحد!!!

أرشدوني وفقكم الله قبل أن أستفسر من مايكروسفت نفسها عن هذا الخطأ العجيب الذي لم يسبق أن مر عليَ ...... وقد استخدمت كلا التاريخين الهجري والميلادي، فقد ظننت أن المشكلة في قراءة التاريخ الهجري ومع ذلك أعطى النتيجة = صفر !!! إذن ماذا بوسعي أن أعمل؟؟

بارك الله بكم جميعاً .... ونفعني وإياكم

#9

أخي العزيز فيصل الحربي ... الذي تكاد لا تخلو صفحات هذا المنتدى من إجاباته واقتراحاته التي يجيب فيها عن تساؤلات الكثير .. فلك الشكر وجميع المشاركين بردودهم ومشرفي هذا المنبر العزيز على قلوبنا..

أنا في غاية الحرج من كثرة هذه المحاولات التي لم تفلح معي، وإشغالكم بها

(f)(f)(f)

أخي العزيز/ فيصل ... المشكلة في عدم استخدامي لـ Query هو أن المثال الذي ذكرته جزء من كود تمت كتابته بجهد وتعب حتى تمكنت من إتمامه، وعملية إعادة صياغته لتحويل النتائج به إلى Query فكرت به .. واصبت بالإحباط لتعبي الذي ذهب سدى .. خصوصا لو علمت أنني تجولت بين صفحات هذا المنتدى الذي يعود الفضل به إلى الله سبحانه وتعالى وإلى جهود المشاركين به .. وأخذت من كل فائدة به .. وكونتها حتى وصلت إلى ما أنا عليه ولله الحمد...

لذا أتمنى من الله ثم من أناملكم أن تخط على هذه الصفحة إجابة أو طريقة لحل هذه المشكلة دون استخدام الـ Query الذ مجرد التفكير بالتحويل إليه يجعلني كما ذكرت لكم أصاب بالإحباط :( :(

لكم مني أرق وأجمل التحايا لمروركم و وقوفكم عند هذه المشكلة .. فـــ دمتم

#10

السلام عليكم

أحيانا لكي تعمل هذه العبارة بشكل سليم

يجب تحويل تنسيق التاريخ

أي

#" & Format((Me.Date1), "mm/dd/YY") & "#

أي يصبح الكود

DCount("[fld]", "Tbl", "[MyDate] Between #" & Format((Me.[From]), "mm/dd/YY") & "# AND #" & Format(( Me.[To]), "mm/dd/YY") & "#")
#11

السلام عليكم

مرفق مثال .

حياك الله أخي محمد طاهر .. ظهورك أسعدني .

تحياتي .

dcount.zip

#12

أشكرك أخي أبو هادي

فانا لا أستطيع لااستغناء عن المنتدي و أعضاؤه ، و عن الاستفادة التي أستفيدها سواء عند التلقي و التعلم أو عند الاجابة .

أنا فقط معتذر عن المهام الادارية و عن كثرة التواجد :D

أما العضوية فلا غني لي عنها الي أن يقضيي الله أمرا كان مفعولا .

مع تحياتي للجميع

#13

مرحى ... أخي محمد طاهر

لا تغب كثيراً.... نريدك بيننا على اى وجه (عالم أو متعلم ،، مشرف او مراقب .. عضو أو إداري)

فقط كن معنا

#14

السلام عليكم

والله كم اسعدني رؤية اسمك هنا اخي محمد طاهر

فلا تحرمنا من طلتك البهيه .

swcc-1052254947.gif

صورة
صورة

حسابي في الفيس بوك
http://goo.gl/XIzwL

حسابي في تويتر
http://goo.gl/6p4e3

 

 
 
#15

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

الأخ الفاضل/ محمد طاهر: وجودك هنا فقط .. يغني عن الكلام ولا أجد ما أكتب وتعجز الحروف عن تسطير كلمات الشكر والعرفان لك .. وفقك الله لما يحب ويرضى.

الأخ الفاضل/ أبو هادي: لك شكر خاص على ردك .. وعلى اهتمامك .. وعلى مثالك المرفق .. جزاك الله كل خير و كتبها لك في ميزان حسناتك.

الأخ الفاضل/ رضا عقيل: مرورك فقط .. يسعدني ويشرفني، ولن أنسى ردودك على مواضيع كثيرة قد طرحتها .. ومن هنا أشكر لك جهدك .. بارك الله فيك.

الأخ الفاضل/ فيصل الحربي: لك جزيل الشكر على مداومة مرورك من هنا وحرصك لمعرفة ما جرى معي، لك مني شكر لا تسعه صفحات هذا المنتدى.. ولكن تسعه قلوب من فيها.

أما عن مشكلتي .. فـ يبدو أني لن أتمكن من حلها رغم كثرة المحاولات والإقتراحات التي تم طرحها من قـِبـَلـِكـُم .. وسأضطر إلى إنشاء إستعلام كما سبق وأن أشار بذلك الأخ العزيز/ فيصل الحربي ;););) مع أنني تحاشيت ذلك مسبقاً لأن الكود كبير جداً ويلزمني التعديل على إجراءات كبيرة .. ولكن يبقى هذا هو الحل الأوحد ... فربما لدي عدة أمور بالكود أخرجت لي هذه المشكلة في حصر التاريخين :):):)

لكم خالص شكري وتقديري وامتناني لمروركم واقتراحاتكم وجعلها الله لكم في موازين حسناتكم .. فـ والله لن أنسى حضوركم وردودكم ومساعدتكم لي وأعتذر لإشغالكم بهذه المشكلة .. ولكم مني (f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)

#16

السلام عليكم

أخي لم توضح إذا ما المثال عمل معك أم لا .

لقد تأملت ردودك ورأيتك دائما ما تستخدم المسافات قبل وبعد علامة الرقم # وهذا خطأ لأن المسافة بحد ذاتها قيمة وإذا أضفتها قبل التاريخ فقد غيرت في التنسيق فبدل أن يعطي قيمة تاريخ سيعطيعها بشكل نص مشوه وعلامة الرقم # والمسافات الزائدة أصبحت من محتوياته .

فمثلا نهاية التاريخ يجب أن يكون "#" وليس " # " هذا الإختلاف في البرمجة كبير والقيم مختلفة تماما .

أنا الآن بدوري أطلب منك الرد على عمل المثال من عدمه .. حيث أصبحت المشكلة مشكلة الجميع وتهمنا جميعا .

تحياتي .

#17

بدايةً .. أقول : ماشاء الله عليك أخي ابو هادي.. ملاحظتك تدل على دقـّـتك ;););)

ولكن قد كتبت ذلك في مشاركتي مجازاً وإن كنت قد طبقتها بصيغتها الصحيحة في برنامجي، ولكن كتبتها هنا مع المسافة التي ذكرت

فهي كما يلي:

If IsNull(Me.Office) And IsNull(Me.Part) And IsNull(Me.To) Then

RecordN = DCount("[serialNo]", "TblMain", "[MainDate] Between

("#" & Me.FromDate & "# And #" & Me.ToDate & "#

If RecordN = 0 Then

Me.LblNumber.Visible = True

"عدد المعاملات الصادرة من جميع الأقسام" = Me.LblNumber.Caption

Me.Result.Visible = True

"Me.Result = "0

Me.LblPercent.Visible = False

Me.Percent.Visible = False

Me.CmdRep.Visible = True

Exit Sub

Else

Me.LblNumber.Visible = True

Me.LblNumber.Caption = "عدد المعاملات الصادرة من جميع الأقسام"

Me.Result.Visible = True

Me.Result = RecordN

Me.LblPercent.Visible = False

Me.Percent.Visible = False

Me.CmdRep.Visible = True

Exit Sub

End If

end if

هذا جزء من الكود الذي استخدمت فيه الننتيجه لحصر تاريخين

مع العلم أن أن التاريخين فصلتهما عن جملة الـ DCount حيث كنت استخدمهما داخل الجملة .. ولكن جعلت هنا أن التاريخين كما يلي:

FromDate يأخذ قيمة أقل تاريخ (تاريخ أول معاملة تم إدخالها) وهي قيمة في الـ Default

وَ ToDate يأخذ قيمة أعلى تاريخ (تاريخ آخر معاملة تم إدخالها) وهي قيمة في الـ Default كذلك وَ وضعتهما في خصائص الفورم.

ويتم وضع قيمة التاريخين ( الأعلى) وَ (الأدنى) في حقل غير منظم لكل واحد منهما.

لأنني جربت أن تكون ضمن جملة الـ DCount ولم أفلح .. وهذه محاولة من عدة محاولات .... أتمنى أن أنتهي من البرنامج لكي أتمكن من وضع فورم يشتمل على ما قمت به مع الكود المستخدم .. ولكن لأنني لم أنتهي بعد من البرنامج لذا اكتفيت بذكر المشكلة وَ حسب ... لذا إن لم أتمكن من تصحيح المشكلة ولو على الأقل بشكل آخر عن طريق الـ Query فإنني سوف أرفق الجزء الخاص بالمشكلة كـ ملف مرفق إليكم للنظر والتأكد من صحة ما ذكرت ومعرفة مكمن الخطأ، لأن حجم البرنامج كاملاً يتجاوز الـ 80 ميقا وأكثر!!!

دمتم بحفظ الله

#18

أخي / falantokh

تفضل هذا المثال إن شاء الله يكون هو المطلوب ،،،،،،،،،،

تحياتي : أبو عقيل

dcount_97.zip

المسلم من سلم الناس من لسانه ويده

#19

أخي أبو هادي .. لك كل الشكر على مثالك المرفق، حيث قمت بتجربته وهو فعلاً يعطي النتيجة بشكل صحيح .......... ولكــــــــــــن!!!

لأن التواريخ بالميلادي لديك .. وأنا أستخدم التاريخ الهجري

لذا قمت بتغيير الاعدادات في الأكسس لقراءة التاريخ بالهجري .. وبعد التطبيق تبـيـّـن أن النتيجة تعطيني = صفر، كما حصل معي في برنامجي الذي نسخت منه جزء من الكود في مشاركتي السابقة.

مع أنني بعد تحويل اعدادات التاريخ للهجرية .. ذهبت للجدول وتأكدت أن التواريخ أصبحت به بالهجري .. ومع ذلك عند ضغط زر أمر للنتيجة يعطيني صفر!!! ... هذا يعني أن المشكلة بنوع التاريخ ( هجري/ ميلادي) حيث يقبل الميلادي ولا يقبل الهجري.

مثال : وضعت التاريخ 1424 01 01 وقام بقراءته على أنه تاريخ ميلادي، ولم يقرأ كتاريه هجري .. أعتقد أن المشكلة بالتاريخ الهجري فقط ... مع العلم أنني سبق وأن مرّت علي مثل هذه المشكلة منذ فترة ليست بالقليلة والمصيـــبه أنني لا أعلم كيف تغلبت عليها بعد محاولات، وها هي تتكرر معي ثانية و بدون جدوى.

لك تقديري و جل احترامي

#20

أخي / falantokh :D

تفضل هذه نسخة أيضا من المثال على أكسس xp

قم بكتابة التاريخ الاول مثلا : 1/1/2000

والتاريخ الثاني : 30/12/2000 ،،، وأضغط على زر بدء البحث بين تاريخين

سوف تجد عدد ( المصروفات ) و ( مجموع المبالغ ) قد تم تحديثه بناءا على

التاريخين ،،، قمت بالتسجيل في تواريخ متعددة لعام ( 2002 ، 2003 )

مع تحيات : أبو عقيل (f)(f)(f)

dcount_xp.zip

المسلم من سلم الناس من لسانه ويده

#21

عفواً أستاذي الفاضــــل/ أبو عقــــ(f)(f)(f)ــــل، يبدو أنني أرسلت مشاركتي الأولى بنفس الوقت معك لذا لم أتمكن من الرد، وفوجئت بوجود رد من جنابكم الكريم بعد ذلك .. فـ عذراً :o

جربت المثال الذي أرفقته .. وقد نجح معي خاصة أن البحث تم عن طريق الـ RowSource .. أحسنت أحسنت أحسنت بارك الله فيك وأحسن إليك وزادك من فضله ونعيمه في الدنيا والآخرة.

والله إني تعبت تعبت تعبت ... ولكن سبحان الذي جعل لكل ضيق فرجاً

فـرّج الله عنا وعنكم في الدنيا والآخرة كل كربة.

جربت أن أحول التاريخ إلى الهجري وتمكن من إيجاد عدد السجلات .. حيث أنني قمت بتحويل التاريخ إلى هجري في بعض الأمثلة المرفقة من الإخوة الأعزاء والأفاضل ومع ذلك يتم قراءتها كتاريخ ميلادي!! ولكن هنا نجحت المحاولة أخيرااااااا

(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)(f)

جزاكم الله عني كل خير و ونفع بكم وأكثر من أمثالكم .. والله إني أكاد أحتضنكم لولا هذه الشاشة التي أمامي ;);) حقاً إني عاجز بكل ما أكتب عن الوفاء بجميلكم وحرصكم.

==============================================

#22

أخي وعزيزي / falantokh

تحية طيبة وبعد (gift)

لقد أخجلتني بكلامك :o يكفي أن تكون قد حلت مشكلتك :) وهذا بفضل

الله الذي ألهمني هذه الفكرة ووضعها في هذا المنتدى الرائع ،،،، :D

كي تستفيد منها أنت وباقي الاعضاء المحترمين ،،،، :D

تحياتي : أبو عقيل (f)(f)(f)

المسلم من سلم الناس من لسانه ويده

#23

السلام عليكم

أخي لو أوضحت من الأول ..

عموما رب ضارة نافعة .. مرفق نفس المثال السابق بتعديل طفيف جدا وتجعل دالة DCount مع Between نافعة في كلا التقويمين الميلادي والهجري .

تحياتي .

dcount.zip

#25

أخي أبو هاااااااادي

روعة .. روعة .. رووووووعة ..... طريقتك هي ماكنت أريدها وأنشدهااااا بالضبط

بس ما أدري وينك عن هذا الحل من زمان(f)(f)(f)

اممممم ..... ((( أخي لو أوضحت من الأول ..)))!! لا أدري ماذا أقول أخي العزيز .. مع إني قمت بتفصيل المشكلة حتى توقعت أن الشرح أكبر من المشكلة التي أطرحها نفسها .... ولكن ماذا أفعل .. كنت أريد اعطائي النتيجة لعدد السجلات بين تاريخين هجريين .. وذكرت ذلك حيث قلت أنني أستخدم التقويم الهجري .. ولكن كما قلت أن رب ضارة نافعة ... فيكفي أننا التقينا ببعضنا في هذه المشاركة التي أفخر بردودك واهتمامك بها .. كما أننا استفدنا فكرة الأخ ابو عقيل حيث قام بجلي النتيجة عن طريق استخدام الـ Row Source في مثاله وهي طريقة جميلة نحتاجها في بعض التطبيقات.

لك مني أرق وأعذب وأجمل الكلمات التي أغلفها لك بـ باقة من الـ(f)(f)(f)(f)(f)

فقد اطلعت على مثالك المرفق بالملف وفعلا تحقق ما أريد ... حيث يتعرف على نوع التاريخ أهو هجري أم ميلادي وبناءً عليه يتم الحساب.

روعة أخي ابو هادي .. وشكرا لهذا الاهتمام وبارك الله فيك وجراك كل خير

والله إني لأشعر بالحرج لتواضعكم واهتمامك ... وفقكم الله وسدد على الدرب خطاكم.

هذا الموضوع مغلق.

مواضيع مشابهة