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

مشروع تسيير مخازن بسيط

رائج
بدأه علي .ع في 29 أغسطس 2008 · 390 رد · 76,879 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#126

هي مكونات Shape و Dbgrid قمت ببعض التعدلات عليها لتصبح بالشكل الذي رايته

ارفقت لك الفورم

حاول ان تقلده فهو ليس بالشيء الصعب

stock.rar

اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا

#127

السلام عليكم

أخي علي إلى الآن لم أعرف أين أوجه تفكيري

في جدول المخزون لم أجد معرف للمادة فكيف ستنقل وعلى أي أساس لا أعرف

انني بحاجة لبعض الشرح منك لو سمحت

#128

وعليكم السلام

فيما يخص معرف المادة يبدو اني نسيت تاييده :D

العملية التي سنقوم بها تندرج ضمن عمليات الادخال

المخزون الاولي ياخذ قيمة المخزون النهائي في مرحلته السابقة

والمخزون النهائي يساوي المخزون الاولي يضاف اليه عملية الادخال او يحذف منه بعملية الاخر ونحن هنا سنخدل سلع

اتمنى ان اكون وفقت في الشرح تعديل جدول المخزون بالمرفق

ss.rar

اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا

#129

السلام عليكم

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

ثم هل سيكون هناك ربط بين جدول المخزون وجدول الطلبيات

أسف على أسئلتي الكثيرة , فهذه أول مرة أقوم بهكذا عمل .

#130

سيكون الادخال عن طريق الطلبية طبعا

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

اريد ان ارى منك كيف ستتصرف

اما بخصوص الربط فسناجله الى حين

كما اريد منك طلبا ان تنسى جملة

اقتباس
أسف على أسئلتي الكثيرة , فهذه أول مرة أقوم بهكذا عمل

واذا واجهتك مشاكل فانا جاهز

بالتوفيق

تم تعديل هذه المشاركة بواسطة علي .ع في 20 أكتوبر 2008 في 15:47

اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا

#131

شكرا ً أخي علي

#132

السلام عليكم

أخي علي لقد حاولت القيام بذلك بعدة محاولات

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

أو قد أكون بعيد عن الحل

فقد حاولت استخدام if الشرطية بأكثر من طريقة

يعني

أن يذهب المنتج إلى جدول المخزون بشرط أن لا يكون مسجلا ً من قبل , وإذا كان مسجل تنتقل الكمية فقط على أن تجمع مع الكمية التي قبلها ,

يبدوا إنها أهم مرحلة في المشروع. :excl:

بانتظار توجيهاتك

بالتوفيق

#133

اخ طلال

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

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

حاول ان ترفق الاكواد هنا وساعدل عليها ان شاء الله

بالتوفيق

اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا

#134

أخي علي

أعرف ماهي النواقص ولكن ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ : :wacko:

stock1.rar

#135

كبداية لاباس

لكن اين بقية الحقول

هنا سنقوم بعملية اداخل

سيكون ايضا هناك مخزون اولي وهو قبل عملية الادخال ومخزون نهائي يكون مجموع عملية الادخال والمخزون الاولي (المخزون قبل العملية)

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

وفقنا الله واياكم

اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا

#136

السلام عليكم

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

#137

ممكن توضيح أكثر أخي الكريم , ماهو الخطأ

#138
اقتباس
لقد رأيت تصميم قاعدة البيانات في بداية الموضوع ، حيث أنه توجد أخطاء تصميمية في قاعدة بيانات المخزون 2FN

لعلمك لم استخدم طريقة مريز

لكن هل درست المشروع جيدا وتجد فيه شيئا غير معقول

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

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

مارايك اخ طلال انت تتبعتني في المشروع

تم تعديل هذه المشاركة بواسطة علي .ع في 22 أكتوبر 2008 في 01:21

اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا

#139

أنا معك أخي علي أينما ذهبت وكيفما ذهبت

بالتوفيق إن شاء الله

#140

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

اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا

#141

إطلاقا ً أخي علي

إنني أرى البرنامج ورائع .

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

بارك الله بك وبعملك

#142

أخي علي إذا كان المخزون الأولي قبل عملية الإدخال , فمن أين ستأتي كمية المخزون الأولي إذا لم تكن عن طريق الإدخال

