2015-05-09 5 views
1

Я создаю этот код для использования двух comboboxes, которые зависят от первого, но когда я пытаюсь выбрать «code_Zone» из таблицы «Зона», у меня есть это исключение :Параметр @ code1 не имеет значения по умолчанию

Параметр @ code1 не имеет значения по умолчанию

Это мой код:

Dim cmd3 = New OleDbCommand("select [Code_Zone] from [Zone] where [Nom_Zone]= '@code';", connection) 
cmd3.Parameters.AddWithValue("@code", ComboBoxNomZoneDeclaration.SelectedText.ToString) 
Dim valeur = cmd3.ExecuteScalar 
Dim commande = New OleDbCommand("select [Code_Cable] from [CableEnFibre] where [Code_Zone][email protected];", connection) 
commande.Parameters.AddWithValue("@code1", valeur) 
Dim reader = commande.ExecuteReader 'there is the exception 
While reader.Read 
    ComboBoxPanneCentreAppel.Items.Add(reader.GetInt32(reader.GetOrdinal("Code_Cable"))) 
End While 
reader.Close() 
+2

Вам не нужно '' 'вокруг имени параметра в запросе когда вы используете параметры. И строка в запросе должна быть '@ code1' – OneFineDay

+0

@OneFineDay вы правы, но неправильный шаг - это цитата вокруг' @ code', а не '@ code1'. Это не дает результата из первого ExecuteScalar, а затем сообщение об ошибке во втором запросе, когда он пытается использовать переменную valeur, которая, вероятно, равна Nothing – Steve

+0

@Steve, см. Это сейчас! – OneFineDay

ответ

0

Ну первая проблема в кавычки вокруг @code параметра пла ceholder. Таким образом, заполнитель рассматривается как буквальная строка. Теперь, когда вы выполняете команду cmd3, движок базы данных ищет столбец Nom_Zone для строки "@code" и, конечно же, ничего не найдено. Таким образом, значение переменной valeur - ничто. Независимо от выбранного текста в поле со списком просто игнорируется.

А теперь вторая проблема. Как вы можете read in MSDN about SelectedText это свойство не правильная использовать, если вы хотите, чтобы получить содержимое текущего SelectedItem, когда комбо не имеет фокус

... Вы должны знать, что выбор может изменить автоматически по причине пользователь взаимодействие. Например, если вы получите значение SelectedText в кнопке Обработчик события Click, значение будет пустой строкой. Это происходит потому, что выбор автоматически очищается, когда фокус ввода перемещается из комбинированного поля в кнопку.

Значит, вы должны использовать свойство SelectedItem или SelectedValue в зависимости от того, как вы заполнили ComboBox. Пожалуйста, используйте отладчик, устанавливая точку останова в точке, где вы пытаетесь прочитать значение комбо, и проверьте значение своих свойств в этой точке.

+0

спасибо, что она сработала с SelectedIem –

Смежные вопросы