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

سؤال قد يكون تكرر من قبل ولكن لم أجده ؟

مغلق
بدأه أشرف خليل في 23 سبتمبر 2001 · 34 رد · 2,472 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي ثلاث جداول الأول يحتوى على ارصدة الأصناف الحالية والثاني يحتوى على الأرصدة الوارده للأصناف والثالث يحتوى على الأرصدة المنصرفة . لنفرض أن بداية العمل كانت فى 1-1-2001 مثلا

السؤال عند اخيار كارت الصنف فى تاريخ 1-4-2001 إلى 15-4-2001 مثلا فإنه المفروض أن يظهر الرصيد السابق والذي يكون من 1-1-2001 حتى بداية التاريخ الأول وهو 1-4-2001ثم يبدأ فى سرد الحركات الوارده والمنصرفة حتى التاريخ المطلوب .إلى أن يظهر الرصيد الحالى للتاريخ المحدد حتى لو كانت هناك حركات واردة أو منصرفة بعد هذا التاريخ فلا يظهرها .

أفيدوني أفادكم الله

أشرف خليل

#2

ثاني مرة تنسى السؤال يا أخ أشرف . :D

وأوضح كلامك بأمثلة إذا أمكن .

ولك تحياتي

#3

الأخ أبو حمود : أول مرة أعرف إن أسئلتي غامضة

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

أشرف خليل

#4

الأخ أشرف

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

قد تنجح معك طريقة وضع الجدولين في استعلامين وطرح الكمية بينهما ولكن قد يشكل أن بعض الأصناف لم يرد لها شيء خلال هذه الفترة وقد صرف منها من رصيد سابق أو العكس وقد تحل هذه المشكلة بوضع الجدول الذي فيه أسماء الأصناف ونربط بينه وبين الجدولين المنصرف والوارد بعلاقة من خصائصها كل القيم في جدول أسماء الأصناف في كلا الرابطين ونستخدم أيضا دالة NZ أو IIF ، ولكن اعتقد أن المسألة تتعقد بدون داعي .

والأخ حارث هو أبو الاستعلامات وانتظر إجابته فهو الذي سيعطيك الجواب النهائي .

ولك تحياتي

#5

الأخ أشرف

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

أفضل أنك تضع جدول تسجل فيه باستعلام إلحاق الرصيد في نهاية كل شهر مع تاريخ نهاية الشهر ، ثم إذا رغبت في في معرفة رصيد الشهر السابق مع الرصيد الحالي ننشئ استعلام جديد ونضع فيه جدول الرصيد الحالي وتعمل له عبارة Between في حقل تاريخ الرصيد الحالي ثم ننشئ استعلام يظهر لنا من جدول الرصيد رصيد الشهر السابق عن طريق عبارة مثل :

شهر: DatePart("m";[تاريخ الرصيد])

وفي معيار

Month([forms]![اسم النموذج]![بداية التاريخ])-1

ولتحديد أشهر السنة

سنة: DatePart("yyyy";[تاريخ الرصيد])

وفي معيار

Year([forms]![اسم النموذج]![بداية التاريخ])

ونجمع بينهما في استعلام ثالث .

ولو أرسلت لي الملف لأجبتك أفضل من هذا لأن الكلام النظري التخميني غير العمل المباشر .

ولك تحياتي

#6

هذا مثال قريب شوي للي تفكر فيه بس مو عارف كيف انزله لكم ياليت تخدموني

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

#7

تفضل بارساله على الايميل الخاص بي

بالاسفل وسوف اقوم بانزاله للجميع .

#8

الاخ mohedss لقد ارسلت لك البرنامج

#10

شباب شفتو المثال ولا لا؟؟

وين تعليقاتكم؟

وبعدين لو لاحظتو فيه مشكله وهي انها لو دخلت تاريخ قبل الفتره الي مبين فيها انه في المؤسسه يعطيك كل الاماكن الي في اللسته

#11

الأخ بوب :

أولا شكرا على المثال

ثانيا ما قدرت أخرج منه بنتيجه وأحاول مرة ثانية فيه بتعمق شوية .

أشرف

#12

الأخ بوب عابد

لقد حملت المثال وافترضت أن حقل Date في الجدول هو حقل تاريخ نهاية عمل العامل في القسم وأنشئت الاستعلام التالي :

SELECT TOP 1 [Employee Work Site].[Employee ID], [Employee Work Site].[Work Site], [Employee Work Site].Date

FROM [Employee Work Site]

WHERE ((([Employee Work Site].[Employee ID])=[Forms]![Form1]![Combo0]) AND (([Employee Work Site].Date)>=[Forms]![Form1]![Text2]));

أرجو أن تجربه وتعطيني رأيك .

ولك تحياتي

#13

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

وذلك لانه يعبئ على كلامك بعد الانتهاء من المكان وقبل ذلك لا يوجد

#14

أخ بوب

قبل الإنتهاء يكون العامل في القسم السابق وفي القسم السابق يكون في الذي قبله حتى نصل إلى قبل تعيينه في المؤسسة .

ولك تحياتي

#15

الاخ ابو حمود

