• 12
محمد فؤاد تركي

كيف تبني برنامج مخازن ومبيعات بطريقة صحيحة ؟؟

سؤال

518 إجابة على هذا السؤال .

  • -1

الاخ محمد فؤاد تركي انت رائع

سأبدا بمتابعة موضوعك المميز

تحياتي لك

:rolleyes:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

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

بارك الله فيك أخي محمد فؤاد على هذا الجهد

الله يجزاك كل خير .. طبعا الموضوع لايزال في بداياته وابدأ الرأي فيه

مبكر .. لكن لي سؤال فقط

الجدول

Transaction

يوجد فيه الحقول التالية

Total - الاجمالي قبل الخصم

Discount - الخصم

Grand Total - الاجمالي بعدالخصم

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

وأن تنفرد الجداول فقط في حفظ البيانات من مدخلات ومخرجات / فقط هذا هو سؤالي

تحياتي لك ياغالي وبانتظار تكملة المشروع

أخوك اكسير

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

أخي الغالي وخبيرنا الكبير ekseer

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

أولاً أشكرك علي متابعة موضوعي المتواضع

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

المهم دعنا نخطو خطوات الي الامام بعض الشيء وان شاء الله أكيد سيكون هناك ملاحظات كثيرة جداً وأيضا سأنتظر منك النصيحة وملاحظاتك القيمة بإذن الله

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

أولاً : - بعد ما انتهينا من تصميم مبدأيا الجداول الاساسية لبناء البرنامج سننتقل الي الخطوه الثانية وهي بناء النموذج وعلي وجهة الخصوص سنبدأ ببناء النموذج الاول وهو ( دليل أكواد المخازن ) وطبعاً هذا النموذج سيكون مصدر بياناته الجدول Names

ثانياً : - وبمنتهي البساطه سنقوم بتصميم النموذج عن طريق المعالج ونتبع خطوات المعالج خطوه خطوه حتي نصل الي المرحلة الاخيرة وهي مشاهدة النموذج وما يحتويه من حقول واليكم شكل النموذج النهائي كما في الصورة

post-46243-1207052146_thumb.jpg

ثانياً : - دعوني بعد اذنكم أضع بعض الجمل البرمجية التي ستغلق علينا بعض الثغرات التي يمكن أن يقع فيها المستخدم دون قصد

وهي كالتالي : -

1 - زر حدف فقد اضفت كود بسيط يسأل فيه المستخدم عن أو يحذر المستخدم عن تأكيد الحذف وهذا الكود تم وضعة تحت حدث الضغط علي زر حذف كالتالي

Private Sub Command9_Click()
If MsgBox("هل تريد حذف هذا الصنف", vbYesNo + vbCritical + vbMsgBoxRight + vbDefaultButton2, "تحذير") = vbNo Then
Exit Sub
Else
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdDeleteRecord
Refresh
DoCmd.SetWarnings True
End If
End Sub

كما هو موضح بالصورة المرفقة

post-46243-1207052443_thumb.jpg

2 - حقل كود الصنف يجب وضع علية جمله برمجية تفيد المستخدم في عدم تكرار الاكواد داخل دليل اصناف المخازن حتي لا تصبح البيانات مشوهه

ففي حدث before update يتم كتابه هذا الكود

numberfield = Me.Number
Dim a
a = DLookup("[number]", "names", "[number]='" & Me.Number & "'")
If Not (IsNull(a)) Then
MsgBox "هذا الصنف موجود ضمن الاصناف المخزنية", vbCritical, "رساله تحذيرية"
Cancel = True
Me.Undo
DoCmd.FindRecord numberfield
End If

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

حاول تضغط علي زر جديد ثم بعد ذلك أكتب في حقل كود الصنف رقم واحد مثلاً واضغط علي enter من لوحة المفاتيح وانظر ماذا سيحدث

post-46243-1207052938_thumb.jpg

بذلك نكون قد انتهينا من تصميم أول شاشة من شاشات البرنامج وهي شاشة تكويد الاصناف المخزنية وهي تعتبر من الشاشات المهمه جداً في البرنامج

والي لقاء آخر وتكملة أخري للبرنامج ان شاء الله

