تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] ارجو حل هذه المشكلة
#1
السلام عليكم
اريد حل هذا اللغز.....
في برمجة زر حفظ في برنامج مبيعات ظهرت مشكلة كالتالي


Private Sub bat_save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bat_save.Click
        Dim cmmd As New OleDbCommand
        Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=small cashier.accdb")
        cmmd = New OleDbCommand("insert into orders (id, order_date, user_name, total, cu_name) values (@id, @order_date, @user_name, @total, @cu_name)", con)
        cmmd.Parameters.Add("@id", OleDbType.Integer).Value = txt_nb.Text
        cmmd.Parameters.Add("@order_date", OleDbType.Date).Value = txt_date.Text
        cmmd.Parameters.Add("@user_name", OleDbType.VarChar).Value = txt_cshr.Text
        cmmd.Parameters.Add("@total", OleDbType.Currency).Value = txt_tot.Text
        cmmd.Parameters.Add("@cu_name", OleDbType.VarChar).Value = txt_cunam.Text
        con.Open()
        cmmd.ExecuteNonQuery()


        Dim cmd As New OleDbCommand
        cmd = New OleDbCommand("insert into orders_d (id_o, code, iname_o, price_o, qty_o, tot_o) values (@id_o, @code, @iname_o, @price_o, @qty_o, @tot_o)", con)
        For i As Integer = 0 To dgv1.Rows.Count - 1
            Dim code, nam, qty As String
            Dim price, tot As Double
            code = dgv1.Rows(i).Cells(0).Value
            nam = dgv1.Rows(i).Cells(1).Value
            price = dgv1.Rows(i).Cells(2).Value
            qty = dgv1.Rows(i).Cells(3).Value
            tot = dgv1.Rows(i).Cells(4).Value

            cmd.Parameters.Add("@id_o", OleDbType.Integer).Value = txt_nb.Text
            cmd.Parameters.Add("@code", OleDbType.VarChar).Value = code
            cmd.Parameters.Add("@iname_o", OleDbType.VarChar).Value = nam
            cmd.Parameters.Add("@price_o", OleDbType.Currency).Value = price
            cmd.Parameters.Add("@qty_o", OleDbType.VarChar).Value = qty
            cmd.Parameters.Add("@tot_o", OleDbType.Currency).Value = tot
            cmd.ExecuteNonQuery()


        Next

        con.Close()
        txt_nb.Text = max_order() + 1
        dt.Rows.Clear()
        txt_bay.Clear()
        txt_cunam.Clear()
        txt_cumob.Clear()
        txt_cuadrs.Clear()
        txt_icod.Select()
        clc()


   End Sub



يتم الحفظ في الجدول الاول تمام
ولكن في جدول التفاصيل يتم حفظ اول صنف فقط في الفاتورة بتفاصيله كاملة (السعر والكمية...)
ويكرر هذا الصنف في الحفظ بعدد الاصناف +1
ولا يتم حفظ بقية اصناف الفاتورة
الرد }}}
تم الشكر بواسطة:
#2
قم بإدخال جملة insert داخل for
الرد }}}
تم الشكر بواسطة: علاء الكبابي , علاء الكبابي
#3
(31-01-20, 06:24 PM)larbihamri كتب : قم بإدخال جملة insert  داخل for
للاسف مش فاهم تبقى ازاي؟

(31-01-20, 06:24 PM)larbihamri كتب : قم بإدخال جملة insert  داخل for

عندما اعدت ترتيب الجمل بهذا الشكل
For i As Integer = 0 To dgv1.Rows.Count - 1
            Dim code, nam, qty As String
            Dim price, tot As Double
            code = dgv1.Rows(i).Cells(0).Value
            nam = dgv1.Rows(i).Cells(1).Value
            price = dgv1.Rows(i).Cells(2).Value
            qty = dgv1.Rows(i).Cells(3).Value
            tot = dgv1.Rows(i).Cells(4).Value
            Dim cmd As New OleDbCommand
            cmd = New OleDbCommand("insert into orders_d (id_o, code, iname_o, price_o, qty_o, tot_o) values (@id_o, @code, @iname_o, @price_o, @qty_o, @tot_o)", con)

            cmd.Parameters.Add("@id_o", OleDbType.Integer).Value = txt_nb.Text
            cmd.Parameters.Add("@code", OleDbType.VarChar).Value = code
            cmd.Parameters.Add("@iname_o", OleDbType.VarChar).Value = nam
            cmd.Parameters.Add("@price_o", OleDbType.Currency).Value = price
            cmd.Parameters.Add("@qty_o", OleDbType.VarChar).Value = qty
            cmd.Parameters.Add("@tot_o", OleDbType.Currency).Value = tot
            cmd.ExecuteNonQuery()

        Next
        con.Close()
        txt_nb.Text = max_order() + 1
        dt.Rows.Clear()
