اخوتي الاعزاء كيف حالكم
لدي مشكلة بسيطة وهي
لدي صنف يحتوي علي رقم باركود 12345
ولدي صنف اخر يحتوي علي رقم باركود 67890
قمت بدمج اصناف من خلال رقم الباركود
بحيث اصبح رقم باركود الصنف 1234567890
واريد عند قراءة الباركود عن طريق جهاز قاري الباركود يقوم بقراءة جسب الرقم المدخل
بمعني
لو قمت بقراءة الصنف الاول يقوم باضافة الي القانورة
ولو قمت بقراءة الصتف الثاني يقوم باضافة الكمية فقط للفاتورة
كود :
Dim cmd As New SqlCommand("Select * From Tbl_all_store where Bar_code = '" & BunifuTextBox3.Text & "'and Store_Name='" & Label13.Text & "' ", conn)
الان الصنف 1234567890 هو صنف ثالث جديد ام هو تعبير عن صنفان معا ؟
برجاء التوضيح اكثر هل المطلوب هو البديهي هو عند قراءة رقم البار كود يتم اضافة الصنف الى الفاتورة ؟
(03-11-21, 03:36 PM)Anas Mahmoud كتب : [ -> ]الان الصنف 1234567890 هو صنف ثالث جديد ام هو تعبير عن صنفان معا ؟
برجاء التوضيح اكثر هل المطلوب هو البديهي هو عند قراءة رقم البار كود يتم اضافة الصنف الى الفاتورة ؟
تعبير عن الصنفان معا
توضيح
انا استخدم الدمج الاصناف علي سيبل المثال
الصنف الاول : حليب صباح بنكهة الفراولة ورقم الباركود 12345
والصنف الثاني : حليب صباح بنكهة الموز ورقم الباركود 67890
وهم يحملان نفس اسم الشركة
انا قمت بدمج الاصناف معنا بحيث اسم الصنف حليب صباح فقط واصبح يحمل رقم الباركود 1234567890
المطلوب ؟
اريد عندما اقم بقراءة الباركود يعرض ليا اسم الصنف
بحيث عندما اقوم بقراءة الحليب بنكهة الفرولة يظهر لي حليب صباح
وعندما اقوم بقراءة الحليب بنكهة الموز يطهر لي حليب صباح ايضا
يعني اريد يقراءة من اي جزء في الحقل علي حسب القيمة المدخلة
أنت تبحث عن المعامل Like بدلا من =
يستخدم المعامل Like للبحث عن حقل يحتوي على النص المطلوب وليس شرطا ان يساويه
بحيث تصبح صورة الاستعلام
كود :
Select * From Tbl_all_store where Bar_code Like '%12345%'and Store_Name='Store one'
يجدر الإشارة إلى أن استخدام & BunifuTextBox3.Text & بهذه الطريقة لتمرير قيم الى الاستعلام هو مدخل لنقطة ضعف كبيرة جدا وشهيرة اسمها SQL Injection
يجب الابتعاد عنها تمام واستخدام Parameters لتمرير القيم الى الاستعلام هكذا :
كود :
Dim cmd As New SqlCommand("Select * From Tbl_all_store where Bar_code Like @barcode and Store_Name=@storename", conn)
cmd.Parameters.AddWithValue("@barcode", "%" & BunifuTextBox3.Text & "%")
cmd.Parameters.AddWithValue("@storename", Label13.Text)
راجع الموضوع التالي لمزيد من المعلومات عن ال SQL Injection وخطورته :
خطورة ال Sql Injection ولماذا يجب عليك استخدام Parameters لبناء الاستعلامات
(03-11-21, 05:23 PM)Anas Mahmoud كتب : [ -> ]أنت تبحث عن المعامل Like بدلا من =
يستخدم المعامل Like للبحث عن حقل يحتوي على النص المطلوب وليس شرطا ان يساويه
بحيث تصبح صورة الاستعلام
كود :
Select * From Tbl_all_store where Bar_code Like '%12345%'and Store_Name='Store one'
يجدر الإشارة إلى أن استخدام & BunifuTextBox3.Text & بهذه الطريقة لتمرير قيم الى الاستعلام هو مدخل لنقطة ضعف كبيرة جدا وشهيرة اسمها SQL Injection
يجب الابتعاد عنها تمام واستخدام Parameters لتمرير القيم الى الاستعلام هكذا :
كود :
Dim cmd As New SqlCommand("Select * From Tbl_all_store where Bar_code Like @barcode and Store_Name=@storename", conn)
cmd.Parameters.AddWithValue("@barcode", "%" & BunifuTextBox3.Text & "%")
cmd.Parameters.AddWithValue("@storename", Label13.Text)
راجع الموضوع التالي لمزيد من المعلومات عن ال SQL Injection وخطورته :
خطورة ال Sql Injection ولماذا يجب عليك استخدام Parameters لبناء الاستعلامات
لقد جربت % تظهر لي مشكلة وهي
اني يوجد ليا صنف رقم الباركود 02112345
عندما ابحث علي 12345
انا اريد يقوم يقراءة 123456 ويتجاهل 021
حسنا دعني اخبرك ان عليك الاختيار بين اما ان يبحث عن الكود بعينه او ان يكون الكود جزء من كود اخر
بامكانك التخلص من المشكلة تمام من خلال تعديل بسيط في تصميم قاعدة البيانات
بامكانك عمل جدول للباركود منفصل عن جدول الاصناف ، تجعله مربوط بالجدول الاصلي الخاص بالاصناف عن طريق Id الصنف ، وبالتالي يمكنك في هذه الحالة اضافة اكثر من بار كود للصنف الواحد ،
[
attachment=27132]
[
attachment=27133]
[
attachment=27134]
الان عندما تبحث عن اي من هذه الباركودات فانك تستعلم عن Id الصنف الموجود معه في نفس الجدول وبالتالي يمكنك ايجاد باقي معلومات الصنف
PHP كود :
select Tbl_all_store.Product_Name,Tbl_all_store.Price,Tbl_all_store.Exp_Date
from dbo.Tbl_all_store
inner join dbo.Tbl_Barcodes
on dbo.Tbl_all_store.Id = dbo.Tbl_Barcodes.Product_Id
where dbo.Tbl_Barcodes.Barcode='12345'
[
attachment=27135]
[
attachment=27136]
(03-11-21, 06:17 PM)Anas Mahmoud كتب : [ -> ]حسنا دعني اخبرك ان عليك الاختيار بين اما ان يبحث عن الكود بعينه او ان يكون الكود جزء من كود اخر
بامكانك التخلص من المشكلة تمام من خلال تعديل بسيط في تصميم قاعدة البيانات
بامكانك عمل جدول للباركود منفصل عن جدول الاصناف ، تجعله مربوط بالجدول الاصلي الخاص بالاصناف عن طريق Id الصنف ، وبالتالي يمكنك في هذه الحالة اضافة اكثر من بار كود للصنف الواحد ،
الان عندما تبحث عن اي من هذه الباركودات فانك تستعلم عن Id الصنف الموجود معه في نفس الجدول وبالتالي يمكنك ايجاد باقي معلومات الصنف
PHP كود :
select Tbl_all_store.Product_Name,Tbl_all_store.Price,Tbl_all_store.Exp_Date
from dbo.Tbl_all_store
inner join dbo.Tbl_Barcodes
on dbo.Tbl_all_store.Id = dbo.Tbl_Barcodes.Product_Id
where dbo.Tbl_Barcodes.Barcode='12345'
شكرا باش مهندس سوف اعمل علي ذلك
(03-11-21, 06:17 PM)Anas Mahmoud كتب : [ -> ]حسنا دعني اخبرك ان عليك الاختيار بين اما ان يبحث عن الكود بعينه او ان يكون الكود جزء من كود اخر
بامكانك التخلص من المشكلة تمام من خلال تعديل بسيط في تصميم قاعدة البيانات
بامكانك عمل جدول للباركود منفصل عن جدول الاصناف ، تجعله مربوط بالجدول الاصلي الخاص بالاصناف عن طريق Id الصنف ، وبالتالي يمكنك في هذه الحالة اضافة اكثر من بار كود للصنف الواحد ،
الان عندما تبحث عن اي من هذه الباركودات فانك تستعلم عن Id الصنف الموجود معه في نفس الجدول وبالتالي يمكنك ايجاد باقي معلومات الصنف
PHP كود :
select Tbl_all_store.Product_Name,Tbl_all_store.Price,Tbl_all_store.Exp_Date
from dbo.Tbl_all_store
inner join dbo.Tbl_Barcodes
on dbo.Tbl_all_store.Id = dbo.Tbl_Barcodes.Product_Id
where dbo.Tbl_Barcodes.Barcode='12345'
باش مهنس
انا استخدم في
Transaction في حالة اكثر من جدول
هل تفي بالغرض ام توجد طريقة اخري لباقي الاجراءات الاضافة والتعديل والحدف
تكون افضل واسهل