اولا عند تعينه في المؤسسه لن تعبئ ذلك حسب كلامك صح؟ لانك تعبئه عند الانتقال فقط اذا لن يكون له موقع بذلك

ايضا قد يستمر في مكان قتره الى الوقت الحالي بدون انتقال هل سيكون له موقع؟

المعذره على سوء التوضيح

#16

صحيح كلامك أخ بوب .

طيب ماهي المشكلة في المثال الذي وضعته بالضبط .

ولك تحياتي

#17

الاخ ابوحمود

الي عندي الحين اوكيه اشتغلت

بس انا حبيت اطرح المثال ممكن احد يستفيد منه وكان ودي احد يستفسر عن شي بس مو مشكله إن شاء الله هم فاهمين

#18

طيب فيه رأي آخر أخ بوب لو جعلت حقل Date هو حقل بداية وجود الموظف في القسم وأجبرت المستخدم عند تسجيل الموظفين على إدخال هذا التاريخ هل تنجح هذه الطريقة ما رأيك ؟

ولك تحياتي

#19

احسنت

ابوحمود صادق وكيف غابت عن بالي ماادري

طبعا اكيد يااستاذنا هذي الطريقه افضل بكثير

#20

الأخ بوب ، الأخ أبو حمود :

حاولت تطبيق الملف السابق (في إضافة تاريخ نهاية العمل في القسم) فلم أنجح ، فحاولت الاقتباس منه بعض الأفكار في الموضوع ، فكانت النتيجة هي المثال التالي :

http://mypage.ayna.com/harith77/popstudy.zip

ملاحظة : المقصود هو النموذج WorkSiteChanges

في الحقيقة ستلاحظون أنه من أجل استخدام استعلام تحديث اضطررت لوضع استعلام آخر ونموذج فرعي غير مرئي ، وأشعر أن هذا كله لا داعي له ، لكن ما البديل ؟

هل هناك كود يقوم بدور استعلام التحديث qq3 ??

أو هل يمكن أن أضع استعلام تحديث واحد يقوم بدوري الاستعلامين qq2 وqq3 كما يغني في الوقت نفسه عن النموذج الفرعي ؟ لأني وجدت أن استعلام التحديث لا يقبل دالة التجميع ، فهل هذا صحيح ، وهل هناك حلول أخرى .

#21

الأخ حارث

لم استطع تحميل الملف يطلب التوثيق .

ولك تحياتي

#22

الأخ أبو حمود :

أرسلت لك الملف .

#23

الأخ حارث

حتى في بريدي يطلب توثيق ما أدري وش القصة ما سكة معي على التوثيق اليوم .

#24

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

شكرا أخي حارث .

ولك تحياتي

#25

الأخ حارث

بالنسبة للإستعلامات الإجرائية أو استعلامات الفعل وهي :

1- استعلام الحاق

2- استعلام تحديث

3- استعلام إنشاء جدول

5- استعلام حذف

هذه الأنواع يمكنك استخدام عبارة :

DoCmd.RunSQL (strSQL)

لتشغيلها دون حاجة لوجود كائن الاستعلام .

والمتغير strSQL تحصل على قيمته ببساطة شديدة عن طريق إنشاء استعلام جديد ووضع الجداول واختيار نوع الاستعلام يعني اعمل استعلام كامل كأنك تريد حفظه ولكن لا تحفظه ثم في أقى اليسار على شريط الأدوات اختر عرض SQL ستفتح الشاشة الخاصة بهذه اللغة حدد كامل النص ثم انسخه ، وفي الوحدة النمطية تضع كامل العبارة بين فواصل مزدوجة ، انظر استعلام qq3 الموجود في مثالك :

strSQL = "UPDATE [Employee Work Site] SET [Employee Work Site].ToDate " _

& " = [forms]![WorkSiteChanges]![Date]-1 WHERE ((([Employee Work Site].[Employee ID]) " _

& " =[forms]![WorkSiteChanges]![ab]![bb]));"

ألصق العبارة في الوحدة النمطية حتى تتضح لك جيدا .

طبعا لا تنسى الاعلان عن المتغير strSQL كمتغير نصي :

Dim strSQL As String

وما ذكرته بخصوص استعلام التحديث أنه لايقبل دوال التجميع Sum-Count-Avg ... صحيح وإذا اضطررت الى استخدام استعلام تحديث مبني على نتائج حسابية فاجعل قبل تنفيذ استعلام التحديث استعلام إنشاء جدول يحوي نتائج الحقول بعد العمليات الحسابية وبإمكانك حذف الجدول بعد الإنتهاء من استعلام التحديث أو كطريقة أخرى إذا لم ترغب في إنشاء جدول في كل مرة أن تضع استعلام إلحاق لهذا الجدول ويلية مباشرة استعلام التحديث ثم إذا رغبت في حذف السجلات المؤقته الموجودة في الجدول استخدم استعلام حذف وكل هذه الاستعلامات تعملها بالطريقة المشروحة في الأول .

وأما المثال فسأرسله لك بعد وضع بعض التعديلات عليه لإبداء رأيك .

ولك تحياتي

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

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