无法搜索具有重复值的条目

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,而不是 xyz11234VS/12-13/T-S/174,因为它会检查序列号并首次出现。但是如果我想要xyz11234VS/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 行

具有重复值的列上的数据库索引

Django为特定外键选择具有重复字段值的行

具有多个值的C#字典如何[重复]

SQL,仅结合两个具有不同值的表(仅基于三个字段,而不是整行)

选择那些具有多个条目的字段[重复]