ظهرت مشكلة جديدة وهي 
parameter @code has no default value
ويتوقف البرنامج عن العمل رغم ان كل قيمة بتدخل في مكانها الصحيح في الجدول وبيتم حفظ تفاصيل الفاتورة بشكل صحيح
الرد }}}
تم الشكر بواسطة:
#4
كود :
For i As Integer = 0 To dgv1.Rows.Count - 1

cmd = New OleDbCommand("insert into orders_d (id_o, code, iname_o, price_o, qty_o, tot_o) values (@id_o, @code, @iname_o, @price_o, @qty_o, @tot_o)", con)
           Dim code, nam, qty As String
           Dim price, tot As Double
           code = dgv1.Rows(i).Cells(0).Value
           nam = dgv1.Rows(i).Cells(1).Value
           price = dgv1.Rows(i).Cells(2).Value
           qty = dgv1.Rows(i).Cells(3).Value
           tot = dgv1.Rows(i).Cells(4).Value

           cmd.Parameters.Add(New OleDbParameter("@id_o", OleDbType.Integer)).Value = txt_nb.Text
           cmd.Parameters.Add(New OleDbParameter("@code", OleDbType.VarChar)).Value = code
           cmd.Parameters.Add(New OleDbParameter("@iname_o", OleDbType.VarChar)).Value = nam
           cmd.Parameters.Add(New OleDbParameter("@price_o", OleDbType.Currency)).Value = price
           cmd.Parameters.Add(New OleDbParameter("@qty_o", OleDbType.VarChar)).Value = qty
           cmd.Parameters.Add(New OleDbParameter("@tot_o", OleDbType.Currency)).Value = tot
           cmd.ExecuteNonQuery()


       Next
الرد }}}
تم الشكر بواسطة: علاء الكبابي
#5
(31-01-20, 06:19 PM)علاء الكبابي كتب : السلام عليكم
اريد حل هذا اللغز.....
في برمجة زر حفظ في برنامج مبيعات ظهرت مشكلة كالتالي


Private Sub bat_save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bat_save.Click
        Dim cmmd As New OleDbCommand
        Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=small cashier.accdb")
        cmmd = New OleDbCommand("insert into orders (id, order_date, user_name, total, cu_name) values (@id, @order_date, @user_name, @total, @cu_name)", con)
        cmmd.Parameters.Add("@id", OleDbType.Integer).Value = txt_nb.Text
        cmmd.Parameters.Add("@order_date", OleDbType.Date).Value = txt_date.Text
        cmmd.Parameters.Add("@user_name", OleDbType.VarChar).Value = txt_cshr.Text
        cmmd.Parameters.Add("@total", OleDbType.Currency).Value = txt_tot.Text
        cmmd.Parameters.Add("@cu_name", OleDbType.VarChar).Value = txt_cunam.Text
        con.Open()
        cmmd.ExecuteNonQuery()


        Dim cmd As New OleDbCommand
        cmd = New OleDbCommand("insert into orders_d (id_o, code, iname_o, price_o, qty_o, tot_o) values (@id_o, @code, @iname_o, @price_o, @qty_o, @tot_o)", con)
        For i As Integer = 0 To dgv1.Rows.Count - 1
            Dim code, nam, qty As String
            Dim price, tot As Double
            code = dgv1.Rows(i).Cells(0).Value
            nam = dgv1.Rows(i).Cells(1).Value
            price = dgv1.Rows(i).Cells(2).Value
            qty = dgv1.Rows(i).Cells(3).Value
            tot = dgv1.Rows(i).Cells(4).Value

            cmd.Parameters.Add("@id_o", OleDbType.Integer).Value = txt_nb.Text
            cmd.Parameters.Add("@code", OleDbType.VarChar).Value = code
            cmd.Parameters.Add("@iname_o", OleDbType.VarChar).Value = nam
            cmd.Parameters.Add("@price_o", OleDbType.Currency).Value = price
            cmd.Parameters.Add("@qty_o", OleDbType.VarChar).Value = qty
            cmd.Parameters.Add("@tot_o", OleDbType.Currency).Value = tot
            cmd.ExecuteNonQuery()


        Next

        con.Close()
        txt_nb.Text = max_order() + 1
        dt.Rows.Clear()
        txt_bay.Clear()
        txt_cunam.Clear()
        txt_cumob.Clear()
        txt_cuadrs.Clear()
        txt_icod.Select()
        clc()


   End Sub



