إخواني الكِرام أستخدم برنامج يقوم بتسجيل الباركود الخاص بالمنتج ثم أكتب اسم المُنتج وموقعه، وأعاني من مُشكلة ظهرت، هي في حالة كتابة الباركود الخاص بمنتج تم تسجيله من قبل أود أن إذا كتبت الباركود قي الصندوق النصي الأول بمجرد الانتقال بزر Tab إلى كتابة الاسم في الصندوق النصي الثاني يتم كتابته مُباشرة إذا كان موجود من قبل دون إعادة كتابة الاسم من جديد ودون كتابة موقع المُنتج السابق والسماح بكتابه الموقع الجديد، وجزاكم الرحمن خيراً.
بمعني أنه يبحث بشكل بسريع بعد كتابة الباركود، داخل عمود الباركود فإن وجد نفس الباركود يقوم باِستدعاء اسم المُنتج فقط ويقوم بإضافته تلقائياً في الصنودق النصي الثاني وإن لم يجد نفس الباركود يجعل الخانات فارغة.
- علماً أنني استخدم قاعدة بيانات أكسس.
يسَّر الله عليكم كل أمرٍ كما تُسيرون على عباد الله.
اهلاً بك اخى Hazem1 من جديد
كل الامر فى حدث TextBox_KeyDown
استخدم الكود بهذا الشكل
كود :
If e.KeyCode = Keys.Tab Then
' استخدم كود الاستعلام للتحقق مع ظهور رسالة وما تشاء '
End If
مكان التلميح فقط ضع كود الاستعلام الذى تريد التحقق منه
وعرض الرسالة وما تشاء من فعله
تحياتى لك
وتمنياتى لك التوفيق
أخي الحبيب أشعر أنك مُجهد جداً من السهر أعانك الله، فكرتي نفس فكرة برنامج المبيعات بمجرد وضع الباركود في الصندوق النصي يظهر اسم المنتج وسعره، وإذا لم يكن هناك باركود يظهر رسالة خطأ، لكن كل الذي أريده إن يظهر اسم المنتج فقط وأن يسمح بتسجيل جديد.
أو عند كتابة الباركود وكان الباركود مسجل من قبل تظهر رسالة، "هذا المنتج تم تسجيله مُسبقاً، هل تريد إضافته مرة ثانية ؟ ، فإذا اخترت نعم يظهر الباركود والاسم فقط ويترك لي باقي الحقول فارغة ( على أساس أني أحتاج الاسم فقط ) وإذا ضغطت ( لا )، يظهر الباركود واسم المنتج وتظهر كل الحقول التي تم تسجيلها مسبقا.
الذي أعرفه أنني سأحتاج لاستخدام قاعدة if وكود البحث لكن لا أعلم كيف سيتم البحث التلقائي بمجرد وضع الباركود وهل سوف استخدم أحداث الكيبورد أو الماوس بحيث عند الانتقال بالماوس أو زر Tab الصندوق النصي الثاني يتم تنفيذ البحث التلقائي ؟
جزاكم الله خيراً وأكرمكم بالفردوس الأعلى.
(04-09-18, 08:03 AM)Hazem1 كتب : [ -> ]أخي الحبيب أشعر أنك مُجهد جداً من السهر أعانك الله، فكرتي نفس فكرة برنامج المبيعات بمجرد وضع الباركود في الصندوق النصي يظهر اسم المنتج وسعره، وإذا لم يكن هناك باركود يظهر رسالة خطأ، لكن كل الذي أريده إن يظهر اسم المنتج فقط وأن يسمح بتسجيل جديد.
أو عند كتابة الباركود وكان الباركود مسجل من قبل تظهر رسالة، "هذا المنتج تم تسجيله مُسبقاً، هل تريد إضافته مرة ثانية ؟ ، فإذا اخترت نعم يظهر الباركود والاسم فقط ويترك لي باقي الحقول فارغة ( على أساس أني أحتاج الاسم فقط ) وإذا ضغطت ( لا )، يظهر الباركود واسم المنتج وتظهر كل الحقول التي تم تسجيلها مسبقا.
الذي أعرفه أنني سأحتاج لاستخدام قاعدة if وكود البحث لكن لا أعلم كيف سيتم البحث التلقائي بمجرد وضع الباركود وهل سوف استخدم أحداث الكيبورد أو الماوس بحيث عند الانتقال بالماوس أو زر Tab الصندوق النصي الثاني يتم تنفيذ البحث التلقائي ؟
جزاكم الله خيراً وأكرمكم بالفردوس الأعلى.
بالعكس اخى الحبيب انا لم اكن اسهر هذا اليوم
بكل كنت مستيقظ قبل صلاة الفجر من ثم دخلت قليلاً
حتى اجب على المواضيع هنا قبل الذهاب الى العمل
ويبدو ان الفكرة لم تصلك بعد اخى الحبيب
اجعلنى اوضح الكرة اكثر بشتى الطرق بعد تعديلك للموضوع
اولاً عند الضغط على الـ Tab يوم بالتحقق من الباركود أى رقم المنتج
فى حدث
TextBox_KeyDown استخدم الكود التالى
كود :
If e.KeyCode = Keys.Tab Then
NameSubForSelectByID()
End If
ثانياً بخصوص عند التنقل او باصح مغادرة اطار TextBox الى اخر
من خلال حدث
TextBox_Leave استخدم الكود التالى
كود :
NameSubForSelectByID()
انتى فى الخطوة الاخيرة وهو عمل
Sub كما هو التالى
كود :
Sub NameSubForSelectByID()
' ضح كود الاستعلام بقاعدة الباينات ى جدول امنتجات
' ثم م بعمل التحقق اذا كان امنت موجود بالاستعلام
' يتم ظهور رسالة كما ذكرتها فى موضوعك
' وباقى الاجراءات التى مطلوب فعها تخيلها تماماً لو بتنشاء مستخدم جديد للبرنامج
End Sub
تخيل فى الـ Sub انك بتتعامل مع زر تحقق او بحث .... الخ
ضح كمل الكود وما تريد فعلها داخل هذا السب بكده يمكنك استخدامه فى اكثر من مكان كما تم توضيحه فى الاعلى
اتمنى ان تكون الصورة وضحت بشكل اكبر الان وان الشرح غير معقد
تحياتى لك
وتمنياتى لك التوفيق
(04-09-18, 07:40 PM)elgokr كتب : [ -> ]اولاً عند الضغط على الـ Tab يوم بالتحقق من الباركود أى رقم المنتج
فى حدث TextBox_KeyDown استخدم الكود التالى
كود :
If e.KeyCode = Keys.Tab Then
NameSubForSelectByID()
End If
ثانياً بخصوص عند التنقل او باصح مغادرة اطار TextBox الى اخر
من خلال حدث TextBox_Leave استخدم الكود التالى
كود :
NameSubForSelectByID()
انتى فى الخطوة الاخيرة وهو عمل Sub كما هو التالى
كود :
Sub NameSubForSelectByID()
' ضح كود الاستعلام بقاعدة الباينات ى جدول امنتجات
' ثم م بعمل التحقق اذا كان امنت موجود بالاستعلام
' يتم ظهور رسالة كما ذكرتها فى موضوعك
' وباقى الاجراءات التى مطلوب فعها تخيلها تماماً لو بتنشاء مستخدم جديد للبرنامج
End Sub
يسر الله أمرك يا أخي الغالي، صدقاً الشرح واضح لكن لا أدري ماسبب وجود الخطأ معي بمجرد كتابة الكود
تصنيف البيانات عندي كالتالي:
بالنسبة لاسم المُنتج في قاعدة البيانات تحت اسم P Name ( المسافة غير مسموح بها في كتابة الكود )
ورقم الباركود Barcode
وال ID يُمثل الرقم التلقائي أثناء تسيجل المُنتجات
أرفقت لحضرتك ثلاث صور
(05-09-18, 12:44 AM)asemshahen5 كتب : [ -> ]جرب هذا الكود
كود :
For I = 0 To DataGridView1.Rows.Count - 1
If DataGridView1.Rows(I).Cells(0).Value = TXT_IDPRODUCT.Text Then
If MsgBox("هذه السلعة موجودة مسبقا هل تريد زيادة كميتها بمقدار 1", MsgBoxStyle.Question +
MsgBoxStyle.YesNo, "") = MsgBoxResult.Yes Then
DataGridView1.Rows(I).Cells(4).Value += 1
MsgBox("تمت إضافة السلعة", MsgBoxStyle.Information, "")
Exit Sub
End If
End If
Next
جزاك الله خيراً على اِهتمامك أخي الكريم ، المُشكلة أنني لم أقم بإعداد الداتاجريدفيو بصفوف هكذا :
DataGridView1.Rows(I).Cells(1).Value
فقط قم بربط الداتاجريدفيو بأعمدة قاعدة البيانات الأكسس وبدأت أعمل على هذا النحو لكن أشعر أنني بحاجة ماسة لتعلمها جيداً
اخى الحبيب بخصوص حديثك عن P Name
لان المسافة موجودة بين الاسم
كل ما عليك فعله التالى
ان تستخدم الاسم بهذا الشكل
أو بهذا الشكل
وبكده ستحل مشكلة الكود مع المسافة
تحياتى لك
وتمنياتى لك التوفيق
اخى الفاضل انت تستخدم اسم عمود بجدول
قبل اسم Sub ليه
اولاً فى الصورة هنا
يحدث الخطاء هنا كونك لم تقوم بانشاء الـ Sun الخاص بالاسم
ويبدو انك لا تتعامل بالاكواد فى المشروع لديك بال انك تتعامل بالادوات
لذلك اخى الحبيب ارفق المشروع الذى لديك
حتى يتم عمل الازم بالمشروع واعادة رفعه لك بعد الانتهاء
تحياتى لك
وتمنياتى لك التوفيق