Concaténation fonction VB et requête SQL

chefinf Messages postés 166 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 25 octobre 2011 - 24 juin 2008 à 17:04
chefinf Messages postés 166 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 25 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);"

.

8 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
chefinf Messages postés 166 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 25 octobre 2011
24 juin 2008 à 19:06
Ma fonction est comme suit:

*******************************************
Private function fct_st(ch as string) as string


ch = ucase(replace ( ch, "Saint", "st" ))


fct_st = ch

End function

********************************************

je veux faire appel à cette fonction lors de la selection du nom de ville par la requête sql.

Merci pour votre attention.

.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chefinf Messages postés 166 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 25 octobre 2011
25 juin 2008 à 09:12
Il s'agit d'une comparaison entre une ligne de textbox et le résultat d'une requête.

Par exemple:

Saint Francisco = Saint Francisco  
 
                       ou
 Saint Francisco St Francisco> Les deux résultats sont équivaux
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 juin 2008 à 10:21
PS : Je ne connais pas la syntaxe avec les "JOIN" : cet exemple ne fait que reprendre ta syntaxe.
0
chefinf Messages postés 166 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 25 octobre 2011
25 juin 2008 à 10:28
Merci jack, c trés gentille.

.
0
Rejoignez-nous