Sql 比如@SearchQuery p.PalletCode ASC订购 抵消 去 ADO命令 Dim objCmd 设置objCmd=Server.CreateObject(“ADODB.Command”) objCmd.ActiveConnection=cConn objCmd.CommandType=adCmdStoredProc objCmd.CommandText=“sp_PalletSearch” objCmd.Parameters.Append objCmd.CreateParameter(“@CustomerRef”,adInteger,adParamInput) objCmd.Parameters.Append objCmd.CreateParameter(“@SearchQuery”,adVarChar,adParamInput,15) objCmd.Parameters(“@CustomerRef”).Value=CustomerID objCmd.Parameters(“@SearchQuery”).Value=Trim(strSearchQuery) 模糊对象 设置objRS=objCmd.Execute 设置objCmd=Nothing 最后
我以为我永远也解决不了这个问题,这完全没有意义!Sql 比如@SearchQuery p.PalletCode ASC订购 抵消 去 ADO命令 Dim objCmd 设置objCmd=Server.CreateObject(“ADODB.Command”) objCmd.ActiveConnection=cConn objCmd.CommandType=adCmdStoredProc objCmd.CommandText=“sp_PalletSearch” objCmd.Parameters.Append objCmd.CreateParameter(“@CustomerRef”,adInteger,adParamInput) objCmd.Parameters.Append objCmd.CreateParameter(“@SearchQuery”,adVarChar,adParamInput,15) objCmd.Parameters(“@CustomerRef”).Value=CustomerID objCmd.Parameters(“@SearchQuery”).Value=Trim(strSearchQuery) 模糊对象 设置objRS=objCmd.Execute 设置objCmd=Nothing 最后,sql,sql-server,vbscript,asp-classic,ado,Sql,Sql Server,Vbscript,Asp Classic,Ado,我以为我永远也解决不了这个问题,这完全没有意义! 我将对它进行更多的测试,但看起来需要修剪变量。我不知道为什么要添加额外的空间。介绍了使用VBScript/ASP中的ADO进行存储过程调用的三种方法。看看其中一种方法是否适合你。也许可以尝试将参数创建与其赋值分离,以便进行调试。在添加参数之前,我会亲自将SP的名称指定给CommandText。我认为在您的情况下不需要它,但是如果您想使用objCmd.Parameters.Refresh()(如其中一个示例所示),显然需要首先分配CommandTe
我将对它进行更多的测试,但看起来需要修剪变量。我不知道为什么要添加额外的空间。介绍了使用VBScript/ASP中的ADO进行存储过程调用的三种方法。看看其中一种方法是否适合你。也许可以尝试将参数创建与其赋值分离,以便进行调试。在添加参数之前,我会亲自将SP的名称指定给
CommandText
。我认为在您的情况下不需要它,但是如果您想使用objCmd.Parameters.Refresh()
(如其中一个示例所示),显然需要首先分配CommandText
。感谢您的链接。阅读后,我使用文章中的示例对此命令进行了编辑,但结果仍然相同:[上面发布:更新1]我将继续播放。01
不是int
SQL数据类型,您的意思是传递1
?此外,在更新中,您没有像cmd.Parameters(“@CustomerRef”).Value=CustomerID那样为Value
属性赋值,而是将cmd.Parameters(“@CustomerRef”)
对象替换为CustomerID
,这是不同的。请参阅@Lankymart谢谢,我在阅读您的帖子后更新了我的问题和代码。我添加了“.Value”并删除了冗余的Set-objConn=Server.CreateObject(“ADODB.Connection”)
仍然不走运:(对于update2
部分中的第一个和第二个测试,分别去掉strearchquery
和?
周围的单引号。您不应该提供引号。您已将参数定义为VarChar
。ADO将使用引号。[更新2]我已经尝试了所有可能的组合,但仍然没有返回任何结果。出现了一些奇怪的情况-检查上面的更新2您不需要额外的引号”
,它只定义了您在CreateParameter()中指定的传递varchar
数据类型
method这是多余的。感谢您花时间提供帮助,但复制和粘贴您的代码(我们都知道应该可以)不会返回任何行。同样,更改存储过程以查找精确匹配项,您的代码和我的代码都很有用。@JamesWinstanley好的,等一下,您在那里说了一些关键的东西。。。“更改存储过程以查找精确的匹配项”这样代码就可以工作了,但是在存储过程中添加LIKE
子句会导致它停止工作?是这样吗?@JamesWinstanley所以您试图执行之类的操作,如“%PalletCode%”
?抱歉,只是想澄清一下。这是正确的。(请确保您在标题“我已尝试…”下快速查看。<这就是它令人困惑的地方。@JamesWinstanley您可以尝试使用SQL Profiler对其进行分析,以查看传递的内容。我知道这很简单,这就是为什么我建议先输出变量的原因,例如Response.Write'&strearchquery&'“
会成功的。很高兴你终于对它进行了排序!@Lankymart就是这样。ADO命令没有传递空格。无论是从”、&objCmd.Parameters(“@SearchQuery”)&“
还是”、&strearchquery&“
还是varchar(15)
,都不应该留下任何“固定的”只有在使用char(15)
时才会出现空格。@Lankymart我认为它与CreateParameter()
中使用的文本15
有关。您可以使用Len(strearchQuery)
相反,它不应该填充额外的空格。@Bond这很奇怪,因为它被定义为adVarChar
我一直在这样做,到目前为止,我认为我没有这个问题。但是使用Len(strearchquery)
可能更安全一些,总之,这是个好地方。