VBScript / ADODB Syntaxe Problème avec adArray?

J'espère que quelqu'un pourrait me fournir de nouveaux yeux sur mon script vb. L'objective principal de ce script est d'exécuter une procédure stockée en utilisant certains parameters.

L'erreur que je reçois est

"Fin prévue de la déclaration"

Je n'ai pas fait beaucoup de scripts VB, mais d'après ce que j'ai trouvé jusqu'à présent – cette erreur est due à un problème de syntaxe. J'ai regardé ce script pendant plusieurs heures et je ne vois rien d'évident. Je peux seulement supposer que c'est à la déclaration d' adArray (qui ne me semble pas juste mais je n'ai pas pu find des exemples de ceci étant déclaré). Cette erreur n'a été introduite que lorsque j'ai commencé à append plus de parameters.

Code:

 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 

Toute aide serait très appréciée. Merci.

MODIFIER:

Pour ceux qui étaient intéressés – ma solution était d'abandonner adArray et de transmettre mes données en tant que varchar délimité par des virgules. Je gère ensuite ces données dans ma procédure stockée avec une fonction de partage simple.

Je suis assez sûr que adArray bien que défini dans les constantes ADO n'est pas pris en charge par ADO et a été ajouté pour une compatibilité future.

De MSDN – Référence de l'API ADO – DataTypeEnum
Une valeur d'indicateur, toujours combinée à une autre constante de type de données, qui indique un tableau de l'autre type de données. Ne s'applique pas à ADOX.

Cette définition suggère qu'il ne doit être utilisé qu'avec une autre valeur de constante ADO DataTypeEnum pour désigner un Array de ce type de données.

Bien qu'il y ait une suggestion que l'utilisation de la valeur avec une autre constante DataTypeEnum puisse fonctionner, j'ai trouvé cela il y a 12 ans.

À partir du groupe de discussion public ADO (microsoft.public.ado)
Discussion: comment utiliser le type de données AdArray avec sql server 7 et les procédures stockées
Date: 2003-09-29 19:24:10 UTC


Salut David,

adArray n'est pas pris en charge dans ADO et a été créé pour une compatibilité future. Qu'est-ce que vous devez accomplir? Peut-être que nous pourrions aider avec une autre solution

Val Mazure
Microsoft MVP
Vérifiez Virus Alert, restz à jour
http://www.microsoft.com/security/incident/blast.asp


Liens utiles

  • Comment utiliser la requête paramétrée ADODB avec le type de données adArray dans VBScript? – Suggestion que l'utilisation d' adArray est possible.

  • Carl Prothman – Mappage de type de données – Mon aller à la ressource pour le mappage des types de données ADO.