2014-09-11 4 views
1

J'ai essayé beaucoup, beaucoup de choses, mais je reçois toujours l'erreur 3001 (Les arguments sont du mauvais type, sont hors de portée acceptable, ou sont en conflit les uns avec les autres) en essayant d'ajouter des paramètres à un objet de commande.Erreur de paramètre ADO dans VBScript

Set cmd = CreateObject("ADODB.Command") 
cmd.ActiveConnection = con 
cmd.CommandText = "ProcName"     
cmd.CommandType = 4 'adCmdStoredProc 

MsgBox("0") 
'cmd.Parameters.Append(cmd.CreateParameter("@InvoiceNumber", adVarChar, adParamInput, 100, sInvoice)) 
Set pInvoiceNumber = cmd.CreateParameter("@InvoiceNumber", adVarChar, adParamInput, 100, sInvoice) 
cmd.Parameters.Append(pInvoiceNumber) 

L'objet de connexion est valide et ouvert au moment de l'exécution de ce code. Le paramètre @InvoiceNumber de la procédure stockée est un varchar (100). Qu'est-ce que j'oublie ici?

+0

Plus précisément, l'erreur se produit sur la ligne 'Set pInvoiceNumber = ...'. –

+0

'Set cmd.ActiveConnection = con'? –

+0

@oraclecertifiedprofessional oui. Comme je l'ai mentionné, c'est un objet de connexion valide et ouvert que ce point. N'est-ce pas la bonne façon de le faire? –

Répondre

2

Je ne parviens pas à répliquer le problème, mais je travaille dans ASP classique. J'ai trouvé ce post qui semble être pertinent.

VBA: Run-time error 3001 Arguments Are Of The Wrong Type... when setting ADODB.Command object members

Il semble que les constantes adVarChar et adParamInput peuvent être le problème en raison de la liaison tardive. La résolution consistait à ajouter les constantes à l'en-tête Sub.

Si ce n'est pas possible, essayez d'utiliser la suggestion d'Oracle Certified Professional de Refresh

Set cmd = CreateObject("ADODB.Command") 
cmd.ActiveConnection = con 
cmd.CommandText = "ProcName"     
cmd.CommandType = 4 'adCmdStoredProc 
cmd.Parameters.Refresh 
cmd.Parameters(0).Value = sInvoice 
+0

La solution de votre lien est ce qu'il a fait. Bien que j'ai également utilisé le "Set cmd.ActiveConnection" comme suggéré par @oraclecertifiedprofessional. –

Questions connexes