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

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

رائج
بدأه محمد فؤاد تركي في 2 مايو 2007 · 518 رد · 527,857 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#101

أخي الغالي Wise

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

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

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

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 22 أكتوبر 2007 في 20:06

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#102

أخى محمد

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

تهنئتان كبيرتان

الأولى نهنئ أنفسنا بموضوعك وشرحك القيم لعمل هذا البرنامج وصبرك ( ماشاء الله عليك )

الثانية

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

بارك الله بك

وبارك لك بدينك ودنياك

وعلمك وعملك

وأهلك

وجعلك باراً بوالديك

وجعل أبنائك بارين بك

وأدخلك جنات النعيم

#103

أخي الغالي sartar

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

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

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

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#104

اخي الكريم

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

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

ولكن بدون حفظ اسم الصنف في جدول ال Transaction

ما دام هناك جدول خاص بالاصناف به كود الصنف و اسم الصنف اذن لا ضروة لحفظ اسم الصنف مرة اخرى في جدول االـ Transaction

هذا ما وددت اخبارك به

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

جزيت عنا خيرا اخي محمد فؤاد تركي

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

#106

الاخوة الزملاء

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

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

أولاً : - لكيفية احتساب أو استخراج حساب العميل يجب توافر لدينا عدة جداول رئيسية لاستخراج حساب العميل

أ – جدول فواتير البيع والذي اسمة بقاعدة البيانات issue_doc

ب – جدول العملاء والذي اسمة بقاعدة البيانات Customers

جـ - جدول تسجيل سندات القبض والذي اسمة بقاعدة البيانات receipt_voucher

د – جدول تسجيل حركات الصنف والذي اسمة بقاعدة البيانات Transaction

هذه هي الجداول الرئيسية المطلوبة لاستخراج حساب العميل

ثانياً : - نبدأ في النظر الي شكل العلاقة الان والتي تظهر كيفية ربط جدول العملاء بفواتير البيع كما في الشكل التالي

relationdm3.jpg

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

ليصبح شكل النموذج كما في الشكل التالي

receiptvoucherwd2.jpg

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

SELECT customers.customers, "-" AS Receipt_voucher, issue_doc.issue_doc, Sum(Transaction.total) AS Depit, 0 AS credit,customers.home,customers.mobil, customers.job,customers.address,issue_doc.zdateFROM customers INNER JOIN (issue_doc INNER JOIN [Transaction] ON issue_doc.issue_doc = Transaction.issue_doc) ON customers.customers = issue_doc.customerGROUP BY customers.customers, "-", issue_doc.issue_doc,customers.home,customers.mobil, customers.job,customers.address,issue_doc.zdate

UNION SELECT

 customers.customers, Receipt_voucher.Receipt_voucher, "-" AS issue_doc, 0 AS depit, Receipt_voucher.LE AS Credit, customers.home,customers.mobil, customers.job,customers, Receipt_voucher.DateFROM (customers INNER JOIN issue_doc ON customers.customers = issue_doc.customer) INNER JOIN Receipt_voucher ON customers.customers = Receipt_voucher.[Received from];

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

quryyn1.jpg

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

rrrbq3.jpg

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

Private Sub Report_Open(Cancel As Integer)
DoCmd.Maximize
End Sub

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

MsgBox "لاتوجد بيانات للطباعة", vbInformation, "تحذير"

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

formhd3.jpg

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

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

DoCmd.OpenReport "Account Receivables", acViewPreview, , "[customers]='" & Me.Combo0 & "'"

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

DoCmd.RunCommand acCmdZoom100

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

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

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

Private Sub Command2_Click()
If IsNull([Combo0]) Then
MsgBox "يجب عليك أولاً اختيار اسم العميل", vbCritical, "warning"

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

Private Sub Combo0_KeyDown(KeyCode As Integer, Shift As Integer)
KeyCode = 0
End Sub

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

والي لقاء آخر مع استكمال بناء البرنامج وحساب آخر وهو حساب المورد

مرفق البرنامج بعد إجراء آخر تعديل

Warehouses_System_up.rar

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 15 أكتوبر 2008 في 22:58

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#107

جزاك الله خيرا اخي الكريم

شرح جميل للغاية

كنت دائما ابحث عن دروس من هذه النوعية

#108

يا اخ محمد تركي لو تستخدم الfpspread يكون البرنامج افضل

▲ -1
#110

والله لو أعرف انا كمان اية هو الــ fpspread كنت رديت لكن انا حاولت أبحث عن طريق محركات البحث بدلالة هذا الاسم وجدت ان الموضوع له علاقة بالاكسل والــ VB.NETواذا كان الاخ صالح فاضل عنده شيء يفيد البرنامج بهذه الطريقة او يوضع شرح ولو بسيط عن FpSpread لانني لا اعرف عنه شيء

وشكراً

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 30 أكتوبر 2007 في 15:17

▲ -1

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#111

جزاك الله خيرا اخي محمد التركي

دروسك شيقة و مفيدة

خاصة اسلوب تصميم الجداول و الربط بعضها و بعض و كذلك الاستعلامات

نحن في انتظار تكملة موضوع الاكثر من رائع

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

ربنا يعنك

▲ -1
#112

أخي الغالي Wise

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

وشكراً علي مرورك الطيب انت انسان مجتهد ربنا يوفقك فيما تسعي اليه

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

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

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 30 أكتوبر 2007 في 22:44

▲ 1

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#113
محمد فؤاد تركي كتب:
الاخوة الزملاء

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

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

أخي الغالي / محمد تركي

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

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

