السلام عليكم
اريد حل هذا اللغز.....
في برمجة زر حفظ في برنامج مبيعات ظهرت مشكلة كالتالي
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
يتم الحفظ في الجدول الاول تمام
ولكن في جدول التفاصيل يتم حفظ اول صنف فقط في الفاتورة بتفاصيله كاملة (السعر والكمية...)
ويكرر هذا الصنف في الحفظ بعدد الاصناف +1
ولا يتم حفظ بقية اصناف الفاتورة
31-01-20, 06:32 PM (آخر تعديل لهذه المشاركة : 31-01-20, 06:39 PM {2} بواسطة علاء الكبابي.)
(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)
Next
con.Close()
txt_nb.Text = max_order() + 1
dt.Rows.Clear()
ظهرت مشكلة جديدة وهي
parameter @code has no default value
ويتوقف البرنامج عن العمل رغم ان كل قيمة بتدخل في مكانها الصحيح في الجدول وبيتم حفظ تفاصيل الفاتورة بشكل صحيح
(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
يتم الحفظ في الجدول الاول تمام
ولكن في جدول التفاصيل يتم حفظ اول صنف فقط في الفاتورة بتفاصيله كاملة (السعر والكمية...)
ويكرر هذا الصنف في الحفظ بعدد الاصناف +1
ولا يتم حفظ بقية اصناف الفاتورة
يجب افراغ الباراميترات قبل اضافة الباراميترات لانها داخل for
يعني أظف هذا السطر
cmd.Parameters.Clear
قبل هذا السطر
cmd.Parameters.Add("@id_o", OleDbType.Integer).Value = txt_nb.Text
31-01-20, 07:01 PM (آخر تعديل لهذه المشاركة : 31-01-20, 07:06 PM {2} بواسطة علاء الكبابي.)
(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 غير موجودة قي قاعدة البيانات او غير مكتوبة بطريقة صحيحة
(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
يتم الحفظ في الجدول الاول تمام
ولكن في جدول التفاصيل يتم حفظ اول صنف فقط في الفاتورة بتفاصيله كاملة (السعر والكمية...)
ويكرر هذا الصنف في الحفظ بعدد الاصناف +1
ولا يتم حفظ بقية اصناف الفاتورة
واذا كان هناك حقل ترقيم تلقائي لا تكتبه في جملة insert