2014-03-25 50 views
1

我正在爲我的實驗室編寫一個程序。基於salesordernumer(SO-nr),我需要從acces中的表中找到相應的零件號並將其放入一個變量(Prob a string?)中。後來我需要從partnumber中分割出不同的部分,但在此之前我需要將它從MS表中取出。這是我現在使用的代碼,但是出現錯誤。從MS Access中的表中選取一個值

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 

正如你所看到的,我只是一個開始的程序員。

誤差以txtppart.Text = (reader.GetString(1))存在的錯誤消息:

A first chance exception of type 'System.IndexOutOfRangeException' occurred in System.Data.dll 

其他信息:索引陣列的邊界之外。 在學校我學習了ADO系統的編程,但未來似乎是oledb,但目前爲止我不瞭解OLEdb系統。如果有人能幫助我,我會很開心。 Partnumber可能看起來像這樣:「CA-017630-6.35M-1/0-2」 thx提前,併爲我的英語sry。 Frederik

回答

0

數組從零開始,而不是一個。您可以通過查詢

txtppart.Text = (reader.GetString(0)) 

而且只有一個返回現場,請記住,如果你的行索引零包含空值的GetString可能會失敗。 如果是這樣,我建議檢查空值與

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

非常感謝!這使它工作! – user3459330

0

你與你的SQL語句檢索只是一個場pPart,所以你必須對DataReader的只是一個領域的情況。由於陣列從索引零開始,請嘗試reader.GetString(0)

+0

也是你的TY! ;-) – user3459330

相關問題