ตัดสต๊อกสินค้าไม่ได้ และขึ้น error ที่ไม่เข้าใจช่วยเข้ามาแก้ไขเป็นตัวอย่างให้ดูหรือเปล่าค่ะ
เครียดโค้ดเพือตัดสต๊อกสินค้าออกเมื่อมีคนยืมไปแต่ ตอนกดบันทึกมันขึ้น แบบนี้ หมายความว่าอะไรหรอค่ะ ขึ้น error ที่ใส่สีแดงค่ะ
error ว่า >>>>>ExecuteReader requires the command to have a transaction when the connection assigned to the command is in a pending local transaction. The Transaction property of the command has not been initialized.
Code
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
If txtID_E.Text.Trim() = "" Then
MessageBox.Show("กรุณาป้อนรหัสผู้ยืมก่อน !!!", "ข้อผิดพลาด", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtID_E.Focus()
Exit Sub
End If
If lsvProductsList.Items.Count > 0 Then
If MessageBox.Show("คุณต้องการบันทึกรายการยืมอุปกรณ์ ใช่หรือไม่ ?", "คำยืนยัน", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = DialogResult.Yes Then
tr = Conn.BeginTransaction()
sb.Remove(0, sb.Length)
sb.Append("INSERT INTO I_Customer (ID_M,Name_M,Data_W,DataCheck_W,Tel_M,Address_M)")
sb.Append(" VALUES (@ID_M,@Name_M,@Data_W,@DataCheck_W,@Tel_M,@Address_M)")
Dim sqlSave As String = sb.ToString()
With com
.CommandType = CommandType.Text
.CommandText = sqlSave
.Connection = Conn
.Transaction = tr
.Parameters.Clear()
.Parameters.Add("@ID_M", SqlDbType.NVarChar).Value = txtID_E.Text.Trim()
.Parameters.Add("@Name_M", SqlDbType.NVarChar).Value = txtName_E.Text.Trim()
.Parameters.Add("@Data_W", SqlDbType.DateTime).Value = Date.Today
.Parameters.Add("@DataCheck_W", SqlDbType.DateTime).Value = dtbCheck.Value.Date()
.Parameters.Add("@Tel_M", SqlDbType.NVarChar).Value = txtTel_E.Text.Trim()
.Parameters.Add("@Address_M", SqlDbType.NVarChar).Value = txtAddress_E.Text.Trim()
.ExecuteNonQuery()
End With
sb.Remove(0, sb.Length)
sb.Append("SELECT TOP 1 ID_B FROM I_Order")
sb.Append(" ORDER BY ID_B DESC")
sqlSave = sb.ToString()
Dim i As Integer
For i = 0 To lsvProductsList.Items.Count - 1
sb.Remove(0, sb.Length)
sb.Append("INSERT INTO I_Order (ID_B,Invoic_ID,Name_P,")
sb.Append(" Number_W,Number_approval)")
sb.Append(" VALUES (@ID_B,@Invoic_ID,@Name_P,")
sb.Append(" @Number_W,@Number_approval)")
sqlSave = sb.ToString()
'ดัก user เรื่องเวลา
'If DateTimePicker1.Value.AddDays(-1) > DateTimePicker2.Value Then
'MessageBox.Show("คุณระบุเวลาเริ่มต้น มากกว่า เวลาที่สิ้นสุด", "คุณระบบเวลาในการตรวจสอบ ผิด")
'DateTimePicker1.Value = Date.Now
' Exit Sub
'End If
With com
.CommandText = sqlSave
.Parameters.Clear()
.Parameters.Add("@ID_B", SqlDbType.Int).Value = CInt(lsvProductsList.Items(i).SubItems(0).Text)
.Parameters.Add("@Invoic_ID", SqlDbType.Int).Value = CInt(lsvProductsList.Items(i).SubItems(4).Text)
.Parameters.Add("@Name_P", SqlDbType.NVarChar).Value = CInt(lsvProductsList.Items(i).SubItems(4).Text)
.Parameters.Add("@Number_W", SqlDbType.NChar).Value = CStr(lsvProductsList.Items(i).SubItems(3).Text)
.Parameters.Add("@Number_approval", SqlDbType.NChar).Value = CStr(lsvProductsList.Items(i).SubItems(3).Text)
.ExecuteNonQuery()
End With
Dim sqlProducts As String = ""
Dim tmpRemain_P As Integer = 0
Dim tmpNumber_W As Integer = 0
Dim tmpNumber_approval As Integer = 0
Dim sqlBring As String = ""
Dim comBring As SqlCommand = New SqlCommand
sqlProducts = "SELECT ID_P,Remain_P FROM I_Equipment"
sqlProducts &= " WHERE (ID_P=@ txtID_P & " ')"
da.SelectCommand.CommandText = sqlProducts
da.Fill(ds, "I_Equipment")
tmpRemain_P = CInt(ds.Tables("I_Equipment").Rows(0).Item("Remain_P"))
ds.Tables("I_Equipment").Clear()
sqlBring = "UPDATE I_Equipment"
sqlBring &= " SET Remain_P =" & tmpRemain_P - tmpNumber_W
sqlBring &= " WHERE (ID_P=@ txtID_P & " ')"
Next
tr.Commit()
MessageBox.Show("บันทึกรายการยืมอุปกรณ์ เรียบร้อยแล้ว !!!", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information)
If IsInstallPrinter() = True Then
If prDlg.ShowDialog = DialogResult.OK Then
prDoc.Print()
End If
Else
'MessageBox.Show("กรุณาติดตั้งเครื่อง Printer ก่อนสั่งพิมพ์เอกสาร", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
MessageBox.Show("คุณไม่ติดตั้ง Printer แล้วจะพิมพ์เอกสารได้ไงเล่า 555", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
lsvProductsList.Clear()
ClearCustomerData()
ClearProductData()
lblNet.Text = "0"
txtID_E.Focus()
End If
End If
End Sub
รบกวนหน่อยนะค่ะ Tag : VB.NET
Date :
2011-10-24 21:01:09
By :
kuuk
View :
1147
Reply :
2
คำสั่ง SELECT ที่ทำงานต้องมีการระบุ Transaction ด้วยครับ
Date :
2011-10-25 12:59:37
By :
Programmer ด้อยปัญญา
Load balance : Server 01