У меня есть приложение 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