يتم الحفظ في الجدول الاول تمام
ولكن في جدول التفاصيل يتم حفظ اول صنف فقط في الفاتورة بتفاصيله كاملة (السعر والكمية...)
ويكرر هذا الصنف في الحفظ بعدد الاصناف +1
ولا يتم حفظ بقية اصناف الفاتورة

يجب افراغ الباراميترات قبل اضافة الباراميترات لانها داخل for
يعني أظف هذا السطر
cmd.Parameters.Clear
قبل هذا السطر
cmd.Parameters.Add("@id_o", OleDbType.Integer).Value = txt_nb.Text
الرد }}}
تم الشكر بواسطة: علاء الكبابي , علاء الكبابي
#6
(31-01-20, 06:41 PM)larbihamri كتب :
كود :
For i As Integer = 0 To dgv1.Rows.Count - 1

cmd = New OleDbCommand("insert into orders_d (id_o, code, iname_o, price_o, qty_o, tot_o) values (@id_o, @code, @iname_o, @price_o, @qty_o, @tot_o)", con)
           Dim code, nam, qty As String
           Dim price, tot As Double
           code = dgv1.Rows(i).Cells(0).Value
           nam = dgv1.Rows(i).Cells(1).Value
           price = dgv1.Rows(i).Cells(2).Value
           qty = dgv1.Rows(i).Cells(3).Value
           tot = dgv1.Rows(i).Cells(4).Value

           cmd.Parameters.Add(New OleDbParameter("@id_o", OleDbType.Integer)).Value = txt_nb.Text
           cmd.Parameters.Add(New OleDbParameter("@code", OleDbType.VarChar)).Value = code
           cmd.Parameters.Add(New OleDbParameter("@iname_o", OleDbType.VarChar)).Value = nam
           cmd.Parameters.Add(New OleDbParameter("@price_o", OleDbType.Currency)).Value = price
           cmd.Parameters.Add(New OleDbParameter("@qty_o", OleDbType.VarChar)).Value = qty
           cmd.Parameters.Add(New OleDbParameter("@tot_o", OleDbType.Currency)).Value = tot
           cmd.ExecuteNonQuery()


       Next
للأسف تظهر نفس المشكلة كما في الصورة


الملفات المرفقة صورة/صور
   
الرد }}}
تم الشكر بواسطة:
#7
هل code الذي في dgv1 لديه قيمة او قيمة فارغة ؟

او ان code غير موجودة قي قاعدة البيانات او غير مكتوبة بطريقة صحيحة
الرد }}}
تم الشكر بواسطة: علاء الكبابي , علاء الكبابي
#8
(31-01-20, 06:49 PM)alsalamoni كتب : يجب افراغ الباراميترات قبل اضافة الباراميترات لانها داخل for
يعني أظف هذا السطر
cmd.Parameters.Clear
قبل هذا السطر
cmd.Parameters.Add("@id_o", OleDbType.Integer).Value = txt_nb.Text

اسف جدا ظهرت نفس المشكلة
كما في الشكل

(31-01-20, 06:56 PM)larbihamri كتب : هل code  الذي في dgv1 لديه قيمة او قيمة فارغة ؟

او ان code غير موجودة قي قاعدة البيانات او غير مكتوبة بطريقة صحيحة

[quote pid='155753' dateline='1580482896']

(31-01-20, 06:56 PM)larbihamri كتب : هل code  الذي في dgv1 لديه قيمة او قيمة فارغة ؟

او ان code غير موجودة قي قاعدة البيانات او غير مكتوبة بطريقة صحيحة

[/quote]


الملفات المرفقة صورة/صور
           
الرد }}}
تم الشكر بواسطة:
#9
(31-01-20, 07:01 PM)علاء الكبابي كتب :
(31-01-20, 06:49 PM)alsalamoni كتب : يجب افراغ الباراميترات قبل اضافة الباراميترات لانها داخل for
يعني أظف هذا السطر
cmd.Parameters.Clear
قبل هذا السطر
cmd.Parameters.Add("@id_o", OleDbType.Integer).Value = txt_nb.Text

اسف جدا ظهرت نفس المشكلة
كما في الشكل

مشاركتي كانت على اساس الكود الذي في اول اول الموضوع

(31-01-20, 06:19 PM)علاء الكبابي كتب : السلام عليكم
اريد حل هذا اللغز.....
في برمجة زر حفظ في برنامج مبيعات ظهرت مشكلة كالتالي


