اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

اضافة صنف الى النموذج الفرعي من خلال رز امر بالنموذج الرئيسي


wael_rafat

الردود الموصى بها

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

اخواني الكرام مشرفي واعضاء منتدانا العظيم

لدس استفسار بخصوصة طريقة ادخال الاصناف الى الفاتورة  بطريقة معينة كالتالي :-

علي سبيل المثال لدي صنفين وهما ( مطبق زبيدي ، مجبوس دجاج )

ما اريده هو عندما اضغط علي صنف مطبق زبيدي مثلا ... يقوم بالاتــي  :-

1 – فى حالة عدم وجود الصنف بالفاتورة يقوم بتسجيله بالفاتورة ، وتكون الكمية مساوية لعدد مرات الضغط علي ايقونة الصنف بمعني اذا ضغط مرة واحدة تكون الكمية ( 1 ) واذا ضغط مرتين تكون الكمية ( 2 )

 وهكذا ....

 

2 – فى حالة وجود الصنف بالفاتورة لا يقوم بتسجيلة مرة اخرى وانما ينقل التركيز اليه ويقوم بالتعديل فقط فى الكمية بعدد مرات الضغط ( المذكور سابقا ) .

 

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

 

ارجو ان يكون الشرح واضح وجزاكم الله كل خير ،،،

 

 

 

 

post-140842-0-96497700-1432195014_thumb.

TT.rar

رابط هذا التعليق
شارك

وهذه اضافة بسيطة على ما ذكره اخى الفاضل

 

فقط اكتب القيمة التى تريدها  بدون تكرار الضغط على الزر مرات عديدة

 On Error Resume Next
     num = InputBox("Please Enter the number")
 If ([Forms]![f_order]![F_ordersubform]![itemcode]) > 0 And ([Forms]![f_order]![F_ordersubform]![itemcode]) <> 1001 Then
  DoCmd.CancelEvent
  Exit Sub
  End If
  
  If ([Forms]![f_order]![F_ordersubform]![itemcode]) = 1001 Then
 [Forms]![f_order]![F_ordersubform]![Qty] = Nz([Forms]![f_order]![F_ordersubform]![Qty]) + num
  [Forms]![f_order]![F_ordersubform]![itemcode].SetFocus
F_ordersubform.SetFocus
 [Forms]![f_order]![F_ordersubform]![Qty].SetFocus
  End If

  If IsNull([Forms]![f_order]![F_ordersubform]![itemcode]) Then

[Forms]![f_order]![F_ordersubform]![itemcode] = 1001
DoCmd.Beep
[Forms]![f_order]![F_ordersubform].SetFocus
DoCmd.GoToControl "itemcode"
DoCmd.GoToControl "qty"
[F_ordersubform]![Qty].SetFocus
Me.F_ordersubform!Qty.Value = 1
End If

رابط هذا التعليق
شارك

اخي الكريم Yms12  لقد اطلعت مرة اخري على المرفق

وللاسف  هذا ليس المطلوب  وبارك الله فيك

المطلوب كالتالي:-

1 – فى حالة عدم وجود الصنف بالفاتورة يقوم بتسجيله بالفاتورة ، وتكون الكمية مساوية لعدد مرات الضغط علي ايقونة الصنف بمعني اذا ضغط مرة واحدة تكون الكمية ( 1 ) واذا ضغط مرتين تكون الكمية ( 2 )

وهذه الجزئية اتممت انجازها وموجودة بالمرفق .

 

2 – فى حالة وجود الصنف بالفاتورة لا يقوم بتسجيلة مرة اخرى وانما ينقل التركيز اليه ويقوم بالتعديل فقط فى الكمية بعدد مرات الضغط ( المذكور سابقا ) .

 

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

تم تعديل بواسطه wael_rafat
رابط هذا التعليق
شارك

 

وهذه اضافة بسيطة على ما ذكره اخى الفاضل

 

