参数@code1没有默认值
Parameter @code1 has no default value
我正在创建此代码以使用两个组合框,其中一个取决于第一个,但是当我尝试 select "code_Zone" 来自 Table "Zone" 我有这个例外:
Parameter @code1 has no default value
这是我的代码:
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]=@code1;", 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()
第一个问题是 @code
参数占位符周围的引号。通过这种方式,占位符被视为文字字符串。现在,当您执行 cmd3
命令时,数据库引擎会在列 Nom_Zone
中搜索字符串 "@code"
,当然什么也找不到。所以变量 valeur
的值什么也不是。
无论组合框中选定的文本是什么,都将被忽略。
现在是第二个问题。正如您可以 read in MSDN about SelectedText 如果您想在组合没有焦点时检索当前 SelectedItem 的内容,那么这个 属性 不是正确的选择
...you should be aware that the selection can change automatically
because of user interaction. For example, if you retrieve the
SelectedText value in a button Click event handler, the value will be
an empty string. This is because the selection is automatically
cleared when the input focus moves from the combo box to the button.
因此,您应该使用 SelectedItem 属性 或 SelectedValue,具体取决于您填充 ComboBox 的方式。请使用调试器在您尝试读取组合值的位置设置断点,并在该位置检查您的属性值
我正在创建此代码以使用两个组合框,其中一个取决于第一个,但是当我尝试 select "code_Zone" 来自 Table "Zone" 我有这个例外:
Parameter @code1 has no default value
这是我的代码:
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]=@code1;", 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()
第一个问题是 @code
参数占位符周围的引号。通过这种方式,占位符被视为文字字符串。现在,当您执行 cmd3
命令时,数据库引擎会在列 Nom_Zone
中搜索字符串 "@code"
,当然什么也找不到。所以变量 valeur
的值什么也不是。
无论组合框中选定的文本是什么,都将被忽略。
现在是第二个问题。正如您可以 read in MSDN about SelectedText 如果您想在组合没有焦点时检索当前 SelectedItem 的内容,那么这个 属性 不是正确的选择
...you should be aware that the selection can change automatically because of user interaction. For example, if you retrieve the SelectedText value in a button Click event handler, the value will be an empty string. This is because the selection is automatically cleared when the input focus moves from the combo box to the button.
因此,您应该使用 SelectedItem 属性 或 SelectedValue,具体取决于您填充 ComboBox 的方式。请使用调试器在您尝试读取组合值的位置设置断点,并在该位置检查您的属性值