Replace dans une requête SQL Access [Résolu]

NHenry 14272 Messages postés vendredi 14 mars 2003Date d'inscription 15 octobre 2018 Dernière intervention - 23 août 2010 à 11:35 - Dernière réponse : NHenry 14272 Messages postés vendredi 14 mars 2003Date d'inscription 15 octobre 2018 Dernière intervention
- 23 août 2010 à 14:21
Bonjour,

Lors du codage d'une requête SQL pour récupérer un utilisateur par un identifiant pouvant contenir des 0 non significatifs, j'ai codé une requête SQL, dont voici un exemple (généré par le code) :
SELECT * FROM TUsers WHERE UserIdExt='01234' OR Replace(LTrim(Replace(UserIdExt,"0"," "))," ","0")='1234'


Le problème est que si je fais cette requête par l'assistant MSAccess, ça passe sans souci et la réponse est bonne, mais par le code (VB6/DAO), ça me retourne l'erreur :
Erreur 3085 : "Fonction 'replace' non définie dans l'expression."

Je ne comprend pas pourquoi

En désespoir de cause, je me tourne vers une recherche LIKE, mais si quelqu'un peut expliquer ce mystère, je suis preneur.

Merci d'avance :)

Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 23 août 2010 à 14:17
3
Merci
@nhervagault : 1ère réponse mauvaise vu que UserIdExt est un champ de la table.

Pas possible vu que dans Access une couche est ajoutée au langage SQL (les fonctions publiques des modules peuvent être utilisées).

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question

Merci cs_ghuysmans99 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de cs_ghuysmans99
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 23 août 2010 à 13:53
0
Merci
Salut,

Sort le replace de la chaine SQL

"SELECT * FROM TUsers WHERE UserIdExt='01234' OR " & Replace(LTrim(Replace(UserIdExt.....


ou utilise des simples quotes dans tes expressions

SELECT * FROM TUsers WHERE UserIdExt='01234' OR Replace(LTrim(Replace(UserIdExt,'0',' ')),' ','0')='1234'
Commenter la réponse de nhervagault
NHenry 14272 Messages postés vendredi 14 mars 2003Date d'inscription 15 octobre 2018 Dernière intervention - 23 août 2010 à 14:19
0
Merci
Bonjour,

J'ai testé la version :
SELECT * FROM TUsers WHERE UserIdExt='01234' OR Replace(LTrim(Replace(UserIdExt,'0',' ')),' ','0')='1234'

Mais ça ne fonctionne pas, même erreur.

La version
"SELECT * FROM TUsers WHERE UserIdExt='01234' OR " & Replace(LTrim(Replace(UserIdExt.....
Que tu propose ne me convient pas, car les retrait des 0 non significatifs est à faire sur le champ de la BDD pour comparaison, il faut donc que ça fasse parti de la requête SQL.

Par ailleurs, j'ai testé avec Int (pour convertir en nombre), mais quelques null semblent me bloquer (erreur : conversion incorrecte).

Merci pour la piste quand même.
Le problème est toujours présent.

Commenter la réponse de NHenry
NHenry 14272 Messages postés vendredi 14 mars 2003Date d'inscription 15 octobre 2018 Dernière intervention - 23 août 2010 à 14:21
0
Merci
Merci ghuysmans99, pour ta réponse (je faisait la mienne au même moment, d'où le double post).

Donc, pour faire simple, je ne peux pas utiliser ces fonctions dans mon code.

Super, je vais devoir trouver une autre solution ...

Commenter la réponse de NHenry

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.