VBA, ADO.De connexion et les paramètres de requête
J'ai excel VBA script:
Set cоnn = CreateObject("ADODB.Connection")
conn.Open "report"
Set rs = conn.Execute("select * from table" )
Script fonctionne très bien, mais je veux ajouter un paramètre. Par exemple, " où (parentid = myparam)", où myparam placé à l'extérieur de la chaîne de requête. Comment puis-je le faire?
Bien sûr, je peux modifier la chaîne de requête, mais je ne pense pas très sage.
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser un ADODB.Objet de commande que vous pouvez ajouter des paramètres à. Voici en gros ce qui ressemble à
Le point d'interrogation dans le CommandText est l'espace réservé pour le paramètre. Je crois, mais je ne suis pas positif, que l'ordre de vous Ajouter les paramètres doivent correspondre à l'ordre des questions de marques (quand vous avez plus d'un). Ne soyez pas dupe que le paramètre est appelé "parentid" parce que je ne pense pas que l'ADO se soucie de l'autre nom que pour l'identification.
Autre exemple de retour d'une commande à partir d'une fonction:
Un couple de choses à noter:
Lors de l'utilisation de
adVarChar
type de données, la taille de l'argument decmd.CreateParameter
(p. 255) est nécessaire. Ne pas les fournir, il en résulte une erreur d'exécution 3708: définie par l'Application ou par l'objet défini d'erreur, comme indiqué dans le la documentation:Si le
cmd.ActiveConnection
propriété est définie lors de lacmd.CommandText
est défini, etcmd.CommandText
contient des paramètres nommés,cmd.Parameters
sera remplie en conséquence. L'appel decmd.Parameters.Append
par la suite pourrait entraîner des doublons. Par exemple:Je crois que c'est ce que l'on entend dans le la documentation, ce qui est légèrement inexact:
Comme une solution de contournement, vous pouvez soit définir
cmd.CommandText
oucmd.ActiveConnection
après ajout de paramètres.Must Declare the scalar variable "@name"