مرفق القاعدة وبها كل التعديلات التي جرت عليها

Warehouses_System.rar

تم تعديل بواسطه محمد فؤاد تركي
6

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

وفقك الله وجزاك خيرا _ ممتاز الأن أتضحت الرؤية

سر على بركة الله ياغالي .. موفق بإذن الله

EKSEER

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

طلب المساعده فى وضع البرنامج

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

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 1

اخي محمد فؤاد بارك الله فيك على هذه الافكار ودائما الى الامام..

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

مثال: اعمل حاليا على انهاء برنامج لادارة الجمعيات التعاونية، واجهتني مشكلة كون المخزون من الاصناف لا يظهر في التقرير بشكل صحيح مع اني استخدم حقلا محسوبا بالكود، فقررت استخدام الاستعلام ولظروف معينة تخص البرنامج لم تنجح حتى الاخت Refresh ولا حتى بنت الحلال Requery في ارسال التعديل من الاستعلام الى التقرير..

لذا لجات الى استعلام تحديث مباشر للحقل الموجود في الجدول، وهو حقل "المخزون الحالي من الصنف"

وكانت النتائج دقيقة مئة بالمئة بعد كل عملية بيع او شراء..

مع الشكر الكثير والتقدير للاكسير الكبير

همام

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

وافر الشكر والتقدير على هذا المجهود الكبير

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

بسم الله الرحمن الرحيم

موضوع في محله تماما

سؤال - هل يمكن اضافة التعامل باكثر من وحدة بمعنى انه يمكن اضيف للمخزن مثلا 12 كرتونة -4 عبوات حيث الكرتونة 4 عبوات ؟؟؟

كيف يحدث ذلك ؟؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

أخواني الاعضاء

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

أولاً أود أن أشكركم علي متابعة موضوعي وأشكركم علي ملاحظاتكم الغالية

الاخ الغالي اكسير الله يبارك فيك

الاخ الغالي همام الله يعطيك ألف عافية علي ملاحظاتك القيمة وان شاء الله عند اكتمال الصورة أكثر من ذلك ستضح الامور أكثر وأكثر

أخي السائل الاولاد طبعاً هذا البرنامج يصلح لادارة مخازن الادوات الصحية لان مبدأ المخازن يعتبر مفهموم واحد لا يتغير الا اذا حدث تغيير في شيء معين اضافي يطلبه العميل فكل نشاط له طبيعته لكن في النهاية مفهموم إدارة المخزون أو كما يطلقون عليها Inventory managementواحد لا يتغير

الاخ الغالي SX1 يفضل استخدام أو تثبيت وحدة واحدة لكل صنف علي حدة حتي لا يصبح البيانات المستخرجة مشوهه وعلي العموم دعنا نكمل حديثنا وان شاء الله تجد ما يلبي رغباتك ان شاء الله ........

سنبدأ اليوم بتصميم شاشة فواتير الشراء وشاشة فواتير الشراء من أهم الشاشات في برنامج المخازن والتي من خلالها يمكننا تسجيل جميع فواتير الشراء التي يتم استلامها من الموردين ..... سنبدأ الان تشغيل المعالج لتصميم شاشة فواتير الشراء وطبعاً هذه الشاشة سيكون مصدر بيناتها جدولين الجدول الاول واسمة Add_doc الجدول الثاني Transactions

add1.JPG

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

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

add_2.JPG

الاجابة : - اصبر علي رزقك شويه ما انت لو كنت مركز معايا شويه في أول المشاركة كنت قلت لك أن فواتير الشراء مصدر بيناتها جدولين جدول اسمة Add_doc والجدول الثاني Transaction

وعلي هذا الاساس سيتم الان انشاء نموذج فرعي علي نفس النموذج ويكون مصدر بياناته الجدول Transactions

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

add_3.JPG

وبعد اختيار هذه الحقول ستظهر شاشة فواتير الشراء بهذا الشكل

add_4.JPG

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

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

post-46243-1207053660_thumb.jpg

تم تعديل بواسطه محمد فؤاد تركي
5

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

آسف نسيت ارفاق القاعدة بعد إجراء التعديلات عليها