كنت أتوقع إنها تأخذ من المدخلات .

أو هل تأخذ من جدول المنتجات أولاً وتكون قيمتها = 0 ??????

سؤال : أذا كان عندي بندين أو أكثر في جدول الطلبية , فإنه ينتقل إلى جدول المخزون البند الأول فقط

بالتوفيق

#143

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

اسف على التاخير خط الانترنت عندي معطل

اقتباس
فمن أين ستأتي كمية المخزون الأولي إذا لم تكن عن طريق الإدخال

اذا كان الجدول فارغ عليك ان تؤيده صفر اما اذا كان به تسجيلات فهو ياخذ قيمة المخزون النهائي

اقتباس
سؤال : أذا كان عندي بندين أو أكثر في جدول الطلبية , فإنه ينتقل إلى جدول المخزون البند الأول فقط

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

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

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

الى ذلك الحين بالتوفيق

تم تعديل هذه المشاركة بواسطة علي .ع في 23 أكتوبر 2008 في 15:17

اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا

#144

أخي علي

حتى كيفما أعبر عن المشكلة لاأعرف

إذا أردنا أن نجعل الكمية في جدول المخزون النهائي , فمثلا ً المنتج رقم 1 هل سيمثله سطر واحد من الجدول يعطي مجموع الكمية الموجودة أم ماذا , لأن كل سطر مرتبط برقم الطلبية ورقم المادة فسوف يكون هناك تكرار لرقم المنتج في المخزون النهائي

وكذلك الأمر بالنسبة للمخزون الأولي

شكرا لك

#145

السلام عليكم

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

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

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

وبخصوص الاخ طلال احيي فيه روح طلب العلم وحب التعلم

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

#146

السلام عليكم

الله يعطيكم العافية على هذا المجهود الرائع

لو تسمحولي أشارك معكم :blush:

أود أن أقدم أقتراح بخصوص حساب الكمية الأولية للمنتج

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

تم تعديل هذه المشاركة بواسطة rober في 24 أكتوبر 2008 في 15:14

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

#147
اقتباس
الله يعطيكم العافية على هذا المجهود الرائع

لو تسمحولي أشارك معكم

الله يعافيك اخي Rober

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

ويبدو انك تفكر مثلي هذا ما كنت احاول ايصاله

اقتباس
حتى كيفما أعبر عن المشكلة لاأعرف

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

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

if DM.TStock.RecordCount =0 then
begin
DM.Article2.First;
while not DM.Article2.eof do
begin
DM.TStock.Filtered:=False;
DM.TStock.Filter:='Code_Article='+DM.Article2Code_Article.Text;
DM.TStock.Filtered:=True;
DM.TStock.Append;
DM.TStock.FieldByName('Qts_si').Value:=0;
DM.TStock.FieldByName('Pu_si').Value:=0;
DM.TStock.FieldByName('MOn_si').Value:=0;
DM.TStock.FieldByName('N_Fact_Bon').Value:=StrToFloat(DBEdit1.Text);
DM.TStock.FieldByName('Date_F_C').Value:=DateTimePicker1.Date;
DM.TStock.FieldByName('Code_Cli_four').Value:=StrToFloat(Edit1.Text);
DM.TStock.FieldByName('Remarque').Value:=DBEdit2.Text;
DM.TStock.FieldByName('Qts_e').Value:=DM.Article2.FieldByName('Quantite').Value;
DM.TStock.FieldByName('Pu_e').Value:=DM.Article2.FieldByName('Prix_d_Achat').Value;
DM.TStock.FieldByName('MOn_e').Value:=DM.Article2.FieldByName('Quantite').Value * DM.Article2.FieldByName('Prix_d_Achat').Value;
DM.TStock.FieldByName('Code_Article').Value:=DM.Article2.FieldByName('Code_Article').Value;
DM.TStock.FieldByName('Qts_f').Value:=DM.TStock.FieldByName('Qts_si').Value +DM.TStock.FieldByName('Qts_e').Value;
DM.TStock.FieldByName('Pu_f').Value:=DM.TStock.FieldByName('Pu_si').Value+DM.TStock.FieldByName('Pu_e').Value;
DM.TStock.FieldByName('MOn_f').Value:=DM.TStock.FieldByName('MOn_si').Value +DM.TStock.FieldByName('MOn_e').Value;

