首页 > 解决方案 > VB.Net 应用程序不返回所有 Oracle 数据行

问题描述

我有一个我们已经使用了一段时间的 VB.Net 应用程序。最近有人指出,我们为零件编号加载到程序中的数据集缺少一些记录。

我尝试了 select 语句的不同变体。我已经编辑了应用程序下拉菜单属性以使下拉菜单更大,试图让它显示更多问题。我还尝试重写将我的数据集行添加到下拉列表中的项目的循环。我放了一个消息框来给我记录数,数据集中缺少大约 80 条记录。

我通过打开我的数据库客户端并对数据库运行完全相同的选择语句来确认这一点。在数据库客户端上运行 select 语句会返回所有行,但如果我使用数据适配器运行它并填充数据集,则会丢失记录。下面是我的代码。对可能发生的事情有什么建议吗?

'Load Part #s
OraSQL = "SELECT Part_No FROM TableName Where Contract = 'ContractName' AND Part_No Like 'PartPrefix%' AND Pat_No NOT LIKE = 'WrongPartPrefix%'"
OraDa = New Odbc.OdbcDataAdapter(OraSQL, OraCon)
OraCon.Open()
OraDa.Fill(OraDs, "Part")
OraCon.Close()
'Populate Combo Box with Active Machines
SelectedRow = 0

' Load items into dropdown
        TotalRows = OraDs.Tables("Part").Rows.Count
        SelectedRow = 0
        TxtPartNo.Items.Add("")
        While SelectedRow < TotalRows
            TxtPartNo.Items.Add(OraDs.Tables("Part").Rows(SelectedRow).Item("Part_No"))
            SelectedRow += 1
        End While

编辑:我更新了 SQL 语句,使其看起来更像我正在使用的实际 SQL 语句。只有一个 WHERE 语句后跟 AND 运算符。

再次编辑:我重写了函数以利用数据读取器而不是数据适配器,以查看以更有效的方式重写是否可能会有所帮助。但是,我仍然得到相同的结果。下面是代码块:

Using OraCon

    Dim command As Odbc.OdbcCommand = New Odbc.OdbcCommand(OraSQL, OraCon)

    OraCon.Open()
    Dim reader As Odbc.OdbcDataReader = command.ExecuteReader()

    If reader.HasRows Then
        Do While reader.Read()
            TxtPartNo.Items.Add(reader.GetString(0))
        Loop
    End If
    OraCon.Close()
End Using

标签: vb.netdatatabledataset

解决方案


结果我在程序中使用了我们的测试数据源,并在客户端使用了生产数据库。像个白痴一样。感谢所有帮助过的人!


推荐阅读