Warehouses_System.rar

3

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

أخواني الكرام

نرجع مرة أخري لموضوعنا ونكمل سوياً فواتير الشراء

تري يا أخواني ما الذي يتبقي في فواتير الشراء ؟؟؟؟؟؟؟

أقول لكم بما أننا مبرمجون ومحترفون :lol: ( ولا محترفون ولا حاحة ) فدائماً نضع نصب أعيننا المستخدم ونتوقع ونتكهن دائما ما الخطأ المحتمل الذي ممكن أن يقع فيه المستخدم وذلك لتلافي حدوث أخطأ أثنا تسجيل المستخدم لفواتير الشراء

دعنا ننظر لشاشة فواتير الشراء نظرة واسعة وعميقة

1 - أعتقد من المحتمل أن يسجل المستخدم الفاتورة مرتين عن طريق الخطأ وهذه في حد ذاتها مصيبه طماء لذلك يجب أن نضع نصب أعيننا أن يجب ألا يتكرر رقم الفاتورة . . اذهب معي للحقل المسمي رقم الفاتورة وفي حدث Before update ضع هذا الكود

add_docfield = Me.Add_doc
Dim a
a = DLookup("[add_doc]", "add_doc", "[add_doc]='" & Me.Add_doc & "'")
If Not (IsNull(a)) Then
MsgBox "أنت تريد تسجيل فاتورة قد تم تسجيلها سابقاَ", vbCritical, "رسالة تحـــزيرية"
Cancel = -1
End If
End Sub

وهذا الكود مهمته ( منع المستخدم من تسجيل فواتير تم تسجيلها من قبل )

2 - دعنا ننظر الي النموذج نظرة أخري ودعنا نفكر سوياً ماذا يمكن أن يخطأ فيه المستخدم أيضاً

آه وجدتها ;) ممكن المستخدم يكتب كود صنف خطأ أو سعر وحدة خطأ أو بيان صنف خطأ لذلك يجب المستخدم أن يلتزم بالمسميات التي قد وضعناها في أول المشاركة وهي دليل أصناف المخازن وذلك بوضع هذا الكود في حدث After update للحقل المسمي كود الصنف

Private Sub كود_الصنف_AfterUpdate()
[بيان الصنف] = DLookup("[Name]", "Names", "Number=[كود الصنف]")
[بيان الصنف] = DLookup("[Name]", "Names", "Number=[كود الصنف]")
[unit price] = DLookup("[unit price]", "Names", "number=[كود الصنف]")
[unit] = DLookup("[unit]", "Names", "number=[كود الصنف]")
If IsNull(DLookup("[number]", "names", "[number]='" & [كود الصنف] & "'")) Then
MsgBox " هذا الكود غير موجود بدليل أصناف المخازن ", vbCritical
Cancel = -1
End If
End Sub

وهذا الكود مهمته الاساسية قرأه الاصناف الموجوده في دليل الاصناف واحضارها هنا في حاله كتابة رقم أو كود الصنف في حقل كود الصنف

جميل جداً ولكن في حاله كتابة المستخدم كود غير موجود في دليل الاصناف ماذا سيحدث هل سيتم تسجيله في شاشة الفواتير :blink: أقول لك جرب وان شاء الله ستجد ما يرضيك بإذن الله

أيضا من ضمن الاشياء المهمه والتي نوه عنها الاخ همام وهي الحقول المحسوبه

فوضعنا لبعض الحقول بعض العمليات الحسابية البسيطة كما هو موضح في حقل Total وفي حدث got focs هذا الكود

Me.Total = unit_price * Qty_in

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

أيضا هذا الكود

Me.Grand_Total = Total - Discount

ومهمتة طرح الاجمالي من نسبة الخصم لاظهار اجمالي الفاتورة بعد الخصم

3 - من الاشياء الصغيرة المهمة في النموذج اظهار اجمالي الفاتورة واجمالي نسب الخصم في مربعين نصوص أسفل شاشة فواتير الشراء كتقرير سريع للمستخدم أمام عينه عندما يريد النظر لا جمالي الفاتورة....

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

