Sub CariData()
CMD = New MySqlCommand("Select * from tbanggota where nomoragt='" & ComboBox1.Text & "'", conn)
RD = CMD.ExecuteReader
RD.Read()
If RD.HasRows Then
LblNamaAgt.Text = RD.Item("namaagt")
CMD = New MySqlCommand("Select SUM(totalpjm) AS KETEMU FROM tbpinjam WHERE Nomoragt='" & ComboBox1.Text & "'", conn)
RD = CMD.ExecuteReader
RD.Read()
LblTelahPjm.Text = RD.Item(0)
If LblTelahPjm.Text = 0 Then
MsgBox("" & LblNamaAgt.Text & " tidak punya pinjaman")
End If
Else
MsgBox("Nomor anggota tidak teRDaftar")
ComboBox1.Focus()
Exit Sub
End If
Call Pinjaman()
End Sub
1 回答
0
标题中提供的错误非常解释。
conn您正在两个命令之间共享变量。如果您的查询是连续的并且在它们之间是封闭的,这很好。在您的情况下,您应该创建两个不同的连接并将它们传递给您的命令。我不了解您的整个应用程序,但一般来说,最好在尽可能小的范围内创建/处理您的连接和命令,并且不要让它们长时间存在。
Sub CariData()
Using conn As New SqlConnection("connection string here")
conn.Open()
Using CMD As New SqlCommand("Select * from tbanggota where nomoragt='" & Combobox1.Text & "'", conn)
Using RD As SqlDataReader = CMD.ExecuteReader
RD.Read()
If RD.HasRows Then
LblNamaAgt.Text = RD.Item("namaagt")
Using innerconn As New SqlConnection("connection string here")
innerconn.Open()
Using innerCMD As New SqlCommand("Select SUM(totalpjm) AS KETEMU FROM tbpinjam WHERE Nomoragt='" & Combobox1.Text & "'", innerconn)
Using innerRD As SqlDataReader = innerCMD.ExecuteReader
innerRD.Read()
LblTelahPjm.Text = innerRD.Item(0)
If LblTelahPjm.Text = 0 Then
MsgBox("" & LblNamaAgt.Text & " tidak punya pinjaman")
Else
MsgBox("Nomor anggota tidak teRDaftar")
Combobox1.Focus()
Exit Sub
End If
End Using
End Using
End Using
End If
Call Pinjaman()
End Using
End Using
End Using
End Sub
此外,您的查询似乎不相互依赖,并且可以使用相同的连接按顺序运行,如果编写如下:
Sub CariData()
Using conn As New SqlConnection("connection string here")
conn.Open()
Using CMD As New SqlCommand("Select * from tbanggota where nomoragt='" & Combobox1.Text & "'", conn)
Using RD As SqlDataReader = CMD.ExecuteReader
RD.Read()
If RD.HasRows Then
LblNamaAgt.Text = RD.Item("namaagt")
End If
End Using
End Using
Using CMD As New SqlCommand("Select SUM(totalpjm) AS KETEMU FROM tbpinjam WHERE Nomoragt='" & Combobox1.Text & "'", conn)
Using RD As SqlDataReader = CMD.ExecuteReader
RD.Read()
LblTelahPjm.Text = RD.Item(0)
If LblTelahPjm.Text = 0 Then
MsgBox("" & LblNamaAgt.Text & " tidak punya pinjaman")
Else
MsgBox("Nomor anggota tidak teRDaftar")
Combobox1.Focus()
Exit Sub
End If
End Using
End Using
Call Pinjaman()
End Using
End Sub
于 2018-12-02T22:31:33.433 回答