无法搜索具有重复值的条目
Posted
技术标签:
【中文标题】无法搜索具有重复值的条目【英文标题】:Not able to search for a entry with duplicate values 【发布时间】:2013-04-15 07:40:38 【问题描述】:您好,我有一个数据库,其中输入了我的重复数据(序列号)。喜欢
序列号 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-no 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
。
【讨论】:
谢谢@Gord..它的工作部分...如果我有 abcd1234---VS/12-13/T-S/186 和 abcd1234---VS/12-13/T-S/187 ....它从 VS/12-13/T-S/186 移动到 VS/12-13/T-S/187 但没有反转....如果我选择第二个然后回到第一个它不起作用。 ..Code :--- ` Do While dr.Read = True cmbSn_no.Text = dr("Sr_no") cmbChal_no.Text = dr("chalan_no") Loop ` 请解决我的问题.. 谢谢...跨度> @Harabati 看起来您正在尝试将项目添加到组合框列表中。如果是这样,那么您需要使用适当的.method
来完成此操作。在 VBA 中为cmb_Sn_no.AddItem
;我确信它在 VB.NET 中非常相似。 (现在您可能只是在循环的每次迭代中覆盖 cmbSn_no.Text
属性。)【参考方案2】:
我假设你有以下课程:
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")
【讨论】:
谢谢@Felix。我正在使用上面的代码,.....我刚刚编辑了我的帖子并添加了我正在使用的代码..请检查并建议我..谢谢 对不起,不知道如何使用OleDbDataReader
。但我想你的问题是,你只显示查询的第一个结果。您必须从 SQL 命令中取回一个集合。也许这个链接会帮助你:***.com/questions/1464883/…【参考方案3】:
我没有使用过 OleDBDataReader,但如果它看起来只有一个阅读器。试试循环方法。
有没有办法一次读取整个表格?在 SQL 世界中,它将是 SqlDataAdapter.fill。
【讨论】:
以上是关于无法搜索具有重复值的条目的主要内容,如果未能解决你的问题,请参考以下文章
如果具有指定值的同一表中存在重复键,则 MYSQL DELETE 行