مرفق القاعدة بعد اجراء التعديلات اللازمة عليها كما في الشرح أعلاه

والله الموفق

Warehouses_System.rar

3

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

السلام عليكم ....

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

مشكوور أخي الكريم

وجزاك الله كل خير ...

ولك مني أفضل التحيات ...

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 1

أخي الغالي فلسطيننا بارك الله فيك

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

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

حقل issue_doc وحقل Qty_out وطبعا أيضا مصدر فاتورة البيع جدولين الاول جدول Issue_doc والجدول الثاني Transaction

وكما موضح بالصورة الاختلاف الوحيد بين الشاشتين أثناء التصميم

issue_1.JPG

بعد ذلك نتبع نفس خطوات شاشة فواتير الشراء لتصبح شاشة فواتير البيع بالشكل التالي

issue_2.JPG

وبذلك نكون قد انتهينا من تصميم شاشة فواتير البيع

والي درس قادم إن شاء الله

مرفق الملف بعد آخر تعديل

Warehouses_System.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

أخواني الكرام

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

ولنبدأ علي بركة الله درس جديد من دروس بناء فواتير الشراء والبيع

واليوم سنبدأ في تصميم شكل فاتورة البيع والشراء واستعراضهم في تقرير بإذن الله

أولاً : - فاتورة الشراء

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

Q_1.JPG

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

Re_1.JPG

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

Function NoToTxt(TheNo As Double, MyCur As String, MySubCur As String) As String
Dim MyArry1(0 To 9) As String
Dim MyArry2(0 To 9) As String
Dim MyArry3(0 To 9) As String
Dim MyNo As String
Dim GetNo As String
Dim RdNo As String
Dim My100 As String
Dim My10 As String
Dim My1 As String
Dim My11 As String
Dim My12 As String
Dim GetTxt As String
Dim Mybillion As String
Dim MyMillion As String
Dim MyThou As String
Dim MyHun As String
Dim MyFraction As String
Dim MyAnd As String
Dim i As Integer
Dim ReMark As String


If TheNo > 999999999999.99 Then Exit Function


If TheNo = 0 Then
NoToTxt = "ÕÝÑ"
Exit Function
End If

MyAnd = " æ"
MyArry1(0) = ""
MyArry1(1) = "ãÇÆÉ"
MyArry1(2) = "ãÇÆÊÇä"
MyArry1(3) = "ËáÇËãÇÆÉ"
MyArry1(4) = "ÃÑÈÚãÇÆÉ"
MyArry1(5) = "ÎãÓãÇÆÉ"
MyArry1(6) = "ÓÊãÇÆÉ"
MyArry1(7) = "ÓÈÚãÇÆÉ"
MyArry1(8) = "ËãÇäãÇÆÉ"
MyArry1(9) = "ÊÓÚãÇÆÉ"

MyArry2(0) = ""
MyArry2(1) = " ÚÔÑ"
MyArry2(2) = "ÚÔÑæä"
MyArry2(3) = "臂辊"
MyArry2(4) = "ÃÑÈÚæä"
MyArry2(5) = "ÎãÓæä"
MyArry2(6) = "ÓÊæä"
MyArry2(7) = "ÓÈÚæä"
MyArry2(8) = "ËãÇäæä"
MyArry2(9) = "ÊÓÚæä"

MyArry3(0) = ""
MyArry3(1) = "æÇÍÏ"
MyArry3(2) = "ÇËäÇä"
MyArry3(3) = "ËáÇËÉ"
MyArry3(4) = "ÃÑÈÚÉ"
MyArry3(5) = "ÎãÓÉ"
MyArry3(6) = "ÓÊÉ"
MyArry3(7) = "ÓÈÚÉ"
MyArry3(8) = "ËãÇäíÉ"
MyArry3(9) = "ÊÓÚÉ"
'======================

GetNo = Format(TheNo, "000000000000.00")

i = 0
Do While i < 15

If i < 12 Then
MyNo = Mid$(GetNo, i + 1, 3)
Else
MyNo = "0" + Mid$(GetNo, i + 2, 2)
End If

If (Mid$(MyNo, 1, 3)) > 0 Then

