Приложение VB.Net не возвращает все строки данных Oracle - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть приложение VB.Net, которое мы использовали некоторое время.Недавно кто-то указал, что в наборе данных, который мы загружаем в программу при загрузке для наших номеров деталей, отсутствуют некоторые записи.

Я пробовал разные варианты оператора select.Я отредактировал атрибуты выпадающего меню приложения, чтобы сделать его больше, пытаясь заставить его показать больше проблем.Я также попытался переписать цикл, который добавляет строки моего набора данных в элементы в раскрывающемся списке.Я вставил окно сообщения, чтобы подсчитать количество записей, и в наборе данных пропало около восьмидесяти записей.

Я подтвердил это, открыв клиент базы данных и выполнив точно такой же оператор выбора для базы данных.Выполнение оператора 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

1 Ответ

0 голосов
/ 18 декабря 2018

Оказывается, я использовал наш тестовый источник данных в программе и производственную базу данных с клиентом.Как идиот.Спасибо всем, кто помог!

...