【发布时间】:2010-06-30 08:17:32
【问题描述】:
我有一个这样的查询:
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,错误就会消失。
我已经确定我指定了 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
【问题讨论】:
-
您确定类型 (adVarChar) 吗?
-
另外,不要指定 255 作为长度,而是执行 len(sok)。您也可以将参数添加到 1 行代码中。这就是我一直这样做的方式:AdoCmd.Parameters.Append AdoCmd.CreateParameter("@name", adVarChar, adParamInput, Len(Name), Name)
-
是的,adVarChar 是正确的。而且我知道您可以在一行中完成,但我宁愿添加一个函数,它接受 cmd、名称、类型、长度和值,并为我做这件事。我觉得它更容易阅读:)
标签: asp-classic vbscript ado