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
答案 0 :(得分: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