على العموم اخي sniper
اليك هذين الرابطين اجزى الله اصحابها كل الخير
https://www.youtube.com/watch?v=br8DkBklahE&t=735s
https://www.youtube.com/watch?v=eE6dPpK6O68&t=2141s
من ناحيتي ساضع لك كود حفظ استخدمته في حفظ راس الفاتورة وتفاصيل الفاتورة حيث يتم الحفظ (عبر اللوب) من الداتاغرايد فيو فاما ان يتم الحفظ في الجدولين او لايحفظ في حال حدوث خطأ اتمنى ان يفيدك
دمت بخير ياغالي
كود :
Private Sub Btn_Save_Click(sender As Object, e As EventArgs) Handles Btn_Save.Click
Dim trans As SqlTransaction = Cn.BeginTransaction
Cmd = New SqlCommand
Cmd.Connection = Cn
Cmd.Transaction = trans
Cn.Open()
Try
Cmd.CommandText = "insert into BuyMaster(Buy_Id,Buy_Code,Buy_Date,Imp_Name,Total_Buy) Values(@Buy_Id,@Buy_Code,@Buy_Date,@Imp_Name,@Total_Buy)"
Cmd.Parameters.Add(New SqlParameter("@Buy_Id", SqlDbType.Int)).Value = Txt_Buy_id.Text
Cmd.Parameters.Add(New SqlParameter("@Buy_Code", SqlDbType.NVarChar)).Value = Txt_Buy_Code.Text
Cmd.Parameters.Add(New SqlParameter("@Buy_Date", SqlDbType.Date)).Value = CDate(Dtp_Buy_Date.Value.ToString("dd-MM-yyyy"))
Cmd.Parameters.Add(New SqlParameter("@Imp_Name", SqlDbType.NVarChar)).Value = Cmb_Imp_Name.Text
Cmd.Parameters.Add(New SqlParameter("@Total_Buy", SqlDbType.Decimal)).Value = Lbl_TotalBill.Text
Cmd.ExecuteNonQuery()
Cmd.Parameters.Clear()
For i As Integer = 0 To Dgv_BuyBill.Rows.Count - 1
Cmd.CommandText = "insert into BuyDetail(Buy_Bill_Code,Itm_Code,itm_Name,Itm_Price,Quantity,Amount,State) Values(@Buy_Bill_Code,@Itm_Code,@itm_Name,@Itm_Price,@Quantity,@Amount,@State)"
Cmd.Parameters.Clear() ' هذا السطر مهم جدا لانه يفرغ الباراميترات في كل لفة من لوب مما يمنع تكرار القيم
Cmd.Parameters.Add(New SqlParameter("@Buy_Bill_Code", SqlDbType.NVarChar)).Value = Dgv_BuyBill.Rows(i).Cells("Buy_Bill_Code").Value
Cmd.Parameters.Add(New SqlParameter("@Itm_Code", SqlDbType.NVarChar)).Value = Dgv_BuyBill.Rows(i).Cells("Itm_Code").Value
Cmd.Parameters.Add(New SqlParameter("@itm_Name", SqlDbType.NVarChar)).Value = Dgv_BuyBill.Rows(i).Cells("itm_Name").Value
Cmd.Parameters.Add(New SqlParameter("@Itm_Price", SqlDbType.Decimal)).Value = CDbl(Dgv_BuyBill.Rows(i).Cells("Price").Value.ToString())
Cmd.Parameters.Add(New SqlParameter("@Quantity", SqlDbType.Int)).Value = Dgv_BuyBill.Rows(i).Cells("Quantity").Value
Cmd.Parameters.Add(New SqlParameter("@Amount", SqlDbType.Decimal)).Value = CDbl(Dgv_BuyBill.Rows(i).Cells("Amount").Value.ToString())
Cmd.Parameters.Add(New SqlParameter("@State", SqlDbType.Bit)).Value = True
Cmd.ExecuteNonQuery()
Next
trans.Commit()
MessageBox.Show("تم حفظ البيانات بنجاح", "حفظ", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
trans.Rollback()
MessageBox.Show(ex.Message)
'MessageBox.Show("خطأ في البيانات المدخلة لم يتم الحفظ ", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
If Cn.State = ConnectionState.Open Then Cn.Close()
End Try
Cn.Close()
End Sub