0

我正在尝试在 GridView 中填充一系列下拉列表。在 RowDataBound 事件中,我根据 gridviewrow 中的其他信息调用以获取用于填充行中下拉列表的项目。我在以下代码中收到“ORA-01036:参数上的非法变量名称/编号错误”。

Dim rowTemp As GridViewRow = ddlItemDesc.Parent.Parent

Dim lblYear As Label = rowTemp.FindControl("lblSchoolYear")
Dim strYear As String = lblYear.Text.Trim()

Dim strSelect As String = "SELECT FOO.BAR.PRODUCT_CODE || ' :: ' || FOO.BAR.PRODUCT_DESC AS txt, FOO.BAR.PRODUCT_KEY AS val, :currentYear AS CURRENT_YEAR FROM FOO.BAR WHERE (FOO.BAR.PRODUCT_KEY=:itemKey)"

Dim daTemp As New OracleDataAdapter(strSelect, oConn)   
daTemp.SelectCommand.Parameters.Add("currentYear", CDate(strYear))
daTemp.SelectCommand.Parameters.Add("itemKey", strItemVal(0))
Dim dtProd As New DataTable
daTemp.Fill(dtProd)

如果我从 SELECT 语句中删除 ":currentYear AS CURRENT_YEAR",它运行良好。我在另一个 SELECT 中从其他表的连接中使用相同的语句,没有问题。

strYear 来自 gridviewrow 中的标签,我检查了它是否有数据并且它对 CDate 有效(我也尝试将它简单地作为具有相同结果的字符串)。StrItemVal(0) 来自另一个下拉列表(使用 :currentYear 成功填充的下拉列表)。仅当该下拉列表中有一个被选中的值时,才会调用此代码。

4

0 回答 0