Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.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 在MS access中从表中选择一个值_Vb.net_Ms Access_Visual Studio 2013 - Fatal编程技术网

Vb.net 在MS access中从表中选择一个值

Vb.net 在MS access中从表中选择一个值,vb.net,ms-access,visual-studio-2013,Vb.net,Ms Access,Visual Studio 2013,我正在为我的实验室编写一个程序。基于salesordernumer(SO nr),我需要从access中的表中找到相应的零件号,并将其放入变量(可能是字符串?)中。稍后,我需要从零件号中拆分不同的零件,但在此之前,我需要将其从MS表中取出。这是我现在使用的de代码,但我得到一个错误 Private Sub BtnOphaal_Click(sender As Object, e As EventArgs) Handles BtnOphaal.Click If conn.State = C

我正在为我的实验室编写一个程序。基于salesordernumer(SO nr),我需要从access中的表中找到相应的零件号,并将其放入变量(可能是字符串?)中。稍后,我需要从零件号中拆分不同的零件,但在此之前,我需要将其从MS表中取出。这是我现在使用的de代码,但我得到一个错误

Private Sub BtnOphaal_Click(sender As Object, e As EventArgs) Handles BtnOphaal.Click

    If conn.State = ConnectionState.Open Then
        Dim Sonr As String

        Sonr = "SELECT *FROM prodvolg "
        Dim SQL As New OleDb.OleDbCommand(Sonr, conn)
        Dim DataAdapter As New OleDb.OleDbDataAdapter(SQL)

        Dim datatabel As New DataTable("prodvolg")

        DataAdapter.Fill(datatabel)
        Dim queryString As String = "SELECT [pPart] AS Partnummer FROM [prodvolg] WHERE ([pSonr]='" & txtSOnummer.Text & "')"
        Dim command As New OleDbCommand(queryString, conn)
        Dim reader As OleDbDataReader = command.ExecuteReader()

        While reader.Read()
            txtppart.Text = (reader.GetString(1))

        End While

        reader.Close()

    End If


End Sub
正如你所看到的,我只是一个初级程序员

错误发生在
txtpart.Text=(reader.GetString(1))
错误消息:

A first chance exception of type 'System.IndexOutOfRangeException' occurred in System.Data.dll
附加信息:索引超出了数组的边界。 在学校,我在ADO系统学习编程,但未来似乎是oledb,但到目前为止我还不太了解oledb系统。如果有人能帮助我,我会很高兴的。
零件号可能如下所示:“CA-017630-6.35M-1/0-2”

阵列从索引0开始,而不是从1开始。查询只返回一个字段

txtppart.Text = (reader.GetString(0))
另外,请记住,如果索引0处的行包含空值,则GetString可能会失败。 如果是这种情况,我建议使用

txtppart.Text = IF(reader.IsDBNull(0), string.Empty, reader.GetString(0))

您使用SQL语句只检索一个字段
pPart
,因此在DataReader上只有一个字段。尝试使用
reader.GetString(0)
,因为数组从索引0开始

对您来说也是一个TY!;-)