Requête SQL & concaténation ?

Xeena Messages postés 6 Date d'inscription jeudi 18 novembre 2010 Statut Membre Dernière intervention 8 février 2011 - 7 févr. 2011 à 15:18
Xeena Messages postés 6 Date d'inscription jeudi 18 novembre 2010 Statut Membre Dernière intervention 8 février 2011 - 8 févr. 2011 à 15:13
Bonjour,

Voici mon problème.
J'ai une ComboBox qui affiche le nom et prénom des salariés. (Deux champs concaténés, donc.) Et je veux récupérer le numéro du salarié qu'on a sélectionné.
Donc je fais ceci :

        Dim NomSalarie As String
        Dim NumDuSalarie As Integer
        NomSalarie = CBListeSalarie.SelectedItem
        Dim strSql = "SELECT numsalarie FROM salarie WHERE (nomsalarie + ' ' + prenomsalarie)='" & NomSalarie & "';"
        Dim MycommandS As MySqlCommand = Connection.CreateCommand()
        MycommandS.CommandText = strSql
        Dim dataReaderS As MySqlDataReader = MycommandS.ExecuteReader
        Do While dataReaderS.Read
            NumDuSalarie = dataReaderS.GetString(0)
        Loop
        dataReaderS.Close()


Mais avec ceci, quand je fais un enregistrement de commande je retrouve toujours "5" dans ma base de données mySQL (5 car c'est le dernier numéro de salarié) et si je tape en "dur" la requête dans mySQL on me retourne tous les numéros de salariés...
Si vous avez une idée je suis preneuse... Merci !

4 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
7 févr. 2011 à 17:40
Salut

Donc ta variable "NomSalarie" contient donc "Dupond Laurent".
L'as-tu vérifié ?
Es-tu sûre que cette chaine ne comporte pas des espaces supplémentaires ou autre tabulation ?

Pas bien compris ce qui se passe :
"je retrouve toujours "5" (...) car c'est le dernier numéro"
Je ne vois pas ce qui est logique là dedans

"si je tape en "dur" (...) on me retourne tous les numéros"
Veux-tu dire que tu reçois tous les enregistrements (sans sélection efficace) ?
Ou bien veux-tu dire que dans ce cas, cela fonctionne correctement ?

Dans ce dernier cas, il faudrait voir la syntaxe qui marche et la comparer à la syntaxe qui marche pas (vérifier le contenu de strSql lors d'une requète).

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Xeena Messages postés 6 Date d'inscription jeudi 18 novembre 2010 Statut Membre Dernière intervention 8 février 2011
8 févr. 2011 à 08:35
Bonjour,

[b][i]Donc ta variable "NomSalarie" contient donc "Dupond Laurent".
L'as-tu vérifié ? /i/b

Elle se vérifie avec l'affichage dans ma ComboBox car il apparait le nom du salarié ainsi que son prénom. Comme "Dupond Laurent" oui. NomSalarie contient l'item que l'utilisateur a sélectionné dans la ComboBox.
Je viens de vérifier, au cas où, en affichant NomSalarie dans un label lorsque l'utilisateur le sélectionne et on a bien "Dupond Laurent".


Es-tu sûre que cette chaine ne comporte pas des espaces supplémentaires ou autre tabulation ?

Comment le vérifier ? Dans la base de données ? Je viens de regarder et non, normalement il n'y en a pas.


[i][b]Pas bien compris ce qui se passe :
"je retrouve toujours "5" (...) car c'est le dernier numéro"
Je ne vois pas ce qui est logique là dedans /b/i

Justement je ne comprends pas moi-même. En fait, j'ai 4 salariés avec pour chacun un numSalarie, nomSalarie, prenomSalarie. Les numSalarie vont de 2 à 5 inclus.


[b][i]"si je tape en "dur" (...) on me retourne tous les numéros"
Veux-tu dire que tu reçois tous les enregistrements (sans sélection efficace) ?
Ou bien veux-tu dire que dans ce cas, cela fonctionne correctement ? /i/b

Je veux dire que lorsque j'écris la requête en "dur" sur MySQL, on me retourne tous les enregistrements. (Mais que la colonne des numSalarie. Donc je vois : 2, 3, 4 et 5 dans une colonne.) ça ne fonctionne donc pas comme je le souhaiterai. Moi je cherche à avoir le numéro du salarie donc le nom+prénom est égal à ce que l'on a sélectionné dans la ComboBox.


Merci.
0
titoche22 Messages postés 1 Date d'inscription lundi 1 février 2010 Statut Membre Dernière intervention 8 février 2011
8 févr. 2011 à 14:48
As-tu vérifier si le nom et le prénom sont dans le bon sens dans la requête

c'est à dire si ce n'est pas cette requête si :

SELECT numsalarie FROM salarie WHERE (prenomsalarie + ' ' + nomsalarie)='" & NomSalarie & "';"
0
Xeena Messages postés 6 Date d'inscription jeudi 18 novembre 2010 Statut Membre Dernière intervention 8 février 2011
8 févr. 2011 à 15:13
Oui, j'ai vérifié car on ne sait jamais à force de voir le code on ne voit plus rien.
Il y a d'abord le nom puis le prénom, et ils ont bien un espace entre eux..
0
Rejoignez-nous