تقييم الموضوع :
  • 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 ك ب / التحميلات : 16)

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

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مشكلة فى جمع عمود فى داتا جريد فيو احمد خطاب 3 152 06-03-24, 07:49 PM
آخر رد: احمد خطاب
  حذف الاسطر الفارغه من الداتا جريد فيو اليوم السابع 3 2,357 03-03-24, 12:57 AM
آخر رد: مصمم هاوي
  كيفية جمع أرقام عمود فى الداتا جريد فيو بناءاً على بيانات معينة heem1986 5 223 25-02-24, 11:26 PM
آخر رد: heem1986
  [C#.NET] طباعة بيانات داتا جرد فيو h2551996 0 84 25-02-24, 02:31 PM
آخر رد: h2551996
  كيفية تنفيذ امر عند التعليم على checkbox بالداتا جريد فيو heem1986 2 158 21-02-24, 01:37 AM
آخر رد: heem1986
  [VB.NET] ستايل داتا جرد فيو h2551996 10 343 17-01-24, 02:52 PM
آخر رد: aljzazy
Heart [C#.NET] حول بطئ عملية نقل البينات الكثيرة من أكسس إلى داتا غريد فيو بلال بلال 11 710 15-12-23, 07:47 AM
آخر رد: foad8920
  [سؤال] كيف نستعيد قيمة من دالة ضمن مسار مستقل justforit 2 393 21-11-23, 10:51 AM
آخر رد: justforit
  كيف اجعل قيمة dateTimePicker2 تساوي dateTimePicker1 Adel27213 2 280 09-11-23, 09:07 PM
آخر رد: Adel27213
  طريقة جلب صف من قاعدة البيانات بشرط العمود ٤ لا يساوي فارغ Adel27213 2 424 07-11-23, 05:02 AM
آخر رد: Adel27213

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


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