فقط اكتب القيمة التى تريدها  بدون تكرار الضغط على الزر مرات عديدة

 On Error Resume Next
     num = InputBox("Please Enter the number")
 If ([Forms]![f_order]![F_ordersubform]![itemcode]) > 0 And ([Forms]![f_order]![F_ordersubform]![itemcode]) <> 1001 Then
  DoCmd.CancelEvent
  Exit Sub
  End If
  
  If ([Forms]![f_order]![F_ordersubform]![itemcode]) = 1001 Then
 [Forms]![f_order]![F_ordersubform]![Qty] = Nz([Forms]![f_order]![F_ordersubform]![Qty]) + num
  [Forms]![f_order]![F_ordersubform]![itemcode].SetFocus
F_ordersubform.SetFocus
 [Forms]![f_order]![F_ordersubform]![Qty].SetFocus
  End If

  If IsNull([Forms]![f_order]![F_ordersubform]![itemcode]) Then

[Forms]![f_order]![F_ordersubform]![itemcode] = 1001
DoCmd.Beep
[Forms]![f_order]![F_ordersubform].SetFocus
DoCmd.GoToControl "itemcode"
DoCmd.GoToControl "qty"
[F_ordersubform]![Qty].SetFocus
Me.F_ordersubform!Qty.Value = 1
End If

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

رابط هذا التعليق
شارك

اخي الكريم Yms12  لقد اطلعت مرة اخري على المرفق

وللاسف  هذا ليس المطلوب  وبارك الله فيك

المطلوب كالتالي:-

1 – فى حالة عدم وجود الصنف بالفاتورة يقوم بتسجيله بالفاتورة ، وتكون الكمية مساوية لعدد مرات الضغط علي ايقونة الصنف بمعني اذا ضغط مرة واحدة تكون الكمية ( 1 ) واذا ضغط مرتين تكون الكمية ( 2 )

وهذه الجزئية اتممت انجازها وموجودة بالمرفق .

 

2 – فى حالة وجود الصنف بالفاتورة لا يقوم بتسجيلة مرة اخرى وانما ينقل التركيز اليه ويقوم بالتعديل فقط فى الكمية بعدد مرات الضغط ( المذكور سابقا ) .

 

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

 

 

اعتقد ان الكود شغال مظبوط اخى الكريم وانا جربته  اكتر من مرة

رابط هذا التعليق
شارك

حياكم الله اخواني جميعا 

خلونا نسال الاخ وائل : وضعت الازرار على النموذج وبعناوين لاصناف ثابتة !! كيف لما تسلم البرنامج لعميل ان تتغير عناوين الازرار حسب الصنف ؟؟؟  بل العدد كذلك ؟؟؟

ام هذا البرنامج خاص فيك !! حتى ولو خاص فيك شلون لو حذفت اصناف كيف تتغير ازرار الامر تلقائيا !!

 

بالتوفيق

رابط هذا التعليق
شارك

استاذي الجميل رمهان شكرا لمرورك ومشاركتك

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

رابط هذا التعليق
شارك

استاذ مارد من الواضح انني لم استطيع توصيل طلبي لحضراتكم

طلبي باختصار وعلي سبيل المثال

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

تم تعديل بواسطه wael_rafat
رابط هذا التعليق
شارك

استاذي الجميل رمهان شكرا لمرورك ومشاركتك

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

اخي وائل

الموضوع مش موضوع تنسيق ! ركز فيما سألت واجب بما ستعمل!!

تنبيه : انت تقوم باضافة اكواد الاصناف من خلال الكود ؟ ماهذا اخ وائل ؟؟ لو تغير رقم الصنف ماذا ستفعل بل لو عندك 10 اصناف ولن اقول 1000 ؟!! هل ستضيف 10 اكواد شرطية ؟!

البرنامج يحتاج الى اعادة بناء !!

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

Me.F_ordersubform.Form.Recordset.FindFirst "itemcode='1001'"

Me.F_ordersubform.Form.Recordset.FindFirst "itemcode='1002'"

بالتوفيق

رابط هذا التعليق
شارك

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

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

رابط هذا التعليق
شارك

اخي وائل

اولا خلينا نعدل على شغلك وبنفس فكرتك ان لكل صنف زر امر مكتوبا عليه اسم الصنف ! وعند الضغط على الزر يشيك اذا موجود يقوم باضافة 1 على الكمية واذا مش موجود يقوم باضافته كسجل جديد ويكمية 1 ! طبعا هذا نفس السيناريو الذي مشيت به ولكن سننفذه بطريقة رمهانية ( اتهمني احد الاعضاء بانني اختصر الاكواد واختزلها ليس احتراف وانما دمج اسطر وعدم تعريف متغيرات ) !! هنا احتاج فرصة وقت وسارفعه هنا !

 

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

 

