مشروع تسيير مخازن بسيط
السلام عليكم
أخي علي إلى الآن لم أعرف أين أوجه تفكيري
في جدول المخزون لم أجد معرف للمادة فكيف ستنقل وعلى أي أساس لا أعرف
انني بحاجة لبعض الشرح منك لو سمحت
وعليكم السلام
فيما يخص معرف المادة يبدو اني نسيت تاييده :D
العملية التي سنقوم بها تندرج ضمن عمليات الادخال
المخزون الاولي ياخذ قيمة المخزون النهائي في مرحلته السابقة
والمخزون النهائي يساوي المخزون الاولي يضاف اليه عملية الادخال او يحذف منه بعملية الاخر ونحن هنا سنخدل سلع
اتمنى ان اكون وفقت في الشرح تعديل جدول المخزون بالمرفق
اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا
السلام عليكم
هل جدول المخزون يحتوي مسبقا ً على المنتجات أم أول إدخال للمنتجات سيكون عن طريق الطلبية
ثم هل سيكون هناك ربط بين جدول المخزون وجدول الطلبيات
أسف على أسئلتي الكثيرة , فهذه أول مرة أقوم بهكذا عمل .
سيكون الادخال عن طريق الطلبية طبعا
ستواجهك مشكلة في اول ادخال طبعا لانه ليس هناك تسجيلات قبلها تاخذ منها قيم المخزون النهائي والمخزون الاولي
اريد ان ارى منك كيف ستتصرف
اما بخصوص الربط فسناجله الى حين
كما اريد منك طلبا ان تنسى جملة
اقتباسأسف على أسئلتي الكثيرة , فهذه أول مرة أقوم بهكذا عمل
واذا واجهتك مشاكل فانا جاهز
بالتوفيق
تم تعديل هذه المشاركة بواسطة علي .ع في 20 أكتوبر 2008 في 15:47
اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا
السلام عليكم
أخي علي لقد حاولت القيام بذلك بعدة محاولات
قد أكون أقتربت من الطريق الصحيح ولكن بالتصور فقط لأنني لاأعرف التعليمات التي يجب استخدامها
أو قد أكون بعيد عن الحل
فقد حاولت استخدام if الشرطية بأكثر من طريقة
يعني
أن يذهب المنتج إلى جدول المخزون بشرط أن لا يكون مسجلا ً من قبل , وإذا كان مسجل تنتقل الكمية فقط على أن تجمع مع الكمية التي قبلها ,
يبدوا إنها أهم مرحلة في المشروع. :excl:
بانتظار توجيهاتك
بالتوفيق
اخ طلال
رقم المنتج يرسل الى جدول المخزون سواء كان كان من قبل او لا لانه متعلق بالطلبية
التعليمات قد استخدمنها في السابقلترحيل البيانات من جدول الى اخر مع بعض التعديلات فقط
حاول ان ترفق الاكواد هنا وساعدل عليها ان شاء الله
بالتوفيق
اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا
كبداية لاباس
لكن اين بقية الحقول
هنا سنقوم بعملية اداخل
سيكون ايضا هناك مخزون اولي وهو قبل عملية الادخال ومخزون نهائي يكون مجموع عملية الادخال والمخزون الاولي (المخزون قبل العملية)
اتمنى ان تكون قد اتضحت الصورة اخ طلال ونحن بصدد احد اهم النقاط في المشروع كما قلت
وفقنا الله واياكم
اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا
السلام عليكم
لقد رأيت تصميم قاعدة البيانات في بداية الموضوع ، حيث أنه توجد أخطاء تصميمية في قاعدة بيانات المخزون 2FN
ممكن توضيح أكثر أخي الكريم , ماهو الخطأ
اقتباسلقد رأيت تصميم قاعدة البيانات في بداية الموضوع ، حيث أنه توجد أخطاء تصميمية في قاعدة بيانات المخزون 2FN
لعلمك لم استخدم طريقة مريز
لكن هل درست المشروع جيدا وتجد فيه شيئا غير معقول
ترقب نهاية المشروع
نحن نسير بخطى ثابتة اخي الكريم والبرنامج يعمل بشكل سلس وسهل جدا ولم يشتكي منه اي احد
مارايك اخ طلال انت تتبعتني في المشروع
تم تعديل هذه المشاركة بواسطة علي .ع في 22 أكتوبر 2008 في 01:21
اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا
أنا معك أخي علي أينما ذهبت وكيفما ذهبت
بالتوفيق إن شاء الله
اخي طلال اسالك عن المشروع الذي قمت به معي هل تجد فية اي شيء غير عقلاني
اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا
إطلاقا ً أخي علي
إنني أرى البرنامج ورائع .
إنني بعملي محاسب , ومسؤول عن تسيير أمور المستودعات , صدقني لقد تخلينا عن ثلاث برامج مستودعات لتعقيدها . وإلى الأن أراه البرنامج الأنسب والذي يخدم بشكل, أفضل معي على الأقل .
بارك الله بك وبعملك
أخي علي إذا كان المخزون الأولي قبل عملية الإدخال , فمن أين ستأتي كمية المخزون الأولي إذا لم تكن عن طريق الإدخال
كنت أتوقع إنها تأخذ من المدخلات .
أو هل تأخذ من جدول المنتجات أولاً وتكون قيمتها = 0 ??????
سؤال : أذا كان عندي بندين أو أكثر في جدول الطلبية , فإنه ينتقل إلى جدول المخزون البند الأول فقط
بالتوفيق
السلام عليكم ورحمة الله وبركاته
اسف على التاخير خط الانترنت عندي معطل
اقتباسفمن أين ستأتي كمية المخزون الأولي إذا لم تكن عن طريق الإدخال
اذا كان الجدول فارغ عليك ان تؤيده صفر اما اذا كان به تسجيلات فهو ياخذ قيمة المخزون النهائي
اقتباسسؤال : أذا كان عندي بندين أو أكثر في جدول الطلبية , فإنه ينتقل إلى جدول المخزون البند الأول فقط
يمكن ان تضع الشرط في حلقة لكي يتوالي انتقال البنود الى الجدول الثاني
والقيام بفلترة لكل بند من البنود
اسف على التاخير مرة ثانية وارجو ان يتم اصلاح خط الانترنت عندي وذلك لاكمال الموضوع
الى ذلك الحين بالتوفيق
تم تعديل هذه المشاركة بواسطة علي .ع في 23 أكتوبر 2008 في 15:17
اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا
أخي علي
حتى كيفما أعبر عن المشكلة لاأعرف
إذا أردنا أن نجعل الكمية في جدول المخزون النهائي , فمثلا ً المنتج رقم 1 هل سيمثله سطر واحد من الجدول يعطي مجموع الكمية الموجودة أم ماذا , لأن كل سطر مرتبط برقم الطلبية ورقم المادة فسوف يكون هناك تكرار لرقم المنتج في المخزون النهائي
وكذلك الأمر بالنسبة للمخزون الأولي
شكرا لك
السلام عليكم
كان بودي اشارك معاكم في البرنامج خصوصا انني لم استخدم الديلفي من زمن بعيد ولكن ماباليد حيلة
دائما اطرح نفس المشكل ولا اجد اجابة وهي دعم الديلفي للعربية فالكل يقول غيرها من خصائص اللغة في الويندوز وهي لا تتغير ويبقى المشكل خصوصا انكم استخدمتم اللغة العربية في مشروعكم
عموما حسب ماتابعت في الموضوع فقد قمتم بجهد رائع تشكرون عليه عسى الله ان يجعله في ميزان حسناتكم وخصوصا للاخ علي
وبخصوص الاخ طلال احيي فيه روح طلب العلم وحب التعلم
والسلام عليكم ورحمة الله وبركاته
السلام عليكم
الله يعطيكم العافية على هذا المجهود الرائع
لو تسمحولي أشارك معكم :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
اقتباسالله يعطيكم العافية على هذا المجهود الرائعلو تسمحولي أشارك معكم
الله يعافيك اخي 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
اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا
السلام عليكــم ورحمـة الله وبركاتــة
Mohamed-Riadh كتب:وبخصوص الاخ طلال احيي فيه روح طلب العلم وحب التعلم
شكرأ لك أخي محمد
أخي علي بارك الله بك على هذا الشرح . على فكرة في محاولتي الأخيره أستخدمت Append ونقلت معلومات الطلبية كاملة إلى جدول المخزون , ولكن هذا لايكفي
سأقوم بدراسة هذا الكود بشكل جيد وأخبرك بالنتيجة
شكرأ لك
السلام عليكــم ورحمـة الله وبركاتــة
شكرا ً أخي علي على هذا الشرح
ولكن عندما أقوم بتسجيل منتج جديد في جدول المنتجات , وأحاول إدخاله إلى المخزون عن طريق طلبية تظهر رسالة الخطأ التالية
بالتوفيق
أخي طلال تأكد من القيم
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
