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

هل من الممكن تحقيق ذلك في الأكسس

مغلق
بدأه jamal2003 في 2 يناير 2006 · 20 رد · 4,171 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

طلب اتمنى ان اجد حلا له ولكم خالص شكري وتقديري

لدي منتج له تاريخ صلاحية وتاريخ استلام

ارييد عندما اخصم من كمية المنتج يخصم من اقدم تاريخ ثم الذي يليه

مثال :

----------------------------------------------------

-- المنتج ------- الكمية ------- تاريخ الصلاحية

عصيربرتقال ------- 5 -------- 12/1/2006

عصير برتقال ------ 10 -------- 16/6/2006

عصير برتقال ------ 12 -------- 11/8/2006

----------------------------------------------------

الكمية المطلوبة 17 (( يبدأ بخصم الكمية على حسب اقرب تاريخ صلاحية ))

بمعنى :

اريد خصم الكمية 5 من التاريخ الأول بقي من الكمية المطلوبة 12

ثم يذهب الى التاريخ الذي يليه ويخصم 10 بقي 2 من الكمية المطلوبة

يخصم 2 من التاريخ الذي يليه .

هل ممكن تحقيق ذلك في الأكسس

#2

هذا مثال للجدول اتمنى ممن لديه الخبرة ان يساهم في ايجاد الحل

ولكم جزيل الشكر

اخوكم جمال

db6.rar

#3

نعم يمكن عمل هذا بالاكسس و كنت بصدد شرح هذا و غيره في نظام الصيدله الذي لم اجد استجابة مشجعه من قبل الاعضاء حتى تصورت اني اكلم نفسي :D :) :D

العراق - البصرة

#4

اتمنى ان تشرح الموضوع وتأكد أن الفايدة ستعم الجميع

واتوقع وضع شرحك في المواضيع المتميزة

وتذكر ان رضى الناس غاية لا تدرك

اتمنى ان تفيدنا ولك خالص شكري وتقديري. والله يوفقك

أخوك جمال

#5

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

واستغفر الله واسأله رضاه

العراق - البصرة

#6

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

أما قبل ..

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

أما بعد ..

بالنسبة لحل هذه المسألة كالتالي ..

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

أولاً .. تصور المشكلة

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

ثانياً .. الحل النظري

1- تحديد المنتج .

2- معرفة هل يوجد به كمية تساوي أو أقل من المطلوب خصمه أم لا

3- إن كانت الكمية المطلوب خصمها أكبر من الكمية الموجودة في المخزن ، أيقاف البرنامج برسالة توضح الكمية الموجودة في المخزن

4- إن كانت الكمية المطلوب خصمها أقل أو تساوي الكمية الموجودة في المخزن

5- ترتيب المنتج وفق التاريخ بترتيب الأقدم فالأقدم .

6- البدء بالخصم من التاريخ الأقدم

7- عند نفاذ الكمية في سجل التاريخ الأقدم ، ينتقل إلى الخصم من التاريخ الذي بعده وهكذا ... حتى يتم خصم المطلوب .

ثالثاً .. الحل العملي

* لدينا جدول المنتجات tblprodoct وبه الحقول التالية

- IDprd رقم المنتج

- Prodoctname اسم المنتج

- QU الكمية

- prdDate تاريخ نهاية الصلاحية

* إنشيء نموذجاً يحتوي على ..

- txtNameProdoct يحمل اسم المنتج المطوب الخصم منه

- txtCont كمية الخصم

- txtNowProdoct الكمية المتوفرة بعد الخصم

- زر أمر لتنفيذ الخصم

تحت زر الأمر نضع الكود التالي ..

Dim strSQl As String   ' متغير جملة سيكيول التي يتم من خلالها اختيار المنتج وترتيبه 
Dim rec As New ADODB.Recordset  ' متغير مجموعة سجلات ADO
Dim Result As Long  ' متغير نتيجة الحساب والخصم
Dim i As Integer ' متغير الدوارة 
Dim countQU As Long ' متغير الكمية الموجودة في المخزن

' أخذ مجموع الكمية من المنتج المحدد 

countQU = DSum("[qu]", "tblprodoct", "Prodoctname='" & Me.txtNameProdoct & "'")

'  مقارنتها بالمطلوب فإن كان المطلوب أكبر من الكمية الموجودة تظهر رسالة تفيد ذلك وإنهاء الإجراء حتى يقوم المستخدم باختيار طلب كمية تساوي أو أقل من الموجود في المخزن 

If countQU < Me.txtCont Then
    MsgBox "الكمية الموجودة تقل عن هذا الطلب .. الكمية الموجودة فقط ( " & countQU & ")"
    Exit Sub
End If

'txtNameProdoct  عبارة سيكيول لاختيار المنتج وترتيبه كما هو مطلوب في مربع نص 

strSQl = "select IDprd,QU,prdDate from tblprodoct "
strSQl = strSQl & " where Prodoctname='" & Me.txtNameProdoct & "'"
strSQl = strSQl & " order by prdDate asc"

' فتح كائن مجموعة الاتصال ADO 

rec.Open strSQl, CurrentProject.Connection, adOpenKeyset, adLockReadOnly, adCmdText