تحياتي

تم تعديل بواسطه رمهان
  • Like 1
رابط هذا التعليق
شارك

بارك الله فيك استاذنا وزادك الله من علمه

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

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

رابط هذا التعليق
شارك

اخي وائل

اولا خلينا نعدل على شغلك وبنفس فكرتك ان لكل صنف زر امر مكتوبا عليه اسم الصنف ! وعند الضغط على الزر يشيك اذا موجود يقوم باضافة 1 على الكمية واذا مش موجود يقوم باضافته كسجل جديد ويكمية 1 ! طبعا هذا نفس السيناريو الذي مشيت به ولكن سننفذه بطريقة رمهانية ( اتهمني احد الاعضاء بانني اختصر الاكواد واختزلها ليس احتراف وانما دمج اسطر وعدم تعريف متغيرات ) !! هنا احتاج فرصة وقت وسارفعه هنا !

 

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

 

تحياتي

 ولكن سننفذه بطريقة رمهانية

هههههههههههههههههههههههههههههههه  :rol: 

هذا اهم ما فى الموضوع الطريقة الرمهانية  :wink2: 

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

  • Like 1
رابط هذا التعليق
شارك

تفضل اخينا وائل

ولاحظ :الفكرة تمت بانشاء اجراء mm يستقبل قيم الكود حسب خاصية tag  لزر الامر !

بمعنى مثلا تريد اضافة زر امر للمانجو .. اتبع الخطوات التالية :

1. تنشئ زر الامر طبيعي وتغير العنوان زي ماتحب 

2. تذهب لخاصية tag لزر الامر وتكتب الكود للصنف وهنا 1003 نقصد المانجو ( طبعا هذا مش معقول انه لكل زر اكتب رقم لكود ولكن هذا السيناريو تبعك ولكن نفذته بطريقة تسهل العمل ) وللطريقة الافضل علينا الانتظار حتى اجهز الفكرة وبموضوع جديد وعند فرصة الوقت ان شاء الله !

3. تذهب لحدث عند النقر وتلصق الجملة التالية وهي عبارة عن مناداة الاجراء وتمرير قيمة tag للزر الحالي 

 
Call mm(Me.ActiveControl.Tag)
 

طبعا اصبح تكرار العمل لكل صنف اسهل بكثير من ماكنت انت حتعمله من تكرار في الاكواد وتعديلات داخل الاكواد !

 

بالتوفيق

TT.rar

تم تعديل بواسطه رمهان
  • Like 1
رابط هذا التعليق
شارك

اخى ال

 

تفضل اخينا وائل

ولاحظ :الفكرة تمت بانشاء اجراء mm يستقبل قيم الكود حسب خاصية tag  لزر الامر !

بمعنى مثلا تريد اضافة زر امر للمانجو .. اتبع الخطوات التالية :

1. تنشئ زر الامر طبيعي وتغير العنوان زي ماتحب 

2. تذهب لخاصية tag لزر الامر وتكتب الكود للصنف وهنا 1003 نقصد المانجو ( طبعا هذا مش معقول انه لكل زر اكتب رقم لكود ولكن هذا السيناريو تبعك ولكن نفذته بطريقة تسهل العمل ) وللطريقة الافضل علينا الانتظار حتى اجهز الفكرة وبموضوع جديد وعند فرصة الوقت ان شاء الله !

3. تذهب لحدث عند النقر وتلصق الجملة التالية وهي عبارة عن مناداة الاجراء وتمرير قيمة tag للزر الحالي 

 
Call mm(Me.ActiveControl.Tag)
 

طبعا اصبح تكرار العمل لكل صنف اسهل بكثير من ماكنت انت حتعمله من تكرار في الاكواد وتعديلات داخل الاكواد !

 

بالتوفيق

 

 

اخى الكريم رمهان دعنا نتقاسيم فى الخير ونتعاون فى هذا الكود

 

ما رايك بفرض متغيرين

