Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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
Sql 如何使用vb.net从Access db中提取数据并将其放入文本框中?_Sql_Vb.net_Ms Access 2007 - Fatal编程技术网

Sql 如何使用vb.net从Access db中提取数据并将其放入文本框中?

Sql 如何使用vb.net从Access db中提取数据并将其放入文本框中?,sql,vb.net,ms-access-2007,Sql,Vb.net,Ms Access 2007,大家好,我正在尝试使用MS Access中的SQL搜索员工信息,并希望将fname lname和此类详细信息放入对应于特定员工ID号的相应文本框中。我已经设法使SQL工作,但我不知道如何从我的SQL语句中提取文件并将其放在里面。text(文本框),你能指导我吗?谢谢 以下是我目前的代码: (更新了我的代码)收到错误消息:附加信息:ExecuteReader:尚未初始化连接属性。突出显示下面的读者。我怎样才能解决这个问题?我试图提取数据并将其放入文本框?谢谢 Private Sub eNumTex

大家好,我正在尝试使用MS Access中的SQL搜索员工信息,并希望将fname lname和此类详细信息放入对应于特定员工ID号的相应文本框中。我已经设法使SQL工作,但我不知道如何从我的SQL语句中提取文件并将其放在里面。text(文本框),你能指导我吗?谢谢

以下是我目前的代码: (更新了我的代码)收到错误消息:附加信息:ExecuteReader:尚未初始化连接属性。突出显示下面的读者。我怎样才能解决这个问题?我试图提取数据并将其放入文本框?谢谢

Private Sub eNumText_SelectedIndexChanged(sender As Object, e As EventArgs) Handles eNumText.SelectedIndexChanged


        Dim dbSource = "Data Source= C:\Databse\Company_db.accdb"
        con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source= c:\Databse\Company_db.accdb"

        Dim sqlQuery As String
        Dim sqlCommand As New OleDbCommand
        Dim sqlAdapter As New OleDbDataAdapter
        Dim Table As New DataTable

        Dim empNum As String
        Dim empFname As String
        Dim empLname As String
        Dim empDept As String
        Dim empStat As String
        Dim empYears As String

        empNum = eNumText.Text
        empFname = empFnameText.Text
        empLname = empLnameText.Text
        empDept = DeptText.Text
        empStat = StatText.Text
        empYears = yearstext.Text

        sqlQuery = "SELECT * FROM tbl_empinfo WHERE EmpID like empNum"

        With sqlCommand
            .CommandText = sqlQuery
            .Connection = con
            .Parameters.AddWithValue("EmpID", empNum)
            With sqlAdapter
                .SelectCommand = sqlCommand
                .Fill(Table)
            End With
            With DataGridView1
                .DataSource = Table
            End With
        End With

        Dim path = "Data Source= C:\Databse\Company_db.accdb"
        Dim command = "SELECT * FROM tbl_empinfo WHERE EmpID like empNum"
        QueryData(path, command)


        con.Close()

    End Sub
    Private Sub QueryData(PathDb As String, command As String)
        Using connection As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & PathDb)
            Using da As New System.Data.OleDb.OleDbCommand(command, connection)
                connection.Open()

                Dim reader = da.ExecuteReader()
                If reader.Read() Then
                    empFnameText.Text = reader("fname")
                    empLnameText.Text = reader("lname")
                End If

                connection.Close()
            End Using
        End Using
    End Sub

为此,您只需要以下类:Connection、Command、Reader。 代码中的其他类,有些是多余的,有些是必需的,但比简单的案例演示复杂

调用该方法,以便:

Dim path = "C:\Databse\Company_db.accdb"
Dim command = "SELECT * FROM tbl_empinfo WHERE EmpID like empNum"
QueryData(path, command)

编辑-使用参数:

Private Sub QueryData(PathDb As String, command As String, id As String)
    Using connection As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & PathDb)
        Using com As New System.Data.OleDb.OleDbCommand(command, connection)
            com.Parameters.AddWithValue("", id)

            connection.Open()

            Using reader = com.ExecuteReader()
                If reader.Read() Then
                    TextBox1.Text = reader("fname")
                    TextBox2.Text = reader("lname")
                End If
            End Using

            connection.Close()
        End Using
    End Using
End Sub
调用该方法:

Dim path = "C:\Databse\Company_db.accdb"
Dim command = "SELECT * FROM tbl_empinfo WHERE EmpID = ?"
Dim empNum = "..."
QueryData(path, command, empNum)

我编辑并更新了上面的代码,但它给了我一个错误(更新了我的代码)获取了一条错误消息:附加信息:ExecuteReader:连接属性尚未初始化。Highlightintg Reader,我们如何修复此问题?@user3476579检查您的代码是否与我的相同,我在回答后编辑了它。是的,它仍然给我错误:其他信息:没有为一个或多个必需参数提供值。因此,突出读者。。。读卡器已初始化,我们是否将Dim读卡器称为字符串?@user3476579对我来说效果很好。检查数据库的路径,以及查询是否正确。错误:System.Data.OleDb.OledBeException类型的未处理异常发生在System.Data.dll中。其他信息:没有为一个或多个必需参数提供值。因此,仍然强调读者:(
Dim path = "C:\Databse\Company_db.accdb"
Dim command = "SELECT * FROM tbl_empinfo WHERE EmpID = ?"
Dim empNum = "..."
QueryData(path, command, empNum)