For i = 1 To rec.RecordCount
' إذا كان المطلوب أكبر من المخزن في التاريخ الأقدم 
' اخصم المطلوب من الموجود في المخزن 
' احتفظ به في حقل txtCont 
' اجعل حقل الكمية في هذا السجل صفر 
' انتقل إلى السجل التالي أي التاريخ الأقرب
' وقم بالعملية مرة أخرى
    If CLng(Me.txtCont) > rec!qu Then
        Result = CLng(Me.txtCont) - rec!qu
        Me.txtCont = Result
        DoCmd.SetWarnings False
        DoCmd.RunSQL "update tblprodoct set qu =0 where IDprd=" & rec!IDprd
        rec.MoveNext
    Else
' إذا كان المطلوب أصغر أو يساوي ما في المخزن  
' اخصم المطلوب من الموجود في المخزن 
' احتفظ به في حقل txtCont 
' أنقص من حقل الكمية في هذا السجل فقط
        Result = rec!qu - CLng(Me.txtCont)
        Me.txtCont = Result
        DoCmd.SetWarnings False
        DoCmd.RunSQL "update tblprodoct set qu =" & Result & " where IDprd=" & rec!IDprd
    End If

' ضع في حقل المتبقي من المخزن من هذا المنتج بعد الخصم
Me.txtNowProdoct = DSum("[qu]", "tblprodoct", "Prodoctname='" & Me.txtNameProdoct & "'")

Next i
rec.Close
Set rec = Nothing

تم تعديل هذه المشاركة بواسطة أحمد الحربي في 3 يناير 2006 في 14:43

1▲ 1
#7

ما شاء الله تبارك الله اخي احمد

شرح وافي ومميز ومختصر في نفس الوقت .

;) ;) اين انتم من زمان " اخرجوا العفاريت من القمم " ;) ;)

وايحروا معنا في رحاب المنتدى فوالله ان لكم وحشه

اختكم

زهره

#8

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

أما قبل ..

ما شاء الله تبارك الله اخي احمد

الشكر لك والتحية والعرفان

أما بعد

لم استطع ان أعبر عن الموضوع بعنوان خاص

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

ارفقت لك تطبيق ما ذكرته ولم استطع معرفة خطئي اتمنى لو تسمح بالإطلاع عليه

ولك خالص شكري وتقديري

Db1.rar

#9

أهلا بك ياجمال

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

آمل أن توفق في تطبيقه والاستفادة منه.

أخوك،، عبدالله عطيف

عبدالله عطيف

#10

أستاذتنا الكريمة .. الأستاذة زهرة

بورك فيك على الثناء الذي أتمنى أن أستحقه ، إذن لكنت من المسرورين

حقاً وصدقاً .. عندما أمر المنتدى بين الفينة والفينة ، وأرى اسمك ، فإني أطمئن على السائلين بأنهم سيجدون المورد العذب الدفاق

--------

أخي الموقر .. جمال

الخطأ الذي وقعت فيه كالتالي :

1- لم تضع الحقل IDprd كمفتاح أساسي فأنت وضعت الحقل n مفتاحاً أساسياً .

2- مربعات النصوص في شاشة الإدخال لم أضعها منضمة فكلها فارغة من مصدر عنصر التحكم

3- الكود ليس تحت زر التنفيذ .

دمت بخير ورضا

#11

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

علي البخيت

العراق - البصرة

#12

مشرفنا العزيز أحمد الحربي

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

-------------------------

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

---------------------------------------------------

اولا : كيف يكون حقل IDprd مفتاح اساسي إلا اذا كان في جدول آخر لان تكراره في هذا الجدول حتمي

ثانيا : عندما تلافيت أخطائي وجدت ان الكود يحذف كل الكميات وتحويلها الى القيمة ( 0 )

ارفقت لك الملف المعدل .

ولك جزيل الشكر ونفعنا الله بعلمك

الأخ العزيز علي بخيت

شكرا على اهتمامك وموضوعك رائع بمعنى الكلمة اتمنى لك التوفيق

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

أخوكم جمال

Db1.rar

#13

اخي جمال

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

لو اخذت نتيجة ما قام به الاستاذ احمد مشكورا على جهوده وقلت لصاحب المخزن حسب ما لديك من نتيجة بع خمسه من عصير البرتقال الذي تاريخ نفاذه 12/1/2006 و بع عشرة من عصير البرتقال الذي تاريخ نفاذه 16/6/2006 و بع اثنان من عصير البرتقال الذي تاريخ نفاذه 11/8/2006 فماذا سيفعل صاحب المخزن ؟ اذا كان مخزنه مبعثر و قد خلط بين علب عصير البرتقال التي لها تواريخ نفاذ مختلفة كيف يمكنه ان يفعل ما طلبته منه و اكيد راح يدوخ و راح يغضب عليك و على نظامك و يقول" جبتك عون و طلعت فرعون " انت بدورك هديء عليه وقل له اخي دعك من هذا الطلب و لا تغضب و ابدأ بترتيب مخزنك واذا قال طيب قلي انت كيف ارتبه . عند ذلك قل له ضع كل مجموعه من عصير البرتقال و التي لها تاريخ النفاذ نفسه في رف او مكان معين و سجل عليه بورقه كبيره تاريخ النفاذ الخاص بها حتى لا تتعب بالبحث و اذا اشتريت كمية جديدة ضعها في المكان الخاص بها حسب تاريخ النفاذ استحسن الفكره صاحب المخزن و عمل بما قلت له . الان فرصتك يا جمال علب العصير مرتبه في المخزن حسب تاريخ النفاذ اطلب منه جرد للمواد حسب تاريخ النفاذ فيجلب لك جدول كالاتي:

عصير برتقال--------- 12/1/2006

عصير برتقال--------- 16/6/2006

عصير برتقال--------- 11/8/2006

عصير برتقال--------- 12/9/2006

عصير تفاح ----------- 5/2/2006

عصير تفاح ----------- 7/4/2006

و هكذا

الان انت قم بترميز هذه المواد و اليك طريقة الترميز:

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

(# # # # & & ) الخانات الاربعة على اليمين لتسلسل اسم المادة و الخانتين التان على اليسار لتسلسل تاريخ النفاذ

فتكون النتيجة كالتالي :

010001 عصير برتقال--------- 12/1/2006

020001 عصير برتقال--------- 16/6/2006

030001 عصير برتقال--------- 11/8/2006

040001 عصير برتقال--------- 12/9/2006

010002 عصير تفاح ----------- 5/2/2006

020002 عصير تفاح ----------- 7/4/2006

وهكذا

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

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

مع تحياتي علي البخيت .

تم تعديل هذه المشاركة بواسطة alibukheet في 4 يناير 2006 في 10:15

العراق - البصرة

#14

أخي جمال ..

فعلاً حين لا يكون الحقل IDprd مفتاحاً أساسياً سيجعل الكود جميع الحقول صفراً ، لأنه حينئذٍ لا يوجد ما يميز كل سجل بمفرده .

إذن اجعل الحقل n هو المفتاح الأساسي لتعريف كل سجل بمفرده ، ثم انتقل إلى الكود واستبدل الحقل IDprd بالحقل n

------------

الأستاذ علي .. بورك فيك .. أتمم حلك فإني أراه جيداً ، كيف سيتم الخصم ؟

#15

الاستاذ احمد المحترم

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

اما اذا كنت تقصد عملية حساب رصيد الماده فاني احب ان اذكرها في موضوع نظام الصيدله الا اذا سمحتم لي بوضع رابط لهذا الموضوع داخل نظام الصيدله في فقرة حساب رصيد المواد.

العراق - البصرة

#16

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

اولا

نشكر الاخ الفاضل jamal2003 على هذا السؤال الذكي والهام والعويص ونشكر كل من ساهم في هذا الموضع الاخ العتيد الاستاذ أحمد الحربي والاخت الفاضلة الاستاذة زهرة العبدالله والاخ الفاضل alibukheet

ثانيا

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

____________.rar

طارق العيد

#17

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

الحمد تم تعديل الكود بشكل بسيط جدا وكانت النتيجة 100% صح

اشكر الأخ أحمد الحربي الذي له الفضل بعد الله سبحانه وتعالى في الوصول الى الحل فعلا انت مبرمج رائع

وأشكر الأخ علي بخيت على مجهوده وطريقة تفكيره الرائعة

وأضع بين ايديكم الملف بعد التعديل لتعم الفائدة

db7.rar

#18

الاخ jamal2003 هناك خطأ في الحسابات في المثال الذي رفقته اعلاه .... ادخل 6 بدل 16 ونفذ الخصم سيخصم في النموذج ويعطيك الباقي 12 وهذا صحيح .... اغلق النوذج وافتح الجدول واحسب الكمية ستجدها 8

طارق العيد

#19

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

ملاحظة: لماذا لا تستخدمون المصفوفات فقد تكون العمليه اسهل :)

العراق - البصرة

#20

الأخ الكريم .. علي

كلامك صحيح في أنه بالتصفير تكون البيانات قد فُقدت وتغيرت ، هذا إذا كان لابد من إبقاء البيانات كما هي لاستخدامها فيما بعد لأي غرضٍ ما .

ولكن كان في ذهني مسبقاً أنني لا أحتاج لمعرفة الكميات لاحقاً ، تماماً مثل إجازات الموظفين ، فأنا لست محتاجاً لمعرفة كم كان مقدار الإجازة الممنوحة للموظف هذه السنة أو في السنة السابقة ، فهي معروفة بأنها ثلاثون يوماً في السنة .

ولكن لو افترضنا حاجتنا إلى البيانات ، فإنه يجب الحفاظ عليها من تغييرٍ كهذا ، تماماً مثل مدين ودائن في الحسابات ، أو كحالتنا هنا فيما لو احتجنا إلى إبقاء الكميات الداخلة إلى المستودع كما هي .

شكراً لك على إثراء الموضوع وبورك فيك

#21

أخي العزيز جرب هل هذا ما تريد ؟

حمل الملف المرفق أرجو أن يكون هو ما تريد .

555.rar

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…