chefinf
Messages postés166Date d'inscriptionmardi 3 juin 2008StatutMembreDernière intervention25 octobre 2011
-
24 juin 2008 à 17:04
chefinf
Messages postés166Date d'inscriptionmardi 3 juin 2008StatutMembreDernière intervention25 octobre 2011
-
25 juin 2008 à 10:28
Bonjour,
J'ai défini sous vb6 une fonction "Fct_St(ch as string) as string" et je veux l'utiliser dans la clause where d'une requête sql dans mon code VB6, mais le problème ce que la chaîne à envoyer comme paramètre de ma fonction et un champ à selectionner par SQL. je veux savoir comment peut on faire une concaténation? Aidez moi SVP.
Ma requête est comme suit:
req="select Client.Nom, Client.Prenom, Client.Adresse, Client.CodePostal, Client.Ville, Client.Telephone FROM Client LEFT JOIN Cp ON Client.Ville = Cp.Ville WHERE (" & Fct_St( & "Cp.Ville" & ) & " Is Not Null);"
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 24 juin 2008 à 18:50
Salut
Je ne comprends pas trop ce que tu veux faire.
Si tu paramètres une requète SQL, le texte que tu vas insérer ne pourra être qu'un nom de champ.
Or, tu l'as déjà ce nom : Cp.Ville
Pourquoi sort-il d'une fonction ?
Que te renvoie ta fonction ? donne un exemple, stp
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 24 juin 2008 à 18:52
PS
Non, tu ne pourras pas demander au SQL d'aller exécuter ta fonction pour chaque valeur qu'il rencontrera.
Une requète peut-être paramétrée, mais elle restera figée pendant toute la durée de son utilisation.
Explique mieux ce que tu veux faire.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 24 juin 2008 à 20:01
Ok
Mais tu veux modifier quoi ?
La requète ou le résultat de la requète ?
Une requète SQL est une "Input"
Elle ne peut pas interagir avec le VB pour modifier son résultat.
Il faut donc lancer ta requète normalement et si tu as besoin de modifier le contenu ensuite, une fois que tu l'auras reçu.
Est-ce que le not "Saint" est dans un champ de ta DB ou est-il dans une TextBox de ton application afin de faire la recherche ?
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 25 juin 2008 à 10:20
Ok
Je ne comprends pas trop pourquoi tu compares le Cp.Ville à Null ?
Comment s'appelle la TextBox dans laquelle se trouve le texte à rechercher ?
Il faut donc que tu écrive en toute lettre les combinaisons possibles dans ta requètes.
Il faut traiter tous les cas.
Coup de chance, "Saint" et "St" commencent et finissent pas les mêmes lettres
Par chance encore, SQL compare les chaines qu'elles soient en minuscule ou en majuscule --> Pas la peine de se torturer avec le text.
Exemple :
Dim maVille As String
maVille = maTextBox.Text
If maVille Like "Saint*" Then
maVille = Replace(maVille, "Saint", "S%t")
End If
req="select Client.Nom, " & _
" Client.Prenom, " & _
" Client.Adresse, " & _
" Client.CodePostal, é & _
" Client.Ville, " & _
" Client.Telephone " & _
" FROM Client " & _
"LEFT JOIN Cp ON Client.Ville = Cp.Ville " & _
" WHERE Cp.Ville Like '" & maVille & "'"
Tu remarqueras que le Like se traite différemment en VB6 qu'en SQL :
VB6 : On compare avec une étoile *
SQL : On compare avec un pourcent %
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)