للتنويه فقط : أثناء فتح النمو>ج الخاص بحساب عميل في حالة حدث عدم وجود بيانات تكرار الرسالة عدم وجود بيانات مرتين بسبب عدم وجود Cancel=-1

وأضفت الى الكود On error goto لتحاشي وجود خطأ في الكود

Private Sub Report_NoData(Cancel As Integer)

MsgBox "NO DATA FOUND, vbInformation,MOHAMED TURKI"

Cancel = -1

End Sub

أخي تشكر على المجهود واللهم إجعله في ميزان حسناته ... اللهم آمين آمين آمين

مع أطيب تحياتي لك بالتوفيق

▲ -1

[يمين]

إذا كـان تـرك الـدين يعــنــي تقــدمــاً

فـيا نفــس مـوتــي قبــل أن تتقـدمــي

[/يمين]

#114

الله يعطيك ألف عافية يا أخي الغالي كمال النحال

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

والله المستعان

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 1 نوفمبر 2007 في 12:26

▲ -1

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#115

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

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

▲ -1
#116

مشكو اخي على الجهد الرائع لكن ماهو سبب تكرر البيانات فى ارصدة المخزون

54.bmp

▲ -1
#117

أختي الغالية

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

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 3 نوفمبر 2007 في 10:36

▲ -1

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#118

نحن متتظرين اخي دروسك القيم عندما يسمح وقتك بذلك

▲ 1
#119

جعل الله ما كتبت في ميزان حسناتك يوم القيامة

▲ -1
#120

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

شكرا ليك علي هذا الشرح الرائع وازعم اني استفدت منه ولكن وقفت امامي جزئية

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

وشكرا

▲ 1
#121

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

نحن في انتظار بقية الدروس الرائعة الخاصة بك

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

▲ -1
#122

الاخ محمد فؤاد تركي جزاك الله خير ونفع بك الامة

بس عندي ملاحظة بسيط في عملية الخصم عندما اخصم على صنف مثلاً 10 في الفاتورة الناتج يصبح مخصوم 20 في اجمالي الفاتورة

▲ 1
#123

اخي محمد الف شكر على هذا العمل الذي فيه فائدة للجمبع

واطلب منك المساعدة ببرنامجك

1- فاتورة الشراء

اذا كان عندي موردين ولكل مورد نفس رقم الفاتورة مثلا" 1 فما يقبلها

2- وكذلك رقم السند

3- بالبحث وضعت سعر جدبد للمادة مثلا" اسمنت..... اللسعر الاول 10 السعر الثاني 5

فعند البحث يظهر السعر الاول فقط

ولك التحية

▲ -1
#124

الاخوة الزملاء

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

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

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

أولاً : - لكيفية احتساب أو استخراج حساب المورد يجب توافر لدينا عدة جداول رئيسية لاستخراج حساب المورد

أ – جدول فواتير الشراء والذي اسمة بقاعدة البيانات Add_doc

ب – جدول الموردين والذي اسمة بقاعدة البيانات Suppliers

جـ - جدول تسجيل سندات الدفع والذي اسمة بقاعدة البيانات Account_Payable

د – جدول تسجيل حركات الصنف والذي اسمة بقاعدة البيانات Transaction

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

ثانياً : - نبدأ في النظر الي شكل العلاقة الان والتي تظهر كيفية ربط جدول الموردين بفواتير الشراء كما في الشكل التالي

40478106ma1.jpg

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

ليصبح شكل النموذج كما في الشكل التالي

92932056qx1.jpg

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

SELECT suppliers.suppliers, "-" AS Account_Payable, add_doc.add_doc, Sum(Transaction.total) AS Depit, 0 AS credit,suppliers.home,suppliers.mobil, suppliers.job,suppliers.address,add_doc.zdate
FROM suppliers INNER JOIN (add_doc INNER JOIN [Transaction] ON add_doc.add_doc = Transaction.add_doc) ON suppliers.suppliers = add_doc.supplier
GROUP BY suppliers.suppliers, "-", add_doc.add_doc,suppliers.home,suppliers.mobil, suppliers.job,suppliers.address,add_doc.zdate
UNION SELECT suppliers.suppliers, Account_Payable.Account_Payable, "-" AS add_doc, 0 AS depit,Account_Payable.LE AS Credit, suppliers.home,suppliers.mobil, suppliers.job,suppliers,Account_Payable.Date
FROM (suppliers INNER JOIN add_doc ON suppliers.suppliers = add_doc.supplier) INNER JOIN Account_Payable ON suppliers.suppliers = Account_Payable.[To Pay];

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

63267189nr3.jpg

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

16617465be8.jpg

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

Private Sub Report_Open(Cancel As Integer)
DoCmd.Maximize
End Sub

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

MsgBox "لاتوجد بيانات للطباعة", vbInformation, "تحذير"

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

90262152jl1.jpg

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

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

DoCmd.OpenReport "Account_Payable", acViewPreview, , "[ٍSuppliers]='" & Me.Combo1 & "'"

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

DoCmd.RunCommand acCmdZoom100

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

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

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

Private Sub Command2_Click()
If IsNull([Combo1]) Then
MsgBox "يجب عليك أولاً اختيار اسم المورد", vbCritical, "warning"

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

Private Sub Combo0_KeyDown(KeyCode As Integer, Shift As Integer)
KeyCode = 0
End Sub

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

والي لقاء آخر

مرفق البرنامج بعد إجراء آخر تعديل

Warehouses_System_up.rar

−1▲ -1

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#125

مجهود محترم للغاية ... اشكرك على حسن الأداء

▲ -1

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