[Résolu][SQL] Convertion de valeurs dans une requete SQL

Convertion de valeurs dans une requete SQL [Résolu][SQL] - VB/VBA/VBS - Programmation

Marsh Posté le 20-10-2005 à 17:22:49    

Bonjour,  :hello:  
 
          J'ai un champ sous SQL nommé "Securite" qui est soit à 0 soit à -1.
Pour que ce soit moins dur à lire je convertis en Oui (-1) ou Non (0)
 
Je fait la convertion à chaque fois qu'il est necessaire mais j'ai une zone de liste ou je n'y arrive pas.
 
Me.lstNC.RowSource = "SELECT [N°], [Raison sociale], [CF], [Date évènement], [Secteur], [Type de NC], [Securite] FROM RS_CF, NC WHERE [CF] = [Code Fournisseur] ORDER BY [N°];"
 
Comment puis-je modifier ma requete pour qu'elle renvoie Oui ou Non à la zone de liste en fonction de la valeur du champ securite plz ? (plutot que 0 ou -1)
 
Si vous preferez aiguiller que donner la réponse je suis preneur d'information merci :)


Message édité par sLiZeR le 21-10-2005 à 13:56:51
Reply

Marsh Posté le 20-10-2005 à 17:22:49   

Reply

Marsh Posté le 20-10-2005 à 17:29:58    

Tu devras faire appel à une fonction non standard, selon la dispo de ton DBMS, genre IF(...).
 
A éviter. Ce genre de conversion est mieux traitée par l'application par-dessus que par SQL lui-même.
 
[:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 20-10-2005 à 17:35:05    

Désolé j'ai pas compris tes remarques ...
 Si tu peux eclaircir svp

Reply

Marsh Posté le 20-10-2005 à 17:55:08    

Jete un oeil sur la doc te ton DBMS, pour voir si il offre une fonction "IF".
 
Maintenant, même si c'est le cas, ce n'est pas standard et il y a fort à croire que tu ne présentes pas les résultats de tes queries tels quels, non ?
 
A la limite, si tu n'as pas d'appli par dessus, tu peux envisager cette solution. [:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 21-10-2005 à 10:21:01    

Si dans mon cas il faut que je procède comme cela.
 
Je vais tester si je trouve une fonction "IF"
 
à suivre...

Reply

Marsh Posté le 21-10-2005 à 10:24:25    

sLiZeR a écrit :

Si dans mon cas il faut que je procède comme cela.


Ah ouais ? [:dawa] Strofor sa !


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 21-10-2005 à 13:23:45    

sircam a écrit :

Ah ouais ? [:dawa] Strofor sa !


 
ce qui est trop fort c'est l'ortographe utilisé par un soit disant  "Tueur de boulays illettrés"  
 
Bref je ne vois pas trop ta remarque, j'ai une zone de liste et il faut bien que je lui donne un contenu nan ? C'est pas judicieux d'utiliser une requete sql pour ça ?
 
Me.lstNC.RowSource = "SELECT [N°], [Raison sociale], [CF], [Date évènement], [Secteur], [Type de NC], [Securite] FROM RS_CF, NC WHERE [CF] = [Code Fournisseur] ORDER BY [N°];"  
 
je vois pas ou est le problème... Si ce n'est que mon champ sécurité (qui est un champ de type bit) n'est pas très lisible pour les utilisateurs... (cf 1er message)

Reply

Marsh Posté le 21-10-2005 à 13:42:09    

IIf(TaZone = 0,"Non","Oui" )

Reply

Marsh Posté le 21-10-2005 à 13:56:38    

Super c'est parfait ça fonctionne.
 
N'empeche que j'avais pas vu ta fonction. J'était tomber sur IF(tazone=0, "non", "oui" ) mais SQL me disait qu'il ne connaissait pas. J'ai trouver cela dans l'aide d'Access. Quelle est la différence plz ?

Reply

Marsh Posté le 21-10-2005 à 14:05:02    

IIF ( Condition, ValeurRetournéeSiVrai, ValeurRetournéeSiFaux)
> IIf est donc une fonction qui renvoit une valeur
> Par contre a utiliser avec modération, car les deux valeurs sont évaluées..
Par exemple  
x = 0
IIf(x>0, 1/X, 1)  
> la valeur 1/X est evaluée et donc cause une erreur (division par zero)
 
 

Reply

Marsh Posté le 21-10-2005 à 14:05:02   

Reply

Marsh Posté le 21-10-2005 à 14:10:47    

oki

Reply

Marsh Posté le 21-10-2005 à 14:27:55    

Si je pe me permettre une pitite correction.
 
Je parle pour les zones de liste.
 
ça ne fonctionne que si c'est inscrit comme cela  
 
SELECT ...., IFF([securite]=0, "Non", "Oui" ) AS Securite2 ....  
 
Par exemple.  
Voila

Reply

Marsh Posté le 21-10-2005 à 14:31:34    

Oui c'est exact il le faut le nommer, comme par exemple pour AVG() etc..
 
 
EDIT : mais pourquoi n'as tu pas déclaré cette variable en booleen?
 
EDIT 2 : si jamais tu appelle cette requête à partir d'un programme (ce que je doute), evite d'utiliser cette fonction, et gère cela plutot dans ton programme lorsque tu affiche cette valeur.


Message édité par Profil supprimé le 21-10-2005 à 14:40:39
Reply

Marsh Posté le 21-10-2005 à 14:49:03    

sLiZeR a écrit :

ce qui est trop fort c'est l'ortographe utilisé par un soit disant  "Tueur de boulays illettrés"


Mais je peux me le permettre. [:itm]
 
Si tu passais plus souvent, tu comprendrais... [:fitterashes]
 
Parfois, j'essaye de me mettre au niveau de la masse.  [:airforceone]
 
Pour ton pb, on vient de te donner la solution toute faite, mais je persiste à me demander si c'est bien judicieux. Les rares fois où, dans ma folle jeunesse, j'ai utilisé de tels artifices, et l'expérience m'a appris que ce n'était pas la bonne façon de faire.
 
Mais si tu es convaincu du contraire, tant mieux pour toi. [:pingouino]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 21-10-2005 à 15:52:16    

Je n'en suis pas convaincu mais je ne vois pas comment faire autrement. Je vous expose le contexte si vous voyez d'autre moyen dites moi.
 
Mon programme démarre, présence de 4 onglets, contenant chaqun une zone de liste pour tout simplement afficher des valeurs contenu dans mes tables.
 
au lancement du formulaire  principal, j'ai mis une fonction init_lst qui comme son nom l'indique initialise mes 4 zone de liste. Pour cela j'utilise la commande suivante :
Me.la_liste_concernée.rowsource = "La requete SQL qui me renvoie mes informations."
 
Sur ce topic j'ai présenter une de mes listes qui devait afficher une information binaire.
 
Comment puis-je eviter d'utiliser cette fonction si ce n'est pas judicieux merci.

Reply

Marsh Posté le 21-10-2005 à 15:58:57    

Comme on te l'as dit plusieurs fois : c'est à l'application à mettre en page les données et de décider, p.e., de remplacer "1" par "oui". Pas vraiment à ton query SQL de le faire. Imagine p.e. que ton appli soit multilingue : comment ferais-tu pour gérer ça au niveau SQL ?
 
Maintenant, avec ces trucs RAD 4GL à dix sous ou le GUI fait office de data access layer et de persistence layer, on s'expose à des difficultés.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 21-10-2005 à 17:24:54    

ok j'ai compris je vais voir ce que je peux faire merci.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed