الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

خطأ فى هذا الكود ارجو التوضيح

بدأه ™Sn!p3R™ في 13 أكتوبر 2013 · 9 رد · 500 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

استخدمت هذا الكود بغرض إذا كان يوجد فى العمود الاول قيمه مشابه للقيمة الموجوده فى textbox8 يقوم بتنفيذ شرط if 

        If DataGridView5.Item(0, DataGridView5.Rows.Count - 1).Value = TextBox8.Text Then
            If MsgBox("يوجد بالفعل سجل لهذا الشهر هل توافق على الاستبدال ؟ ", MsgBoxStyle.OkCancel, "!!تنبيه") = MsgBoxResult.Cancel Then
            End If

يظهر هذا الخطأ

 

asas.jpg

#2

السلام عليكم

 

جرب ان تجعل الكود هكذا

 

 

TRY    

 

الكود الخاص بك هنا

 

   Catch ex As Exception
        

        End Try

#3

@™Sn!p3R™

 

في اي مكان وضعت الكود؟ لانه حسب ما فهمت فان الكود يتنفذ ولا يوجد اي ROW في DATAGRIDVIEW

 

@mhmadokasha

 

ربما جوابك صحيح. وربما يحل المشكلة. ولكن...

حاول التخفيف من استعمال TRY/CATCH لان كثرة حصول الاخطاء ومحاولة احتواءها يبطئ عمل البرنامج.

انصح باسعمال IF/ENDIF للتحقق من ان الكود يجب ان ينفذ ام لا. ختى لا يحدث الخطأ من الاساس.

Samir Ibrahim

VFP Blog

VB.NET Blog

#4
samir ibrahim كتب:

@™Sn!p3R™

 

في اي مكان وضعت الكود؟ لانه حسب ما فهمت فان الكود يتنفذ ولا يوجد اي ROW في DATAGRIDVIEW

 

@mhmadokasha

 

ربما جوابك صحيح. وربما يحل المشكلة. ولكن...

حاول التخفيف من استعمال TRY/CATCH لان كثرة حصول الاخطاء ومحاولة احتواءها يبطئ عمل البرنامج.

انصح باسعمال IF/ENDIF للتحقق من ان الكود يجب ان ينفذ ام لا. ختى لا يحدث الخطأ من الاساس.

 

 

mhmadokasha

شكرا اخى جربت و ما نفع 

 

samir ibrahim

 

الكود مكتوب داخل زرار الحفظ للدتاجريد فيو اريده قبل ان يحفظ البيانات إذا كان الاى دى موجود بالداتا جريد فيو يقوم بالاستبدال ولا يقوم بحفظ سجل جديد هذا هو الكود المستخدم 

        If DataGridView5.Item(0, DataGridView5.Rows.Count - 1).Value = TextBox8.Text Then
            If MsgBox("يوجد بالفعل سجل لهذا الشهر هل توافق على الاستبدال ؟ ", MsgBoxStyle.OkCancel, "!!تنبيه") = MsgBoxResult.Cancel Then
            End If
            Try
                Dim SavInto As New OleDb.OleDbCommand
                CreateConn()
                SavInto.Connection = getConn()
                SavInto.CommandType = CommandType.Text
                SavInto.CommandText = "UPDATE total SET ryear='" & ComboBox4.Text & "' ,rmonth='" & ComboBox3.Text & "' ,ltotal= '" & TextBox6.Text & "' WHERE  ID = " & TextBox8.Text & "  "
                OpenConn()
                If SavInto.ExecuteNonQuery() Then
                    'إذا تم تعديل قاعدة البيانات بنجاح يتم تعديل الداتاقريد مباشرة
                    MsgBox("تم الاســـتبدال بنجـــاح", MsgBoxStyle.MsgBoxRight, "نجاح العملية")
                    DataGridView5.Item(0, DataGridView5.CurrentCellAddress.Y).Value() = ComboBox4.Text
                    DataGridView5.Item(1, DataGridView5.CurrentCellAddress.Y).Value() = ComboBox3.Text
                    DataGridView5.Item(2, DataGridView5.CurrentCellAddress.Y).Value() = TextBox6.Text
                End If
                CloseConn()
            Catch ex As Exception
                MsgBox("صادف مشكله أثناء القيام بعمليه الإضافه , الرجاء المحاولة لاحقا", MsgBoxStyle.OkOnly, "تنبيه")
            End Try
        Else
            Try
                Dim SavInto As New OleDb.OleDbCommand
                CreateConn()
                SavInto.Connection = getConn()
                SavInto.CommandType = CommandType.Text
                SavInto.CommandText = "INSERT INTO total(ryear,rmonth,ltotal)" & _
                "values ('" & ComboBox4.Text & "','" & ComboBox3.Text & "','" & TextBox6.Text & "') "
                OpenConn()
                If SavInto.ExecuteNonQuery() Then
                    'إذا تمت عملية الإضافة بنجاح يتم اضافة الحقول إلى الداتا قريد مباشرة بدل استراجاعها من الداتابيس
                    MsgBox("تمت إضافة السجل الجديد بنجاح")
                    DataGridView5.Rows.Add()
                    DataGridView5.Item(0, DataGridView5.Rows.Count - 1).Value = ComboBox4.Text
                    DataGridView5.Item(1, DataGridView5.Rows.Count - 1).Value = ComboBox3.Text
                    DataGridView5.Item(2, DataGridView5.Rows.Count - 1).Value = TextBox6.Text
                Else
                    MsgBox("فشلت عملية الإضافة", MsgBoxStyle.MsgBoxRight, "رسالة خطأ")
                End If
                CloseConn()
            Catch ex As Exception
                MsgBox("صادف مشكله أثناء القيام بعمليه الإضافه , الرجاء المحاولة لاحقا", MsgBoxStyle.OkOnly, "تنبيه")
            End Try
        End If