RdNo = Mid$(MyNo, 1, 1)
My100 = MyArry1(RdNo)
RdNo = Mid$(MyNo, 3, 1)
My1 = MyArry3(RdNo)
RdNo = Mid$(MyNo, 2, 1)
My10 = MyArry2(RdNo)

If Mid$(MyNo, 2, 2) = 11 Then My11 = "ÅÍÏì ÚÔÑ"
If Mid$(MyNo, 2, 2) = 12 Then My12 = "ÅËäì ÚÔÑ"
If Mid$(MyNo, 2, 2) = 10 Then My10 = "ÚÔÑÉ"

If ((Mid$(MyNo, 1, 1)) > 0) And ((Mid$(MyNo, 2, 2)) > 0) Then My100 = My100 + MyAnd
If ((Mid$(MyNo, 3, 1)) > 0) And ((Mid$(MyNo, 2, 1)) > 1) Then My1 = My1 + MyAnd

GetTxt = My100 + My1 + My10

If ((Mid$(MyNo, 3, 1)) = 1) And ((Mid$(MyNo, 2, 1)) = 1) Then
GetTxt = My100 + My11
If ((Mid$(MyNo, 1, 1)) = 0) Then GetTxt = My11
End If

If ((Mid$(MyNo, 3, 1)) = 2) And ((Mid$(MyNo, 2, 1)) = 1) Then
GetTxt = My100 + My12
If ((Mid$(MyNo, 1, 1)) = 0) Then GetTxt = My12
End If

If (i = 0) And (GetTxt <> "") Then
If ((Mid$(MyNo, 1, 3)) > 10) Then
Mybillion = GetTxt + " ãáíÇÑ"
Else
Mybillion = GetTxt + " ãáíÇÑÇÊ"
If ((Mid$(MyNo, 1, 3)) = 2) Then Mybillion = " ãáíÇÑ"
If ((Mid$(MyNo, 1, 3)) = 2) Then Mybillion = " ãáíÇÑÇä"
End If
End If

If (i = 3) And (GetTxt <> "") Then

If ((Mid$(MyNo, 1, 3)) > 10) Then
MyMillion = GetTxt + " ãáíæä"
Else
MyMillion = GetTxt + " ãáÇííä"
If ((Mid$(MyNo, 1, 3)) = 1) Then MyMillion = " ãáíæä"
If ((Mid$(MyNo, 1, 3)) = 2) Then MyMillion = " ãáíæäÇä"
End If
End If

If (i = 6) And (GetTxt <> "") Then
If ((Mid$(MyNo, 1, 3)) > 10) Then
MyThou = GetTxt + " ÃáÝ"
Else
MyThou = GetTxt + " ÂáÇÝ"
If ((Mid$(MyNo, 3, 1)) = 1) Then MyThou = " ÃáÝ"
If ((Mid$(MyNo, 3, 1)) = 2) Then MyThou = " ÃáÝÇä"
End If
End If

If (i = 9) And (GetTxt <> "") Then MyHun = GetTxt
If (i = 12) And (GetTxt <> "") Then MyFraction = GetTxt
End If

i = i + 3
Loop

If (Mybillion <> "") Then
If (MyMillion <> "") Or (MyThou <> "") Or (MyHun <> "") Then Mybillion = Mybillion + MyAnd
End If

If (MyMillion <> "") Then
If (MyThou <> "") Or (MyHun <> "") Then MyMillion = MyMillion + MyAnd
End If

If (MyThou <> "") Then
If (MyHun <> "") Then MyThou = MyThou + MyAnd
End If

If MyFraction <> "" Then
If (Mybillion <> "") Or (MyMillion <> "") Or (MyThou <> "") Or (MyHun <> "") Then
NoToTxt = ReMark + Mybillion + MyMillion + MyThou + MyHun + " " + MyCur + MyAnd + MyFraction + " " + MySubCur
Else
NoToTxt = ReMark + MyFraction + " " + MySubCur
End If
Else
NoToTxt = ReMark + Mybillion + MyMillion + MyThou + MyHun + " " + MyCur
End If

End Function

بعد ذلك إذهب لشاشة فواتير الشراء وضع زر وتحت حدث الضغط علي هذا الزر أكتب هذا الكود

DoCmd.OpenReport "invoice", acViewPreview, , "[Add_doc]='" & Me.Add_doc & "'"

وهذا الكود مهمته عرض الفاتورة الحاليه التي تظهر أمامك في شاشة فواتير الشراء

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

بذلك نكون قد صممنا أول تقريرين للبرنامج تقرير يعرض فاتورة الشراء وتقرير آخر لعرض

فواتير البيع

وإن شاء في الدرس القادم سنري مزيد من التقارير إن شاء الذي ستفيد البرنامج بإذن الله

مرفق القاعدة علي آخر تعديل

Warehouses_System.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

اخى الحبيب محمد فؤاد ترك

بصراحه اخى الحبيب ابهرت الجميع بهذا المجهود الجبار

وهذا الاخلاص فى الشرح

فقد لمست موضوع فعلا من اخطر الموضوعات فى مجال البرمجه وهو موضوع المخازن والعملاء

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

متابعين معك اخى العزيز بل استاذنا العزيز

بارك الله فيك والى الامام دائما

ومن خلال تصفحى لمنتدانا الحبيب منتدى الفريق العربى

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

وهذا ماحدث معى بالفعل

بارك الله فيك اخى الحبيب ومعك للنهايه

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

والاخوة المشاركين بالمنتدى

وخالص تحياتى

اخوك / ماهر بدوى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

بسم الله الرحمن الرحيم

بارك الله فيك اخي الكريم

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

وكنت فعلا احتاج الى معرفة كيفية عمل مثل ذلك وخاصة عدم تناول مثل هذه النقطة في المنتديات

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

بارك الله فيك اخي الكريم في رزقك وصحتك وعلمك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

الاخ محمد فؤاد تركي شكرا الله لك جهدك المبارك

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

عندما رايت المشاركة الاولى كنت اتسائل عن كيفية اظهار المخزون الحالي (ضننت انه سيكون هناك جدول خاص بالمخزون) ولكن فضلت الانتظار مشاركاتك القادمة

تحية لك على عمللك المميز

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

أخي الغالي maherbadawey

بارك الله فيك ويعطيك ألف عافية

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

أخي الغالي sx1

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

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

balance.jpg

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

balance2.jpg

وهذه الجمله البسيطة المستخدمه في احتساب الرصيد . . .

Balance: [sumofqty_in]-[sumofqty_out]

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

report(1).jpg

والان نريد عمل نموذج يتم من خلاله استعداء أرصدة المخازن

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

DoCmd.OpenReport "رصيد المخازن", acViewPreview

ســــــؤال : - هل تريد إضافة بعض الملح والفلفل والتوابل علي هذا النموذج الذي يعرض رصيد المخزن

الاجابة : - أكيد

حسننا تعالي نتعلم كيفية عمل Progressbar عندما نضغط علي الزر يفيدنا هذا الــ Progressbar بتحميل التقرير

إذهب لقائمة Insert ثم اختار ActiveX control ثم اختار كما هو موضح بالصورة

progr.jpg

وفي حدث الحالي Oncurrent ضع هذا الكود لاخفاء هذا الشريط

Me.ProgressBar.Visible = False

أيضا في حدث الضغط علي الزر ضع هذا الكود

Private Sub Command0_Click()
On Error Resume Next
Dim I As Integer
ProgressBar.Visible = True
For I = I To 10000
ProgressBar.Value = I
If I = 10000 Then
ProgressBar.Visible = False
End If
Next I
DoCmd.OpenReport "رصيد المخازن", acViewPreview
End Sub

وذلك لتشغيل الـ Progressbar وفتح التقرير بعد تشغيله

ولا تنسي تغيير مده تشغيل Progressbar من خلال الضغط علي خصائصه ومن تبويب General اختار MAx ثم قم يتغيير قيمتها من 100 الي 10000

وهذه القيمة هي المده الذي سيتغرقها الــ Progressbar علي النموذج

تحياتي ولنا تكمله ان شاء الله

مرفق الملف وبه آخر تعديل

Warehouses_System.rar

5

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

أخي الغالي Whale

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

lol:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

اخى الحبيب محمد فؤاد

ارجو التركيز على موضوع الرصيد بين تاريخين او عن فترة محددة

وكذلك على رصيد ماقبله

لما لهذا البيان من اهميه عند عمل التقارير

وتقبل تحياتى

وكنت اتمنى لو كان لدى الخبرة الكافية لمعاونتك فى هذا البرنامج

وعموما نحن معك بقلوبنا

اخوك / ماهر بدوى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 1

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

أخي الغالي ماهر بدوي

أخي الغالي has_1975

بارك الله فيكم جميعاً لكن لو صبر القاتل علي المقتول كان مات لوحدة ان شاء الله سأضع في الحسبان كل القارير المطلوبه للمشروع إن شاء الله :lol:

أستهل هذا الدرس بالصلاة والسلام علي أشرف المرسلين سيدنا محمد صلي الله عليه وسلم

سؤال : - هل يجوز عدم حذف أي أصناف من شاشة دليل أصناف المخازن قد تم عمل عليها عمليات من قبل في شاشات فواتير الشراء والبيع ؟؟

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

If MsgBox("هل تريد حذف هذا الصنف ؟", vbYesNo + vbCritical + vbMsgBoxRight + vbDefaultButton2, "تحذير") = vbNo Then
Exit Sub
Else
If DCount("*", "Transaction", "number = Forms![names]![number]") > 0 Then
MsgBox " لا يمكنك حذف هذا الصنف من شاشة دليل الاصناف لوجود عمليات علي هذا الصنف ", vbCritical, "خطأ"
Exit Sub
Else
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdDeleteRecord
Refresh
DoCmd.SetWarnings True
End If
End If

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

11(1).jpg

آسف لعدم شرح كميه كبيرة من البرنامج نظراً لضيق وقتي وان شاء الله سيتم شرح مساحة أكبر من ذلك في المرة القادمة

مرفق القاعدة عند آخر تعديل

Warehouses_System.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

أخواني الاعضاء

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

سنبدأ اليوم علي بركة الله بتصميم تقرير من أهم التقارير المستخدمة في نظام المخازن وهو تقرير الاستعلام عن حركة صنف معين

أولاً : - سنقوم بإنشاء استعلام ونضع فيه الجدوال التالية كما هو موضح بالصورة المرفقة

trans_1.jpg

وهذا الاستعلام يتم من خلاله الاستعلام عن حركة الصنف خلال السنه الماليه

قم ببناء تقرير ومصدر بياناتة يعتمد علي هذا الاستعلام . . . بعد تصميمك للتقرير ستجد مجموعة من الحقول مكررة

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

=[date1] & " " & [date2]

بعد تصميم التقرير سيصبح شكل التقرير كالشكل التالي

trans_2.jpg

أيضا سنحلاظ أننا استعملنا بالتقرير حق محسوب وهو حقل احتساب الرصيد من خلال الكود التالي

=[qty_in]-[qty_out]

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

trans_3.jpg

والان بعد تصميم التقرير سنذهب سوياً لاستعراض هذا التقرير عن طريق نموذج

سنقوم الان بتصميم نموذج يحتوي علي عدد 2 مربع نص غير منضمين وزر وتحت حدث الضغط علي هذا الزر هذا الكود الذي يستدعي التقرير الحالي

DoCmd.OpenReport "Item_Transaction", acViewPreview, , "[number]='" & Me.T1 & "'"

أيضاً في حقل T1 وهو يرمز لكود الصنف يتم وضع الكود التالي

Private Sub T1_AfterUpdate()
[t2] = DLookup("[Name]", "Names", "Number=[t1]")
If IsNull(DLookup("[number]", "names", "[number]='" & [T1] & "'")) Then
MsgBox " هذا الكود غير موجود بدليل الاصناف", vbCritical
Cancel = -1
End If
End Sub

وهذا الكود مهمتة استعداء كود الصنف المراد الاستعلام عنه

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

trans_4.jpg

بذلك نكون قد انتهينا من عمل تقرير لحركة صنف وهو من أهم التقارير لدينا

مرفق القاعدة بعد آخر تعديل

-waf

Warehouses_System.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .