تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
جعل داتا جريد فيو لا يسمح بتعديل قيمة بشرط
#1
السلام عليكم 

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

حاولت استخدم الكود ده في 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

ارجو المساعدة و شكرا لكم
الرد
تم الشكر بواسطة: asemshahen5
#2
(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
الرد
تم الشكر بواسطة: ابراهيم ايبو , asemshahen5 , stiger , kiki
#3
السلام عليكم ورحمة الله وبركاته
اخي الكريم اليك هذا الكود سيتم التحقق من الكمية واذا كانت اكبر ستظهر رسالة وعند الضغط عليها
نفرغ الخلية ثم نعطي امرا باختيار الخلية عبر تفعيل مفاتيح الاسهم بالكود

كود :
   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 يمكنك التعديل وفق اندكس الخلايا التي لديك
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
تم الشكر بواسطة: WaeLx , WaeLx , asemshahen5 , stiger
#4
(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 يمكنك التعديل وفق اندكس الخلايا التي لديك

تمت التجربة و لم يعمل ايضا و يظهر رسالة خطأ ان لا يمكن ان تكون قيمة السعر فارغة و كل القيمة موجودة و ظاهره  اساسا
الرد
تم الشكر بواسطة: asemshahen5
#5
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 
التعليمة اللي عايزها مش لازمها لوب .
الرد
تم الشكر بواسطة: stiger , ابراهيم ايبو
#6
(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 
التعليمة اللي عايزها مش لازمها لوب .
مشكور يا غالي علي الرد
جربت الكود و لا يعمل بيتم ادخال القيمة عادي و هيا اكبر من القيمة المتاحة
الرد
تم الشكر بواسطة: asemshahen5
#7
السلام عليكم ورحمة الله وبركاته
جزاك الله كل خير اخي عاصم انت محق لاداعي لجملة الفور
اخي الكريم اولا سؤالك عن التحقق من ان القيمة اكبر من المتاح اما موضوع السعر فهو شيء مفروغ منه طبعا يجب ادخال السعر ولو ان سؤالك متعلق بجزئية الكمية
من ناحية اخرى عندما تضع الكمية وتكتبها في الخلية طبيعي لن يحصل شيئ الا اذا انتقلت الى خلية اخرى اما بمفتاح تاب لانك تستخدم حذث cellEndEdit وليس حدث تغيير القيمة
ويجب الانتقال او الادخال حتر يتم كود التحقق
ناحية اخرى هل تتعامل في الكمية بالفاصلة حتى يكون نوع البيانات double
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







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

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

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

اتمني تكون الفكرة وصلت 
و شكرا لكم
الرد
تم الشكر بواسطة: asemshahen5
#9
السلام عليكم اخي الكريم
ضع مثال مصغر لماتريد ختى يمكن مساعدتك مني او من اي احد من اخوتك في المنتدى
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







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

تسلم يا غالي
تم ارفاق مثال 
.zip   WindowsApp1.zip (الحجم : 80.28 ك ب / التحميلات : 10)

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

و شكرا
الرد
تم الشكر بواسطة: asemshahen5



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم