2013-04-15 41 views
-1

嗨,我有一個數據庫,其中輸入了我的重複數據(序列號)。像無法搜索具有重複值的條目

 
Serial Nos Chalan-no 

Abcd1234 VS/12-13/T-S/187 

Abcd1234 VS/12-13/T-S/187 

Xyz11234 VS/12-13/T-S/130 

Xyz11234 VS/12-13/T-S/174 

在此,如果我搜索abcd1234它會給我chalans,沒有VS/12-13/T-S/187兩個條目。沒關係,但是如果我搜索xyz11234它只給我chalans-no VS/12-13/T-S/130而不是xyz11234 & VS/12-13/T-S/174,因爲它檢查序列號並給出它的第一次出現。但是,如果我想要xyz11234 & VS/12-13/T-S/174

我使用下面的代碼來搜索序列號和該檢索chalan_no:---

Private Sub cmbSn_no_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbSn_no.SelectedIndexChanged 
    'code to fill all details in text boxes when a Sr.No is selected in combobox 

    Dim strSelVen As String = ("SELECT * FROM Duplicate_srno where sr_no= @srno") 
    Dim comm_SelVen As OleDb.OleDbCommand = New OleDb.OleDbCommand(strSelVen, cnnOLEDB) 
    comm_SelVen.Parameters.AddWithValue("@srno", cmbSn_no.Text) 
    cnnOLEDB.Open() 

    Dim dr As OleDb.OleDbDataReader = comm_SelVen.ExecuteReader 

    If dr.Read = True Then 

     cmbSn_no.Text = dr("Sr_no") 
     cmbChal_no.Text = dr("chalan_no") 

    End If 
    cnnOLEDB.Close() 
    strsrno = cmbSn_no.Text 
    strchlno = cmbChal_no.Text 
End Sub 

請建議我做什麼。

回答

1

您的代碼If dr.Read = True Then ... End If僅限於.Read一次,因此您只能檢索一行。嘗試類似Do While dr.read ... Loop

+0

謝謝你@Gord ..它的工作部分...如果我有abcd1234 --- VS/12-13/TS/186和abcd1234 --- VS/12-13/TS/187 ....它從VS/12-13/TS/186移動到VS/12-13/TS/187,但不反向....如果我選擇第二個,然後回到第一個它不工作...代碼:---'儘管dr.Read =真 cmbSn_no.Text = dr( 「Sr_no」) cmbChal_no.Text = dr(「chalan_no」) Loop '請解決我的問題..謝謝你... – Harabati

+0

@Harabati看起來你正在嘗試將項目添加到組合框列表中。如果是這樣,那麼你需要使用適當的'.method'來完成。在VBA中將是'cmb_Sn_no.AddItem';我確定它在VB.NET中非常相似。 (現在你可能只是在循環的每次迭代中覆蓋'cmbSn_no.Text'屬性。) –

0

我假設你有下面的類:

Public Class Data 
    Public Property SerialNumber As String 
    Public Property ChalanNumber As String 
End Class 

在你的問題顯示值的表使用List(Of Data)

Dim myList As New List(Of Data)()

然後操作應該是:

Dim selectedData = myList.Where(Function(e) e.SerialNumber = "xyz11234")

+0

謝謝@Felix。我正在使用上面的代碼,.....我剛剛編輯我的帖子,並添加了我使用的代碼..請檢查並建議我..謝謝 – Harabati

+0

我很抱歉,不知道如何使用' OleDbDataReader'。但我想你的問題是,你只是顯示你的查詢的第一個結果。你必須從你的SQL命令中取回一個集合。也許這個鏈接將幫助你:http://stackoverflow.com/questions/1464883/how-can-i-easily-convert-datareader-to-listt –

0

我還沒有使用OleDBDataReader,但是如果它看起來像只有一個閱讀器。嘗試循環方法。

有沒有辦法一次讀取整個表格?在SQL世界中,它將是SqlDataAdapter.fill。