Private Sub bat_save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bat_save.Click
        Dim cmmd As New OleDbCommand
        Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=small cashier.accdb")
        cmmd = New OleDbCommand("insert into orders (id, order_date, user_name, total, cu_name) values (@id, @order_date, @user_name, @total, @cu_name)", con)
        cmmd.Parameters.Add("@id", OleDbType.Integer).Value = txt_nb.Text
        cmmd.Parameters.Add("@order_date", OleDbType.Date).Value = txt_date.Text
        cmmd.Parameters.Add("@user_name", OleDbType.VarChar).Value = txt_cshr.Text
        cmmd.Parameters.Add("@total", OleDbType.Currency).Value = txt_tot.Text
        cmmd.Parameters.Add("@cu_name", OleDbType.VarChar).Value = txt_cunam.Text
        con.Open()
        cmmd.ExecuteNonQuery()


        Dim cmd As New OleDbCommand
        cmd = New OleDbCommand("insert into orders_d (id_o, code, iname_o, price_o, qty_o, tot_o) values (@id_o, @code, @iname_o, @price_o, @qty_o, @tot_o)", con)
        For i As Integer = 0 To dgv1.Rows.Count - 1
            Dim code, nam, qty As String
            Dim price, tot As Double
            code = dgv1.Rows(i).Cells(0).Value
            nam = dgv1.Rows(i).Cells(1).Value
            price = dgv1.Rows(i).Cells(2).Value
            qty = dgv1.Rows(i).Cells(3).Value
            tot = dgv1.Rows(i).Cells(4).Value

            cmd.Parameters.Add("@id_o", OleDbType.Integer).Value = txt_nb.Text
            cmd.Parameters.Add("@code", OleDbType.VarChar).Value = code
            cmd.Parameters.Add("@iname_o", OleDbType.VarChar).Value = nam
            cmd.Parameters.Add("@price_o", OleDbType.Currency).Value = price
            cmd.Parameters.Add("@qty_o", OleDbType.VarChar).Value = qty
            cmd.Parameters.Add("@tot_o", OleDbType.Currency).Value = tot
            cmd.ExecuteNonQuery()


        Next

        con.Close()
        txt_nb.Text = max_order() + 1
        dt.Rows.Clear()
        txt_bay.Clear()
        txt_cunam.Clear()
        txt_cumob.Clear()
        txt_cuadrs.Clear()
        txt_icod.Select()
        clc()


   End Sub



يتم الحفظ في الجدول الاول تمام
ولكن في جدول التفاصيل يتم حفظ اول صنف فقط في الفاتورة بتفاصيله كاملة (السعر والكمية...)
ويكرر هذا الصنف في الحفظ بعدد الاصناف +1
ولا يتم حفظ بقية اصناف الفاتورة

واذا كان هناك حقل ترقيم تلقائي لا تكتبه في جملة insert
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  ارجو التعديل على الدالة المرفقة - الدالة تعيد الرقم -1 new_programer 4 90 20-03-24, 01:18 PM
آخر رد: تركي الحلواني
  ممكن حل المشكلة فى الكود التالي - من مشاركة استاذنا القدير / عبدالله الدوسري new_programer 4 169 02-03-24, 07:36 PM
آخر رد: new_programer
  ارجو الافادة للضرورة mohamed sabry 1 110 13-01-24, 03:37 AM
آخر رد: Taha Okla
  ارجو المساعدة فى شاشة طباعة الباركود new_programer 10 577 09-01-24, 08:41 PM
آخر رد: new_programer
  حل هذه المشكلة الموضحة في الصورة Adel27213 3 361 21-11-23, 07:14 AM
آخر رد: justforit
  [سؤال] اخوان الاعزاء ارجو مساعدتى في حل عرض بيانات في تقرير كريستال ريبورت nazarakrawi 8 3,907 21-08-23, 11:11 PM
آخر رد: mohamed Matrix
  [SQL] يوجد لدى خطأبرمجى ارجو المساعدة عاصم النجار 6 503 26-07-23, 05:22 PM
آخر رد: عبد الخالق
  اخوانى الاحباب ارجو المساعدة فى كود النسخ واللصق mhareek 1 437 15-07-23, 02:52 PM
آخر رد: أبووسم
  سؤال مهم لدي الرجاء حل المشكلة اي سفن 10 864 29-05-23, 05:01 PM
آخر رد: اي سفن
  [VB.NET] ارجو المساعده مرفق سورس كود البرنامج فى المطلوب المساعده فيه hanyeltnen 2 611 04-02-23, 01:30 AM
آخر رد: aljzazy

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


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