je le code suivant qui fonctionne parfaitement bien dans le cadre de mon programme:Utilisation des caractères génériques avec des paramètres dans vb.net ADO
.CommandText = .CommandText & " and [Name] = ?"
ajouter le paramètre à l'aide:
.Parameters.Append(SearchCom.CreateParameter("@Name", ADODB.DataTypeEnum.adChar, ADODB.ParameterDirectionEnum.adParamInput, 100, Name.Text))
Cela fonctionne parfaitement, mais je veux vraiment chercher tout ce qui contient la valeur dans Name.Text. Je cherchai des dizaines d'articles qui disent que vous pouvez faire ce qui suit, mais il retourne toujours 0 même si il y a des matches de données definilty:
.CommandText = .CommandText & " and [Name] like '%' + ? + '%'"
.Parameters.Append(SearchCom.CreateParameter("@Name", ADODB.DataTypeEnum.adChar, ADODB.ParameterDirectionEnum.adParamInput, 100, Name.Text))
J'ai maintenant essayé la suggestion ci-dessous, mais le jeu d'enregistrements renvoie 0 résultats: J'utilise Microsoft Visual Studio 2015 en écrivant dans vb.net en utilisant ADODB pour me connecter à une instance de SQL Server 2014. Une trace SQL de la suggestion de CodingGorilla révèle les exécutions SQL suivantes lors de l'exécution. Je ne sais pas assez pour comprendre pourquoi ça ne marche pas!
exec sp_executesql N'SELECT * FROM qFormsAndName Where [FormType] Like ''R1%'' and [Name] like @P1 ORDER BY [CurrentStatus], [DateReceived];',N'@P1 char(100)','%JONES%
S'il vous plaît quelqu'un peut-il vous aider?
OK J'ai résolu ce problème pour tous ceux qui trébuchent sur ce problème. Vous verrez que dans mon .parameters.append j'ai mis une longueur de texte "par défaut" de 100. Cela fonctionne pour les requêtes "= Param" (pour une raison quelconque) mais ne fonctionne pas pour les requêtes Like car le paramètre suppose des caractères espace après le texte.Comme% P1% où P1 est un paramètre, il trace comme Comme "% JONES%" –