DM.TStock.Post;
DM.TStock.Filtered:=False;
DM.Article2.Next;
end;
end

تلا حظ اننا استخدمنا التعليمة Append بدل التعليمة Insert لماذا هنا في هذا المثال يهمنا الترتيب جدا

والتعليمة Append تدرج بعد اخر تسجيلة في الجدول اما التعليمة Insert فتدرج بعد التسجيلة المتوقف عندها المؤشر وهذا لا يخدمنا

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

اعطينا القيمة 0 الاولية للكل من المخزون الاولي والكمية الاولية والسعر الاولي

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

اما في حالة وجدود تسجيلات فهذا الكود يلبي الطلب

else
begin
DM.Article2.First;
while not DM.Article2.eof do
begin
DM.TStock.Filtered:=False;
DM.TStock.Filter:='Code_Article='+DM.Article2Code_Article.Text;
DM.TStock.Filtered:=True;
DM.TStock.Append;
DM.TStock.FieldByName('N_Fact_Bon').Value:=StrToFloat(DBEdit1.Text);
DM.TStock.FieldByName('Date_F_C').Value:=DateTimePicker1.Date;
DM.TStock.FieldByName('Code_Cli_four').Value:=StrToFloat(Edit1.Text);
DM.TStock.FieldByName('Remarque').Value:=DBEdit2.Text;
DM.TStock.FieldByName('Qts_si').Value:=StrToFloat(v1);
DM.TStock.FieldByName('Pu_si').Value:=StrToFloat(v2);
DM.TStock.FieldByName('MOn_si').Value:=StrToFloat(v3);
DM.TStock.FieldByName('Qts_e').Value:=DM.Article2.FieldByName('Quantite').Value;
DM.TStock.FieldByName('Pu_e').Value:=DM.Article2.FieldByName('Prix_d_Achat').Value;
DM.TStock.FieldByName('MOn_e').Value:=DM.Article2.FieldByName('Quantite').Value * DM.Article2.FieldByName('Prix_d_Achat').Value;
DM.TStock.FieldByName('Code_Article').Value:=DM.Article2.FieldByName('Code_Article').Value;
DM.TStock.FieldByName('Qts_f').Value:=DM.TStock.FieldByName('Qts_si').Value +DM.TStock.FieldByName('Qts_e').Value;
DM.TStock.FieldByName('Pu_f').Value:=DM.TStock.FieldByName('Pu_si').Value+DM.TStock.FieldByName('Pu_e').Value;
DM.TStock.FieldByName('MOn_f').Value:=DM.TStock.FieldByName('MOn_si').Value +DM.TStock.FieldByName('MOn_e').Value;
DM.TStock.Post;
DM.Article2.Next;
end;
end;

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

ومن ثم تبدا الاضافة

شي اخر يجب ان تصرح بالمتغيرات V1 V2 V3

اخير ضع هذا الكود في الحدث BeforeInsert للمكون TTable الذي اسميناه TStock

DM.TStock.Filtered:=False;
DM.TStock.Filter:='Code_Article='+DM.Article2Code_Article.Text;
DM.TStock.Filtered:=True;
DM.TStock.Last;
v1:=DM.TStockQts_f.Text;
v2:=DM.TStockPu_f.Text;
v3:=DM.TStockMon_f.Text;
DM.TStock.Filtered:=False;

اتمنى انك قد وفقت في الشرح ان شاء الله

وفقنا الله واياكم

تم تعديل هذه المشاركة بواسطة علي .ع في 24 أكتوبر 2008 في 19:05

اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا

#148

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

Mohamed-Riadh كتب:
وبخصوص الاخ طلال احيي فيه روح طلب العلم وحب التعلم

شكرأ لك أخي محمد

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

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

شكرأ لك

#149

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

شكرا ً أخي علي على هذا الشرح

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

post-169385-1224969773_thumb.jpg

بالتوفيق

#150

أخي طلال تأكد من القيم

DM.TStock.FieldByName('N_Fact_Bon').Value:=StrToFloat(DBEdit1.Text);
DM.TStock.FieldByName('Code_Cli_four').Value:=StrToFloat(Edit1.Text);

فالمشكلة نتجت عن تحويل قيمة string فارغة إلى float و هذا غير مسموح

أرجو الفائدة

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

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

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

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

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

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