#5

@™Sn!p3R™

 

اقتباس

 

الكود مكتوب داخل زرار الحفظ للدتاجريد فيو

 

لم تجاوب على سؤالي. هل هذا الكود موجد في button_click او sub datagridview_click()

 

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

 

If datagridview5.rows.count =0 then exit sub

تم تعديل هذه المشاركة بواسطة samir ibrahim في 14 أكتوبر 2013 في 19:29

Samir Ibrahim

VFP Blog

VB.NET Blog

#6

Button_Click

#7

جربت الكود اللي اعطيتك اياه؟

Samir Ibrahim

VFP Blog

VB.NET Blog

#8

لم يعمل معى للاسف 

عند التنفيذ يتم تجاهله و يعمل باقى الكود

توضيح بسيط 

فى عمود اسمه ID و الداتا جريد فييو 

و يتم ادخال ID اليه من Textbox8

عند ادخال ID مشابه لاى Id موجود فى الدتاجريد يقوم بتنفيذ الشرط 

تم تعديل هذه المشاركة بواسطة ™Sn!p3R™ في 14 أكتوبر 2013 في 21:58

#9

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

أولاً: هذا الأسلوب فى العمل غير محبذ، يجب تحديد وظيفة كل أداة فتجعل زر خاص بالإضافة وزر خاص بالتعديل

 

ثانياً: عندما تريد البحث عن قيمة معينة فى الداتا جريد فيو فأحد الأساليب عمل حلقة تكرارية على كل الصفوف واختبار القيمة فى كل صف ولكنك اختبرت القيمة فى صف واحد فقط بهذا السطر

If DataGridView5.Item(0, DataGridView5.Rows.Count - 1).Value = TextBox8.Text Then

 

ثالثاً: أنت تسأل عن الآى دى فى حين أنك تخزن فى العمود الأول السنة، فكيف تخزن السنة وتسأل عن الأى دى فى نفس العمود؟؟؟؟

 

عموماً ربما تساعدك هذه النقاط فى توجيهك لتصحيح الخطأ عندك، إلا أننى أفضل استخدام أسلوب آخر فى التعامل مع قواعد البيانات وقد رفعت فيديوهات تعليمية لهذا الموضوع فى نفس المنتدى على الرابط التالى

 

/index.php/topic/281614-%D8%A8%D8%A7%D9%84%D9%81%D9%8A%D8%AF%D9%8A%D9%88-%D8%A7%D9%84%D8%AE%D8%B7%D9%88%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%81%D9%89-%D8%A3%D9%89-%D9%85%D8%B4%D8%B1%D9%88%D8%B9/

 

ربما يفيدك هذا الأسلوب السهل البسيط فى إتمام عملك، ولكنه مكتوب بالسى شارب ويمكنك فهم الفكرة وتطبيقها بكود الفيجوال بيسك

تم تعديل هذه المشاركة بواسطة ema2000_t في 14 أكتوبر 2013 في 22:02

8

أدعو الله أن يجعل أعمالنا خالصة لوجهه الكريم --- وأن ينفعنا بما علمنا

Dr Sayed Tohamy

Programming Instructor

مدرب برمجة

---------------

EmaSoft2000

-------------------

#10

شكرا اخى الكود الذى ارفقته قبل انا اعدل عليه باستخدام الاى دى 

 

و الفكرة هى برنامج يقوم بحساب صافى ربح كل شهر ولا اريد ان يكون لكل شهر اكثر من سجل فربما يقوم مستعمل البرنامج حفظ صافى الربح قبل انتهاء الشهر بأيام و يتم تغير قيمته فيعود ليحفظه مرة اخرى وبذلك يكون لديه سجلين لشهر واحد 

مواضيع مشابهة