Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 搜索按钮没有响应_Vb.net_Ms Access - Fatal编程技术网

Vb.net 搜索按钮没有响应

Vb.net 搜索按钮没有响应,vb.net,ms-access,Vb.net,Ms Access,我创建了一个搜索按钮来查询我的MS Access数据库并显示结果,但每当我键入ID并单击搜索按钮时,它都不会执行任何操作 其他一切工作正常,它从VB表单复制数据并将其存储在MS Access数据库中,但“搜索”按钮不会查询数据库并检索数据 以下是我的搜索按钮代码: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click Dim

我创建了一个搜索按钮来查询我的MS Access数据库并显示结果,但每当我键入ID并单击搜索按钮时,它都不会执行任何操作

其他一切工作正常,它从VB表单复制数据并将其存储在MS Access数据库中,但“搜索”按钮不会查询数据库并检索数据

以下是我的搜索按钮代码:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click
    Dim found As Boolean

    Try
        cm = New OleDb.OleDbCommand
        With cm
            .Connection = cn
            .CommandType = CommandType.Text
            .CommandText = "SELECT* FROM tblInfo WHERE (ID = @ID & txtFind.Text = @ID)"
            dr = .ExecuteReader
        End With
        While dr.Read()
            found = True
            txtFirst1.Text = dr("Pfirst").ToString
            txtMid1.Text = dr("Pmiddle").ToString
            txtLast1.Text = dr("Plast").ToString
            txtAdd1.Text = dr("Paddress").ToString
            txtPhone1.Text = dr("Pphone").ToString
            txtContact1.Text = dr("Pcontact").ToString

        End While
        cn.Close()
        Exit Sub
        If found = False Then MsgBox("Patient ID not found!", MsgBoxStyle.Critical)
        dr.Close()

    Catch ex As Exception

    End Try

如何解决此问题?

问题在于试图将
txtFind.Text
的值传递到命令中

您要使用:

请注意,我使用了
OleDbType.[Type]
。您需要将其替换为为为列
ID
指定的数据类型

在调用
ExecuteReader()
之前,您似乎还没有打开连接:

我会考虑实施:

有时,代码需要非托管资源,例如文件句柄、COM包装器或SQL连接。Using块保证在代码使用完一个或多个这样的资源后可以对它们进行处理。这使它们可供其他代码使用

以下是一些示例代码:

Using con As New OleDbConnection(connectionString),
      cmd As New OleDbCommand("SELECT * FROM tblInfo WHERE ID = ?", con)

    con.Open()

    cmd.Parameters.Add("@ID", OleDbType.[Type]).Value = txtFind.Text
    dr = cmd.ExecuteReader()

    ...

End Using

如果您没有接受异常,您将收到一条清晰的错误消息,告诉您出了什么问题。请阅读并采取行动
cn.Open()
Using con As New OleDbConnection(connectionString),
      cmd As New OleDbCommand("SELECT * FROM tblInfo WHERE ID = ?", con)

    con.Open()

    cmd.Parameters.Add("@ID", OleDbType.[Type]).Value = txtFind.Text
    dr = cmd.ExecuteReader()

    ...

End Using