VBScript/ADODB语法问题与adArray有关?

3
我希望有人能帮我审视一下我的VB脚本。这个脚本的主要目的是使用一些参数执行存储过程。

我得到的错误是:

'Expected end of statement'

我没有做太多的VB脚本,但从我迄今为止所发现的来看 - 这个错误是由于某种语法问题引起的。我花了很多时间查看这个脚本,但没有发现任何明显的问题。我只能假设这是由于adArray的声明引起的(在我看来它看起来不对,但我没有找到任何这样声明的示例)。这个错误只是在我开始添加更多的参数后引入的。

代码:

Const adVarChar = 200
Const adParamInput = 1
Const adArray = 0x2000

Dim cmd
Dim sp
Dim intCode
Dim addIn
Dim groupCode
Dim screens
Dim arrScreens
arrScreens=split(LF06,",")

Set cmd=CreateObject("ADODB.Command")
sp="vfile_dev.dbo.vfp_groupReorder"

Set intCode=CreateObject("ADODB.Parameter")
intCode.Direction=adParamInput
intCode.name="@p_intCode"
intCode.Size=100
intCode.Type=adVarChar
intCode.Value=LF03

Set addIn=CreateObject("ADODB.Parameter")
addIn.Direction=adParamInput
addIn.name="@p_addIn"
addIn.Size=100
addIn.Type=adVarChar
addIn.Value=LF04

Set groupCode=CreateObject("ADODB.Parameter")
groupCode.Direction=adParamInput
groupCode.name="@p_groupCode"
groupCode.Size=100
groupCode.Type=adVarChar
groupCode.Value=LF05

Set screens=CreateObject("ADODB.Parameter")
screens.Direction=adParamInput
screens.name="@p_screens"
screens.Size=100
screens.Type=adArray
screens.Value=arrScreens

With cmd
   .ActiveCOnnection = "Provider='sqloledb';Data source='xxx';Integrated Security='SSPI';"
   .CommandType = 4
   .CommandText = sp
   .Parameters.Append intCode
   .Parameters.Append addIn
   .Parameters.Append groupCode
   .Parameters.Append screens
   .Execute
End With

Set cmd = Nothing
Set sp = Nothing
Set intCode = Nothing
Set addIn = Nothing
Set groupCode = Nothing

任何帮助都将不胜感激。谢谢。

编辑:

对于那些感兴趣的人 - 我的解决方案是放弃adArray并将我的数据作为逗号分隔的varchar传递。然后,我在存储过程中使用简单的拆分函数处理这些数据。


哪一行代码引发了错误? - Ansgar Wiechers
这是一个我长期以来一直使用的有用资源,作为我的ADO数据类型圣经。我相当确定adArray在ADO中不受支持,并且是为了未来兼容性而添加的。 - user692942
我以为它会被支持的?是的,这就是整个脚本...至少是VBscript部分。(LFXX变量在脚本外声明并传入)。 - Ash W
@AnsgarWiechers 我使用的开发环境是我们公司提供的产品。VB脚本只是该产品的一个非常小的特性,不是重点;我们只能得到错误消息,而没有指出哪一行产生了错误的参考。 - Ash W
显示剩余5条评论
1个回答

1
我相信adArray虽然在ADO常量中定义,但不受ADO支持,是为了未来的兼容性而添加的。
MSDN - ADO API Reference - DataTypeEnum中:
一个标志值,始终与另一个数据类型常量组合使用,表示另一个数据类型的数组。不适用于ADOX。
这个定义表明它应该只与另一个ADO DataTypeEnum常量值一起使用,以表示该数据类型的Array
尽管有一些建议将该值与另一个DataTypeEnum常量进行OR运算,但我发现这是12年前的信息。

来自ADO公共新闻组 (microsoft.public.ado)
讨论:如何在SQL Server 7和存储过程中使用AdArray数据类型
日期:2003年9月29日19:24:10 UTC


你好David,

ADO不支持adArray,并且是为了未来的兼容性而创建的。 你需要实现什么?也许我们可以提供另一个解决方案。
--
Val Mazur
微软MVP
检查病毒警报,保持更新
http://www.microsoft.com/security/incident/blast.asp


有用的链接


1
在这种情况下,我可能需要另一种解决方案。数组始终会相对较小,因此我想我可以将其作为逗号分隔的字符串传递。感谢提供信息! - Ash W

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接