Проблема в vb. net OleDbDataAdapter ("SELECT *") - PullRequest
0 голосов
/ 11 февраля 2020

Я не эксперт по Vb. net все еще в процессе обучения, я застрял в OleDbDataAdapter ("SELECT"). Я хочу получить поле из таблицы, когда выполнены 2 условия. Я использую VS2019 и моя база данных MS. Доступ к базе данных.

'connection Con, DataAdapter Dad, and DataSet Dst are public in Module1.vb
' this code is in Button function
Dad = New OleDbDataAdapter("Select CP_Fund_Book_No from Amount_Data where MrNo = '" & Me.MrNoTextBox.Text & "' and CP_Fund_Book_No_Status = '" & "Active" & "'", Con)

            Dad.Fill(Dst, "Amount_Data")
            Form2.CPFundBookNoTextBox.Text = Dst.Tables("Amount_Data").Rows(CurrentRow)("CP_Fund_Book_No")
            Con.Close()

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

Предварительный просмотр таблицы базы данных:

DataBase Table Preview

MrNo 13366 загружено:

MrNo 13366 is loaded

Теперь, когда я пытаюсь загрузить MrNo 13367 я получаю эту ошибку:

Now When I try to load MrNo 13367 i get this error

Если вы посмотрите на базу данных, вы увидите, что 13366 3 раза и один раз активен, где как 13367 он один раз, и это активно , что я делаю неправильно, остальная часть кода работает, и это также из 2-й таблицы с именем Employee_Data.

1 Ответ

0 голосов
/ 11 февраля 2020

ОК, кое-что здесь.

Во-первых, ваша SQL команда:

Select CP_Fund_Book_No from Amount_Data where MrNo = '" & Me.MrNoTextBox.Text & "' and CP_Fund_Book_No_Status = '" & "Active" & "'"

была бы лучше написана

Select CP_Fund_Book_No from Amount_Data where MrNo = @MrNo and CP_Fund_Book_No_Status = 'Active'

, затем научитесь используйте параметры для предотвращения sql внедрения, хотя здесь это не ваша проблема.

Далее вы говорите: «когда данные состоят из нескольких строк, они загружаются, если данные находятся только в одной строке». Команда Dad.Fill (Dst, "Amount_Data") загрузит все соответствующие строки. Следующая строка:

Dst.Tables("Amount_Data").Rows(CurrentRow)("CP_Fund_Book_No")

, кажется, игнорирует все, кроме строки 'CurrentRow' - как установить CurrentRow? Я предполагаю, что именно это выдает ошибку.

Наконец, вас смущает синтаксическая ошибка в окне сообщений. В VB. NET используется:

 MessageBox.Show(ex.message, "Error")

После того, как вы увидите содержимое ex.message, которое должно точно указать, в чем проблема.

...