لحساب السجلات فى كل من الدولين جدول الاصناف وجدول المبيعات او الفواتير

f = DCount("*", "tmenu", "[itemcode] = 1001")

d = DCount("*", "Qorder", "orderno=" & Me.orderno)

ولنقل مثلا اذا كان المتغير d اكبر من 1 مثلا ننفذ كود الاضافة الى الكمية فى كل ضغطة زر

 

ولكن انا اريد ان اضيف عن طريق الجدول مصدر النموذج الفرعى

 

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

If d > 1 And ([Forms]![f_order]![F_ordersubform]![itemcode]) = 1001 Then


Dim x
Dim Rs
Set Rs = CurrentDb.OpenRecordset("Qorder")
For X = 1 To 1
       Rs.Edit
       Rs![itemcode] = [Forms]![f_order]![F_ordersubform]![itemcode].Value
       Rs!Qty = Nz([Forms]![f_order]![F_ordersubform]![Qty]) + 1
       Rs.Update
       Next
       Rs.Close
Set Rs = Nothing
Me.[F_ordersubform].Requery

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

 

تحياتى 

رابط هذا التعليق
شارك

الأخ الكريم @مارد

الأخ الكريم @رمهان

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

وذلك حتى يتيسر للمبتدئين مثلي الانتفاع بعلمكما ولكما جزيل الشكر و التقدير :)

رابط هذا التعليق
شارك

اخي الاستاذ مارد : لم افهم عليك تمام ! هل تقصد ان لديك فكرة حل وتريد ان ننفذها ؟ وحسب فهمي تريد ان تشيك هل المادة موجودة في الفاتورة الحالية ام لا باستخدام عد السجلات ؟

فابشر احنا معا ولكن اتوقع لو تضعها بموضوع جديد افضل !

 

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

1. لشرح كل مشاركة رد ستحتاج وقت كثير من ما يفقد الرد على اكبر عدد مشاركة ممكن ! 

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

3.احيطك علما ان الاخ السائل لا يريد الشرح بقدر مايريد الحل 

4. من اراد ان يشرح شيئا يذهب لموضوع جديد ويشرح مايريد ! انا ليس لدي الوقت فاغلب وقتي رد على مشاركات ! كما ان هناك سبب وهو عندما اكتب موضوعا جديدا لا بد ان اعطيه حقه او لا اكتب !

5. تستطيع ان تضع استفسارك حول جزئية معينة اثناء المشاركة !

6. بعض المشاركات قد تكون الاستفادة منها الفكرة او الطريقة بغض النظر عن طريقة التنفيذ!

 

تحياتي

  • Like 1
رابط هذا التعليق
شارك

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

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

 

ثانيا : يوجد جزئية ان امكن تنفيذها لو تكرمت...  وهي  امكانية اضافة الصنف المضاف مرة اخري عند فقد التركيز عنه

بمعني عند ادخال الصنف " 1001 "  ثم اخال الصنف " 1002 "  وعند ادخال الصنف " 1001 " مرة اخري لا يقوم بزيادة الكمية للصنف المسجل وانما يضاف سجل جديد له

والهدف منه هو معرفة الاصناف الاضافية الذي طلبها العميل بعد الطلب الاصلي

 

علي سبيل المثال :

زبون طلب  الصنف " 1001 "  عدد 3   + الصنف " 1002 " عدد 1

وبعد تسجيل الاوردر ... قام العميل  بزيادة الاوردر واضافة الصنف " 1001 " عدد 1

فيظهر بالفاتورة   الصنف " 1001 " عدد 3

                    الصنف " 1002 "  عدد 1 

                    الصنف " 1001"  عدد  1

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

اتمني تكون وضحت الفكرة  وسامحني على الاطالة  ... وجزاك الله كل خير

رابط هذا التعليق
شارك

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

لانه تم استخدام خاصية القيمة الافتراضية للكمية لاختصار الوقت . يمكنك حذفها او تغييرها !

 

ثانيا : يوجد جزئية ان امكن تنفيذها لو تكرمت...  وهي  امكانية اضافة الصنف المضاف مرة اخري عند فقد التركيز عنه

قريبا ان شاء الله !!

بالتوفيق

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information