我有这样的查询:
SELECT TaFellesVaktjournal.*, TaBygg.ByggNavn
FROM TaFellesVaktjournal LEFT JOIN TaBygg ON
TaFellesVaktjournal.VaktFellesByggNavnId =
TaBygg.ByggBudsjtilstEiendom WHERE VaktjFellesDato
>= @dtfr AND VaktjFellesDato <= @dttl AND (VaktFellesSak
= @sok OR VaktjFellesHendelse = @sok) ORDER BY
VaktjFellesDato DESC, VaktjFellesTid DESC
但是,我收到一条错误,指出No value given for one or more required parameters.
。
我已经为@dtfr,@ dttl和@sok指定了值。此外,如果我将包含@sok(@dttl之后的所有内容)的部分删除到ORDER BY,则错误消失。
我做了shure我为sok指定了值,并且它不是空的。我甚至尝试过指定2个名为sok的参数(因为它们是两个地方)。有谁知道我怎么能这样做?
我用来创建参数的代码如下:
Dim conn, cmd, param
set cmd = server.createobject("adodb.command")
set param = server.createobject("adodb.parameter")
set param = cmd.createparameter("@sok", adVarChar, adParamInput, 255, sok)
cmd.parameters.append param
答案 0 :(得分:0)
您可以尝试使用刷新命令填充参数集合。
Set cmd.ActiveConnection = oConn
oCmd.CommandType=adCmdStoredProc
oCmd.CommandText="ap_Your_spName"
oCmd.Parameters.Refresh
oCmd.Parameters("@dtfr") = dtfr
oCmd.Parameters("@dttl") = dttl
oCmd.Parameters("@sok") = sok
oCmd.Execute
将导致往返服务器,但现代计算机应该应对它!
答案 1 :(得分:0)
它适用于“普通”sql语句,类似于它适用于storedprocedures。您必须将命令对象的CommandType属性设置为“正常”sql语句的adCmdText并且您必须使用q questionmark“?”而不是参数名称。
您不需要刷新方法,ado会自动为您执行此操作。 (它仅对存储过程有用)
dim sql
dim cmd : set cmd = server.createObject("ADODB.Command")
dim param, rs
sql = "SELECT TaFellesVaktjournal.*, TaBygg.ByggNavn" &_
" FROM TaFellesVaktjournal" &_
" LEFT JOIN TaBygg ON TaFellesVaktjournal.VaktFellesByggNavnId = TaBygg.ByggBudsjtilstEiendom" &_
" WHERE VaktjFellesDato >= ?" &_
" AND VaktjFellesDato <= ?" &_
" AND (VaktFellesSak= ? OR VaktjFellesHendelse = ?)" &_
" ORDER BY VaktjFellesDato DESC, VaktjFellesTid DESC"
cmd.ActiveConnection = conn
cmd.CommandType = adCmdText
set param = cmd.CreateParameter("dtfr", adVarChar, , 255, dtfr)
cmd.Parameters.Append param
set param = cmd.CreateParameter("dtfr2", adVarChar, , 255, dtfr)
cmd.Parameters.Append param
set param = cmd.CreateParameter("dttl", adVarChar, , 255, dttl)
cmd.Parameters.Append param
set param = cmd.CreateParameter("sok", adVarChar, , 255, sok)
cmd.Parameters.Append param
cmd.CommandText = sql
set rs = cmd.execute
set param = nothing
set cmd = nothing