-2
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
4

1 回答 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 回答