منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] مساعدة في حل اخطاء الحفظ - نسخة قابلة للطباعة

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



مساعدة في حل اخطاء الحفظ - tahaayyoub - 03-02-20

Private Sub BtnSave_Click(sender As Object, e As EventArgs) Handles BtnSave.Click
        Dim ssd As String = GetAutoIncrement("affaires", "id_aff")
        TextBox2.Text = ssd
        If CmbType.Text = "" Then
            MessageBox.Show("ادخل نوع القضية", "", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            CmbType.Focus()
            Return
        End If
        If CmbNature.Text = "" Then
            MessageBox.Show("ادخل طبيعة القضية", "", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            CmbNature.Focus()
            Return
        End If
        If MaskedTextBox1.Text = "" Then
            MessageBox.Show("ادخل تاريخ الايداع", "", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            MaskedTextBox1.Focus()
            Return
        End If
        Try
            Connect()
            con.Open()
            Dim cb As String = "insert into affaires ([id_aff],[id_user],[type_aff],[nature_aff],[date_depot],[date_convoquer],[date_realiser],[payer],[avance],[reglement],[observation]) VALUES (@d1,@d2,@d3,@d4,@d5,@d6,@d7,@d8,@d9,@d10,@d11)"
            cmd = New SqlCommand(cb)
            cmd.Connection = con
            cmd.Parameters.AddWithValue("@d1", TextBox2.Text).ToString()
            cmd.Parameters.AddWithValue("@d2", Label13.Text).ToString()
            cmd.Parameters.AddWithValue("@d3", CmbType.Text).ToString()
            cmd.Parameters.AddWithValue("@d4", CmbNature.Text).ToString()
            cmd.Parameters.AddWithValue("@d5", MaskedTextBox1.Text).ToString()
            cmd.Parameters.AddWithValue("@d6", MaskedTextBox2.Text).ToString()
            cmd.Parameters.AddWithValue("@d7", MaskedTextBox3.Text).ToString()
            cmd.Parameters.AddWithValue("@d8", TextBox3.Text).ToString()
            cmd.Parameters.AddWithValue("@d9", TextBox4.Text).ToString()
            cmd.Parameters.AddWithValue("@d10", TextBox5.Text).ToString()
            cmd.Parameters.AddWithValue("@d11", TextBox1.Text).ToString()
            cmd.ExecuteNonQuery()
            con.Close()
            MessageBox.Show("تمت عملية الحفظ بنجاح", "tiers", MessageBoxButtons.OK, MessageBoxIcon.Information)
            BtnDelete.Enabled = False
            BtnUpdate.Enabled = False
            reset()
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
        End Try
    End Sub
يظهر الخطا الموضح في الصورة 1


وعند الضغط مرة اخرى على زر تسجيل يظهر صورة 2


RE: مساعدة في حل اخطاء الحفظ - baha - 03-02-20

(03-02-20, 06:44 AM)tahaayyoub كتب : Private Sub BtnSave_Click(sender As Object, e As EventArgs) Handles BtnSave.Click
        Dim ssd As String = GetAutoIncrement("affaires", "id_aff")
        TextBox2.Text = ssd
        If CmbType.Text = "" Then
            MessageBox.Show("ادخل نوع القضية", "", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            CmbType.Focus()
            Return
        End If
        If CmbNature.Text = "" Then
            MessageBox.Show("ادخل طبيعة القضية", "", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            CmbNature.Focus()
            Return
        End If
        If MaskedTextBox1.Text = "" Then
            MessageBox.Show("ادخل تاريخ الايداع", "", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            MaskedTextBox1.Focus()
            Return
        End If
        Try
            Connect()
            con.Open()
            Dim cb As String = "insert into affaires ([id_aff],[id_user],[type_aff],[nature_aff],[date_depot],[date_convoquer],[date_realiser],[payer],[avance],[reglement],[observation]) VALUES (@d1,@d2,@d3,@d4,@d5,@d6,@d7,@d8,@d9,@d10,@d11)"
            cmd = New SqlCommand(cb)
            cmd.Connection = con
            cmd.Parameters.AddWithValue("@d1", TextBox2.Text).ToString()
            cmd.Parameters.AddWithValue("@d2", Label13.Text).ToString()
            cmd.Parameters.AddWithValue("@d3", CmbType.Text).ToString()
            cmd.Parameters.AddWithValue("@d4", CmbNature.Text).ToString()
            cmd.Parameters.AddWithValue("@d5", MaskedTextBox1.Text).ToString()
            cmd.Parameters.AddWithValue("@d6", MaskedTextBox2.Text).ToString()
            cmd.Parameters.AddWithValue("@d7", MaskedTextBox3.Text).ToString()
            cmd.Parameters.AddWithValue("@d8", TextBox3.Text).ToString()
            cmd.Parameters.AddWithValue("@d9", TextBox4.Text).ToString()
            cmd.Parameters.AddWithValue("@d10", TextBox5.Text).ToString()
            cmd.Parameters.AddWithValue("@d11", TextBox1.Text).ToString()
            cmd.ExecuteNonQuery()
            con.Close()
            MessageBox.Show("تمت عملية الحفظ بنجاح", "tiers", MessageBoxButtons.OK, MessageBoxIcon.Information)
            BtnDelete.Enabled = False
            BtnUpdate.Enabled = False
            reset()
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
        End Try
    End Sub
يظهر الخطا الموضح في الصورة 1


وعند الضغط مرة اخرى على زر تسجيل يظهر صورة 2

السلام عليكم ورحمة الله وبركاته 
أولا.  المهم هو الكود الذي تحت  connect() و  reset() .
قد يكون كل ما تضغط على الزر يغير نص الاتصال في connect().
 ويفضل اضافة   con.close() بعد ظهور رسالة الاستناء.

تمنياتي لك وللجميع التوفيق



RE: مساعدة في حل اخطاء الحفظ - asemshahen5 - 03-02-20

استبدل :
كود :
con.open()
بـ :

كود :
If con.State = ConnectionState.Closed Then con.Open()



RE: مساعدة في حل اخطاء الحفظ - egypt 2020 - 03-02-20

(03-02-20, 10:53 AM)asemshahen5 كتب : استبدل :
كود :
con.open()
بـ :

كود :
If con.State = ConnectionState.Closed Then con.Open()

علي ما اعتقد استاذ asemshahen5 الموضوع مش جملة اتصال .

المشكلة عندة في حفظ التاريخ وتقريبا كدة بيستخدم تيكست لحفظ التاريخ بدل من اداة التاريخ  .

1- استخدم اداة التاريخ DateTimePicker1

2- خلي الخاصية FORMATE = SHORT

3- اتاكد من حقل التاريخ بقاعدة البيانات او خلية تاريخ وخلي الخاصية الخاصة بية  Short Date

4-وعدل بارميتر الخاص بحقل التاريخ

5- ضع البارميتر التالي في حقل التاريخ وفقا لاسم الحقل لديك.

6- طبعا تقدر تستخدم التيكست بس مش صح الطريقة دية هتحتاج تعمل CONVERT وملوش داعي هنا .

كود :
  com.Parameters.AddWithValue("@employee_date", DateTimePicker1.Value.ToShortDateString)
اما لو تيكست وعايز تحفظها بوضعها كتيكست لو انا فاهم صح .


فعدل اداة التاريخ بالكود التالي ايا كان اسمها .

كود :
 Convert.ToDateTime(MaskedTextBox1.Text).ToShortDateString



RE: مساعدة في حل اخطاء الحفظ - asemshahen5 - 03-02-20

(03-02-20, 02:20 PM)egypt 2020 كتب :
(03-02-20, 10:53 AM)asemshahen5 كتب : استبدل :
كود :
con.open()
بـ :

كود :
If con.State = ConnectionState.Closed Then con.Open()

علي ما اعتقد استاذ asemshahen5 الموضوع مش جملة اتصال .

المشكلة عندة في حفظ التاريخ وتقريبا كدة بيستخدم تيكست لحفظ التاريخ بدل من اداة التاريخ  .

1- استخدم اداة التاريخ DateTimePicker1

2- خلي الخاصية FORMATE = SHORT

3- اتاكد من حقل التاريخ بقاعدة البيانات او خلية تاريخ وخلي الخاصية الخاصة بية  Short Date

4-وعدل بارميتر الخاص بحقل التاريخ

5- ضع البارميتر التالي في حقل التاريخ وفقا لاسم الحقل لديك.

6- طبعا تقدر تستخدم التيكست بس مش صح الطريقة دية هتحتاج تعمل CONVERT وملوش داعي هنا .

كود :
  com.Parameters.AddWithValue("@employee_date", DateTimePicker1.Value.ToShortDateString)
اما لو تيكست وعايز تحفظها بوضعها كتيكست لو انا فاهم صح .


فعدل اداة التاريخ بالكود التالي ايا كان اسمها .

كود :
 Convert.ToDateTime(MaskedTextBox1.Text).ToShortDateString

وعند الضغط مرة اخرى على زر تسجيل يظهر صورة 2 بالنسبة لما سبق فما قلته انت عن الخطأ الاول صحيح اما بالنسبة للخطأ الثاني فكتبت حله في مشاركتي و لك مني جزيل الشكر و التقييم .


RE: مساعدة في حل اخطاء الحفظ - egypt 2020 - 03-02-20

(03-02-20, 02:35 PM)asemshahen5 كتب :
(03-02-20, 02:20 PM)egypt 2020 كتب :
(03-02-20, 10:53 AM)asemshahen5 كتب : استبدل :
كود :
con.open()
بـ :

كود :
If con.State = ConnectionState.Closed Then con.Open()

علي ما اعتقد استاذ asemshahen5 الموضوع مش جملة اتصال .

المشكلة عندة في حفظ التاريخ وتقريبا كدة بيستخدم تيكست لحفظ التاريخ بدل من اداة التاريخ  .

1- استخدم اداة التاريخ DateTimePicker1

2- خلي الخاصية FORMATE = SHORT

3- اتاكد من حقل التاريخ بقاعدة البيانات او خلية تاريخ وخلي الخاصية الخاصة بية  Short Date

4-وعدل بارميتر الخاص بحقل التاريخ

5- ضع البارميتر التالي في حقل التاريخ وفقا لاسم الحقل لديك.

6- طبعا تقدر تستخدم التيكست بس مش صح الطريقة دية هتحتاج تعمل CONVERT وملوش داعي هنا .

كود :
  com.Parameters.AddWithValue("@employee_date", DateTimePicker1.Value.ToShortDateString)
اما لو تيكست وعايز تحفظها بوضعها كتيكست لو انا فاهم صح .


فعدل اداة التاريخ بالكود التالي ايا كان اسمها .

كود :
 Convert.ToDateTime(MaskedTextBox1.Text).ToShortDateString

وعند الضغط مرة اخرى على زر تسجيل يظهر صورة 2 بالنسبة لما سبق فما قلته انت عن الخطأ الاول صحيح اما بالنسبة للخطأ الثاني فكتبت حله في مشاركتي و لك مني جزيل الشكر و اللقييم .

ولك كل الشكرا ايضا  |استاذ  asemshahen5

ممكن مع الخطا الاتصال يفضل مفتوح وخصوصا انك لو لاحظت انة في تصيد الخطا لم يغلق الاتصال .

ارجو تقبل مروري |استاذ asemshahen5 .


RE: مساعدة في حل اخطاء الحفظ - asemshahen5 - 03-02-20

بارك الله فيك انت تقبل مروري و جزاك الله عنا كل خير .


RE: مساعدة في حل اخطاء الحفظ - egypt 2020 - 03-02-20

(03-02-20, 02:45 PM)asemshahen5 كتب : بارك الله فيك انت تقبل مروري و جزاك الله عنا كل خير .


اسأل الله ان يرزقك من فضلة .

ويرزق الجميع كل الخير .


RE: مساعدة في حل اخطاء الحفظ - alsalamoni - 03-02-20

(03-02-20, 06:44 AM)tahaayyoub كتب : Private Sub BtnSave_Click(sender As Object, e As EventArgs) Handles BtnSave.Click
        Dim ssd As String = GetAutoIncrement("affaires", "id_aff")
        TextBox2.Text = ssd
        If CmbType.Text = "" Then
            MessageBox.Show("ادخل نوع القضية", "", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            CmbType.Focus()
            Return
        End If
        If CmbNature.Text = "" Then
            MessageBox.Show("ادخل طبيعة القضية", "", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            CmbNature.Focus()
            Return
        End If
        If MaskedTextBox1.Text = "" Then
            MessageBox.Show("ادخل تاريخ الايداع", "", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            MaskedTextBox1.Focus()
            Return
        End If
        Try
            Connect()
            con.Open()
            Dim cb As String = "insert into affaires ([id_aff],[id_user],[type_aff],[nature_aff],[date_depot],[date_convoquer],[date_realiser],[payer],[avance],[reglement],[observation]) VALUES (@d1,@d2,@d3,@d4,@d5,@d6,@d7,@d8,@d9,@d10,@d11)"
            cmd = New SqlCommand(cb)
            cmd.Connection = con
            cmd.Parameters.AddWithValue("@d1", TextBox2.Text).ToString()
            cmd.Parameters.AddWithValue("@d2", Label13.Text).ToString()
            cmd.Parameters.AddWithValue("@d3", CmbType.Text).ToString()
            cmd.Parameters.AddWithValue("@d4", CmbNature.Text).ToString()
            cmd.Parameters.AddWithValue("@d5", MaskedTextBox1.Text).ToString()
            cmd.Parameters.AddWithValue("@d6", MaskedTextBox2.Text).ToString()
            cmd.Parameters.AddWithValue("@d7", MaskedTextBox3.Text).ToString()
            cmd.Parameters.AddWithValue("@d8", TextBox3.Text).ToString()
            cmd.Parameters.AddWithValue("@d9", TextBox4.Text).ToString()
            cmd.Parameters.AddWithValue("@d10", TextBox5.Text).ToString()
            cmd.Parameters.AddWithValue("@d11", TextBox1.Text).ToString()
            cmd.ExecuteNonQuery()
            con.Close()
            MessageBox.Show("تمت عملية الحفظ بنجاح", "tiers", MessageBoxButtons.OK, MessageBoxIcon.Information)
            BtnDelete.Enabled = False
            BtnUpdate.Enabled = False
            reset()
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
        End Try
    End Sub
يظهر الخطا الموضح في الصورة 1


وعند الضغط مرة اخرى على زر تسجيل يظهر صورة 2




الاخ asemshahen5 ذكر ان تستخدم اداة DateTimePicker وهذا جيد
ولكن يعب هذه الاداه لو تم الضغط على زر الحفظ سياخذ التاريخ الموجود حتى ولو نسيت ان تغيره.

الطريقة الافضل للتواريخ المهمة هي كما فعلتها انت باستخدم MaskedTextBox
ولكنك نسيت أن تضع لMaskedTextBox2 وMaskedTextBox3 شرط تحقق كما فعلت لMaskedTextBox1


الخطا في الصورة الاولى انك لم تكتب التاريخ الخاص ب(تاريخ الانجاز) كما يضهر في الصورة


الخطا الثاني شرحوا حله الاخوه قبلي