adArray 的 VBScript/ADODB 语法问题?
VBScript / ADODB Syntax Issue with adArray?
我希望有人可以让我对我的 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 传递。然后,我使用简单的拆分函数在我的存储过程中处理这些数据。
我相当确定 adArray
虽然在 ADO 常量中定义不受 ADO 支持并且是为了将来的兼容性而添加的。
From MSDN - ADO API Reference - DataTypeEnum
A flag value, always combined with another data type constant, that indicates an array of the other data type. Does not apply to ADOX.
此定义建议它只能与另一个 ADO DataTypeEnum 常量值一起使用,以表示该数据类型的 Array
。
虽然有人建议 OR
使用另一个 DataTypeEnum 常量计算值应该有效,但我在 12 年前发现了这个。
From the ADO public newsgroup (microsoft.public.ado)
Discussion: how to use AdArray data type with sql server 7 and stored procedures
Date: 2003-09-29 19:24:10 UTC
Hi David,
adArray is not supported in ADO and was created for future compatibility.
What do you need to achieve? Maybe we could help with another solution
--
Val Mazur
Microsoft MVP
Check Virus Alert, stay updated
http://www.microsoft.com/security/incident/blast.asp
有用的链接
How to use ADODB parameterized query with adArray data type in VBScript? - 建议使用 adArray
是可行的。
Carl Prothman - Data Type Mapping - 我转到 ADO 数据类型映射资源。
我希望有人可以让我对我的 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 传递。然后,我使用简单的拆分函数在我的存储过程中处理这些数据。
我相当确定 adArray
虽然在 ADO 常量中定义不受 ADO 支持并且是为了将来的兼容性而添加的。
From MSDN - ADO API Reference - DataTypeEnum
A flag value, always combined with another data type constant, that indicates an array of the other data type. Does not apply to ADOX.
此定义建议它只能与另一个 ADO DataTypeEnum 常量值一起使用,以表示该数据类型的 Array
。
虽然有人建议 OR
使用另一个 DataTypeEnum 常量计算值应该有效,但我在 12 年前发现了这个。
From the ADO public newsgroup (microsoft.public.ado)
Discussion: how to use AdArray data type with sql server 7 and stored procedures
Date: 2003-09-29 19:24:10 UTC
Hi David,
adArray is not supported in ADO and was created for future compatibility. What do you need to achieve? Maybe we could help with another solution
--
Val Mazur
Microsoft MVP
Check Virus Alert, stay updated
http://www.microsoft.com/security/incident/blast.asp
有用的链接
How to use ADODB parameterized query with adArray data type in VBScript? - 建议使用
adArray
是可行的。Carl Prothman - Data Type Mapping - 我转到 ADO 数据类型映射资源。