منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
جعل داتا جريد فيو لا يسمح بتعديل قيمة بشرط - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : جعل داتا جريد فيو لا يسمح بتعديل قيمة بشرط (/showthread.php?tid=35087)

الصفحات: 1 2


جعل داتا جريد فيو لا يسمح بتعديل قيمة بشرط - stiger - 03-06-20

السلام عليكم 

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

حاولت استخدم الكود ده في DataGridView1_CellEndEdit و مش شغال بيظهر الرساله و بيكمل  عادي

كود :
       For q As Integer = 0 To DataGridView1.Rows.Count - 1
           Dim IQty, SQty As Double
           IQty = Val(DataGridView1(5, DataGridView1.CurrentRow.Index).Value)
           SQty = Val(DataGridView1(6, DataGridView1.CurrentRow.Index).Value)

           If SQty > IQty Then
               MsgBox("الكمية المطلوبة أكبر من الكمية المتاحة")
               Return
           End If
           'Next

ارجو المساعدة و شكرا لكم


RE: جعل داتا جريد فيو لا يسمح بتعديل قيمة بشرط - WaeLx - 03-06-20

(03-06-20, 01:06 AM)stiger كتب : السلام عليكم 

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

حاولت استخدم الكود ده في DataGridView1_CellEndEdit و مش شغال بيظهر الرساله و بيكمل  عادي

كود :
       For q As Integer = 0 To DataGridView1.Rows.Count - 1
           Dim IQty, SQty As Double
           IQty = Val(DataGridView1(5, DataGridView1.CurrentRow.Index).Value)
           SQty = Val(DataGridView1(6, DataGridView1.CurrentRow.Index).Value)

           If SQty > IQty Then
               MsgBox("الكمية المطلوبة أكبر من الكمية المتاحة")
               Return
           End If
           'Next

ارجو المساعدة و شكرا لكم


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

بدل كلمة Return

ضع كلمة Exit sub


RE: جعل داتا جريد فيو لا يسمح بتعديل قيمة بشرط - ابراهيم ايبو - 03-06-20

السلام عليكم ورحمة الله وبركاته
اخي الكريم اليك هذا الكود سيتم التحقق من الكمية واذا كانت اكبر ستظهر رسالة وعند الضغط عليها
نفرغ الخلية ثم نعطي امرا باختيار الخلية عبر تفعيل مفاتيح الاسهم بالكود

كود :
   Private Sub DataGridView1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
       ' تعريف متغير رقمي يأخذ اندكس الصف الحالي
       Dim dd As Integer = DataGridView1.CurrentRow.Index
       For q As Integer = 0 To DataGridView1.Rows.Count - 1
           Dim IQty, SQty As Double
           
           IQty = DataGridView1.CurrentRow.Cells(2).Value
           SQty = DataGridView1.CurrentRow.Cells(3).Value
           If SQty > IQty Then
               MsgBox("الكمية المطلوبة أكبر من الكمية المتاحة")
               ' تفريغ الخلية
               DataGridView1.CurrentRow.Cells(3).Value = Nothing
               ' اختيار الخلية
               DataGridView1.Rows(dd).Cells(3).Selected = True
               'تحتاج الى تنفيذ السطر التالي مرة واحدة للرجوع الى السطر
               SendKeys.Send("{UP}")
               'تحتاج الى تنفيذ السطر التالي بعدد رقم الخلية
               SendKeys.Send("{Right}")
               SendKeys.Send("{Right}")
               SendKeys.Send("{Right}")
               '  الخروج من الصب
               Exit Sub
           End If
       Next
   End Sub
ملاحظة: انا افترضت خلية المخزن اندكس 2 والكمية المطلوبة اندكس 3 يمكنك التعديل وفق اندكس الخلايا التي لديك


RE: جعل داتا جريد فيو لا يسمح بتعديل قيمة بشرط - stiger - 03-06-20

(03-06-20, 01:16 AM)WaeLx كتب : و عليكم السلام و رحمة الله و بركاته

بدل كلمة Return

ضع كلمة Exit sub

مشكور يا اخي 
و لكن للاسف لا يعمل

(03-06-20, 05:52 AM)ابراهيم ايبو كتب : السلام عليكم ورحمة الله وبركاته
اخي الكريم اليك هذا الكود سيتم التحقق من الكمية واذا كانت اكبر ستظهر رسالة وعند الضغط عليها
نفرغ الخلية ثم نعطي امرا باختيار الخلية عبر تفعيل مفاتيح الاسهم بالكود

كود :
   Private Sub DataGridView1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
       ' تعريف متغير رقمي يأخذ اندكس الصف الحالي
       Dim dd As Integer = DataGridView1.CurrentRow.Index
       For q As Integer = 0 To DataGridView1.Rows.Count - 1
           Dim IQty, SQty As Double
           
           IQty = DataGridView1.CurrentRow.Cells(2).Value
           SQty = DataGridView1.CurrentRow.Cells(3).Value
           If SQty > IQty Then
               MsgBox("الكمية المطلوبة أكبر من الكمية المتاحة")
               ' تفريغ الخلية
               DataGridView1.CurrentRow.Cells(3).Value = Nothing
               ' اختيار الخلية
               DataGridView1.Rows(dd).Cells(3).Selected = True
               'تحتاج الى تنفيذ السطر التالي مرة واحدة للرجوع الى السطر
               SendKeys.Send("{UP}")
               'تحتاج الى تنفيذ السطر التالي بعدد رقم الخلية
               SendKeys.Send("{Right}")
               SendKeys.Send("{Right}")
               SendKeys.Send("{Right}")
               '  الخروج من الصب
               Exit Sub
           End If
       Next
   End Sub
ملاحظة: انا افترضت خلية المخزن اندكس 2 والكمية المطلوبة اندكس 3 يمكنك التعديل وفق اندكس الخلايا التي لديك

تمت التجربة و لم يعمل ايضا و يظهر رسالة خطأ ان لا يمكن ان تكون قيمة السعر فارغة و كل القيمة موجودة و ظاهره  اساسا


RE: جعل داتا جريد فيو لا يسمح بتعديل قيمة بشرط - asemshahen5 - 03-06-20

PHP كود :
   Private Sub DataGridView1_CellEndEdit(ByVal sender As System.ObjectByVal e As System.Windows.Forms.DataGridViewCellEventArgsHandles DataGridView1.CellEndEdit
        If e
.ColumnIndex 3 Then
            Dim IQty
SQty As Double
            IQty 
Val(DataGridView1(2DataGridView1.CurrentRow.Index).Value)
 
           SQty Val(DataGridView1(3DataGridView1.CurrentRow.Index).Value)
 
           If SQty IQty Then
                MsgBox
("الكمية المطلوبة أكبر من الكمية المتاحة")
 
               Return
            End 
If
 
       End If
 
   End Sub 
التعليمة اللي عايزها مش لازمها لوب .


RE: جعل داتا جريد فيو لا يسمح بتعديل قيمة بشرط - stiger - 03-06-20

(03-06-20, 01:48 PM)asemshahen5 كتب :
PHP كود :
   Private Sub DataGridView1_CellEndEdit(ByVal sender As System.ObjectByVal e As System.Windows.Forms.DataGridViewCellEventArgsHandles DataGridView1.CellEndEdit
        If e
.ColumnIndex 3 Then
            Dim IQty
SQty As Double
            IQty 
Val(DataGridView1(2DataGridView1.CurrentRow.Index).Value)
 
           SQty Val(DataGridView1(3DataGridView1.CurrentRow.Index).Value)
 
           If SQty IQty Then
                MsgBox
("الكمية المطلوبة أكبر من الكمية المتاحة")
 
               Return
            End 
If
 
       End If
 
   End Sub 
التعليمة اللي عايزها مش لازمها لوب .
مشكور يا غالي علي الرد
جربت الكود و لا يعمل بيتم ادخال القيمة عادي و هيا اكبر من القيمة المتاحة


RE: جعل داتا جريد فيو لا يسمح بتعديل قيمة بشرط - ابراهيم ايبو - 03-06-20

السلام عليكم ورحمة الله وبركاته
جزاك الله كل خير اخي عاصم انت محق لاداعي لجملة الفور
اخي الكريم اولا سؤالك عن التحقق من ان القيمة اكبر من المتاح اما موضوع السعر فهو شيء مفروغ منه طبعا يجب ادخال السعر ولو ان سؤالك متعلق بجزئية الكمية
من ناحية اخرى عندما تضع الكمية وتكتبها في الخلية طبيعي لن يحصل شيئ الا اذا انتقلت الى خلية اخرى اما بمفتاح تاب لانك تستخدم حذث cellEndEdit وليس حدث تغيير القيمة
ويجب الانتقال او الادخال حتر يتم كود التحقق
ناحية اخرى هل تتعامل في الكمية بالفاصلة حتى يكون نوع البيانات double


RE: جعل داتا جريد فيو لا يسمح بتعديل قيمة بشرط - stiger - 03-06-20

(03-06-20, 08:10 PM)ابراهيم ايبو كتب : السلام عليكم ورحمة الله وبركاته
جزاك الله كل خير اخي عاصم انت محق لاداعي لجملة الفور
اخي الكريم اولا سؤالك عن التحقق من ان القيمة اكبر من المتاح اما موضوع السعر فهو شيء مفروغ منه طبعا يجب ادخال السعر ولو ان سؤالك متعلق بجزئية الكمية
من ناحية اخرى عندما تضع الكمية وتكتبها في الخلية طبيعي لن يحصل شيئ الا اذا انتقلت الى خلية اخرى اما بمفتاح تاب لانك تستخدم حذث cellEndEdit وليس حدث تغيير القيمة
ويجب الانتقال او الادخال حتر يتم كود التحقق
ناحية اخرى هل تتعامل في الكمية بالفاصلة حتى يكون نوع البيانات double

اللي اما محتاجة هوا التحقق التحقق من كمية ان تكون اقل من المتاحة فقط

كان اللي بيحصل قبل اضاقة الكود ::  عند تعديل الكميه في الداتا جريد فيو يتم اضافة قيمة الكمية و اجمالي السعر  في قاعده البيانات 
اللي بيحصل معايا ان بكتب كمية اكبر او قل  من الكمية المتاحة بيضيفها في الداتا جريد فيو  و بيظهر رسالة التنبيه ف الحالتين

اتمني تكون الفكرة وصلت 
و شكرا لكم


RE: جعل داتا جريد فيو لا يسمح بتعديل قيمة بشرط - ابراهيم ايبو - 03-06-20

السلام عليكم اخي الكريم
ضع مثال مصغر لماتريد ختى يمكن مساعدتك مني او من اي احد من اخوتك في المنتدى


RE: جعل داتا جريد فيو لا يسمح بتعديل قيمة بشرط - stiger - 04-06-20

(03-06-20, 09:32 PM)ابراهيم ايبو كتب : السلام عليكم اخي الكريم
ضع مثال مصغر لماتريد ختى يمكن مساعدتك مني او من اي احد من اخوتك في المنتدى

تسلم يا غالي
تم ارفاق مثال [attachment=24985]

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

و شكرا