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)
「:currentYear AS CURRENT_YEAR」を SELECT ステートメントから削除すると、正常に実行されます。他のテーブルの結合からの別の SELECT で同じステートメントを問題なく使用します。
strYear は gridviewrow のラベルから取得され、データがあり、CDate に対して有効であることを確認しました (同じ結果の文字列としても試しました)。StrItemVal(0) は、別のドロップダウン リスト (渡された :currentYear を使用して正常に入力されたもの) から取得されます。このコードは、ドロップダウン リストに選択された値がある場合にのみ呼び出されます。