IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Problème d'affichage quand champ NULL


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 103
    Points : 59
    Points
    59
    Par défaut Problème d'affichage quand champ NULL
    Bonjour,

    Voilà pour un formulaire en asp, je dois ramener un certains nombres de données, dont un numéro de service actuel et un numéro de service futur, que je dois retransformer avec les dénominations de chaque service. Par exemple le numéro 458 correspond RTP/DRAC/PMO/DCE.
    Bref mon code marche, sauf pour les personnes dont le numéro de service futur est à NULL ou 0.

    Voici mon code :
    Code ASP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    ReqSQL = "SELECT  service.no_service, service.code_direction, service.code_departement, service.code_division, service.code_groupe, "_
    + "Vservice.no_service as Vno_service, Vservice.code_direction as Vcode_direction, Vservice.code_departement as Vcode_departement, " _
    + "Vservice.code_division as Vcode_division, Vservice.code_groupe as Vcode_groupe, […] agent.no_service, agent.no_service_futur, […]" _
    + "FROM  agent AS agent INNER JOIN service AS service ON agent.no_service = service.no_service INNER JOIN " _
    + "service AS Vservice ON agent.no_service_futur = Vservice.no_service [...] WHERE […]" 		
     
    	response.write "<response>"
    	If RsUser.RecordCount = 1 Then
    		response.write "<statut>Success</statut>"
    		response.write 	"<requester>"
     
    []
     
    		If isNull(RsUser("no_service") ) Then
    			response.write "<current_service>" & " " & "</current_service>"
    		Else direction 		= RTrim(Cstr(RsUser.Fields("code_direction").value))
    			 departement 	= RTrim(Cstr(RsUser.Fields("code_departement").value))
    			 division 		= RTrim(Cstr(RsUser.Fields("code_division").value))
    			 groupe 		= RTrim(Cstr(RsUser.Fields("code_groupe").value))
    			 service 		= direction + "/" + departement + "/" + division + "/" + groupe
    			 response.write		"<current_service>" & service & " </current_service>"
    		End If
     
    		If isNull(RsUser("Vno_service") ) Then
    			response.write "<new_service>" & " " & "</new_service>"
    		Else direction_futur 	= RTrim(Cstr(RsUser.Fields("Vcode_direction").value))
    			 departement_futur  = RTrim(Cstr(RsUser.Fields("Vcode_departement").value))
    			 division_futur  	= RTrim(Cstr(RsUser.Fields("Vcode_division").value))
    			 groupe_futur  		= RTrim(Cstr(RsUser.Fields("Vcode_groupe").value))
    			 service_futur  	= direction_futur + "/" + departement_futur + "/" + division_futur + "/" + groupe_futur
    			 response.write		"<new_service>" & service_futur & " </new_service>"
    		End If
     
    		[]
     
    		response.write 	"</requester>"
    	Else
    		response.write "<statut>Failure</statut>"
    	End If
    	response.write "</response>"




    Et là je ne vois pas du tout... Est ce que je dois tester directement dans la requête SQL si le champ est à NULL ou à 0?
    Sinon comment je puis faire? Il faut croire que la ligne
    Code ASP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If isNull(RsUser("Vno_service") ) Then
    			response.write "<new_service>" & " " & "</new_service>"

    ne suffit pas.

    Avis, conseils, remarques seront la bienvenue!!

    Merci d'avance à vous tous!!

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 152
    Points : 1 414
    Points
    1 414
    Par défaut
    bonjour

    il s'agit ici d'un forum sur le language SQL. Hors la requete est noyee ...

    SVP

    donner le requete seule en explicitant le probleme lie a cette requete


  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 103
    Points : 59
    Points
    59
    Par défaut
    Oki pas de souci

    Je dois ramener un certains nombres de données, dont un numéro de service actuel et un numéro de service futur, que je dois retransformer avec les dénominations de chaque services.
    Par exemple le numéro 458 correspond à RTP/DRAC/PMO/DCE.

    Bref mon code marche, sauf pour les personnes dont le numéro de service futur est à NULL ou 0.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    SELECT service.no_service
         , service.code_direction
         , service.code_departement
         , service.code_division
         , service.code_groupe
         , Vservice.no_service       as Vno_service
         , Vservice.code_direction   as Vcode_direction
         , Vservice.code_departement as Vcode_departement
         , Vservice.code_division    as Vcode_division
         , Vservice.code_groupe      as Vcode_groupe
         , [...]
         , agent.no_service
         , agent.no_service_futur
         , [...]
      FROM agent AS agent
           INNER JOIN service AS service
             ON agent.no_service = service.no_service
           INNER JOIN service AS Vservice
             ON agent.no_service_futur = Vservice.no_service
           [...]
     WHERE [...]

    Comment puis-je faire pour savoir si le numéro de service futur est null ou égal 0 et le remplacer par exemple par un espace...

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 152
    Points : 1 414
    Points
    1 414
    Par défaut
    c'est la clause WHERE qui pose interrogation

    Quand on recherche une "valeur" existante, c'est

    WHERE numero = 0
    et quand la "valeur" n'existe pas, c'est
    WHERE numero IS NULL
    nota : il y a de tres nombreuses discussions dans le forum sur le sujet

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 103
    Points : 59
    Points
    59
    Par défaut
    Ça d'accord, je sais comment faire.
    Ce qui me pose problème c'est justement le fait que la valeur soit à 0 ou à NULL.

    Est-ce que je peux dans ma requête SQL lui dire que si c'est à 0 ou à NULL le remplacer par un espace ? Sinon il va quand même chercher le numéro du service (correspondant au numéro de service futur de l'agent) correspondant dans la table service mais il a un bug car les valeurs 0 et NULL n'existent pas dans cette table.

    Si je ne suis pas assez claire...

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 392
    Points
    28 392
    Par défaut
    Une jointure externe serait peut-être plus adaptée ...

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 152
    Points : 1 414
    Points
    1 414
    Par défaut


    et cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE numero = 0 
       OR numero IS NULL
    et la requete update s’écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE ..... SET numero = ' '
       WHERE numero = 0 
          OR numero IS NULL
    Sinon il va quand même chercher le numéro du service (correspondant au numéro de service futur de l'agent) correspondant dans la table service mais il a un bug car les valeurs 0 et NULL n'existe pas dans cette table.....
    quand même
    ???? ce n'est pas une décision du SGBD, c'est ta requête qui lui demande cela.

    car les valeurs 0 et NULL n'existe pas dans cette table
    ???????
    Je ne comprends rien.

    Ce serait bien d'indiquer la structure des tables.

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 467
    Points : 647
    Points
    647
    Par défaut
    En fait ton code est bon, et tu as deux manière de procéder,

    En SQL Serveur lors de ta requête, tu utilises "ISNULL"

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ISNULL(MonChamps, 'ValeurDeRemplacement') FROM ...
    En Oracle : NVL !

    En asp, au lieu d'utiliser IsNull, tu devrais utiliser "IsDbNull" qui va tester que ta valeur ramenée par ton select est "NULL".
    IsNull(MaVariable) est vrai si "MaVariable = Nothing" : rien à voir avec le retour du select...

  9. #9
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COALESCE(MaColonne, ValeurDeRemplacement)
    pour la norme
    La remarque de al1_24 est pertinente ...

    Bon courage

Discussions similaires

  1. Problème d'affichage quand champ NULL
    Par audrey1912 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 19/05/2011, 08h31
  2. Réponses: 2
    Dernier message: 23/03/2009, 18h19
  3. [MySQL] Affichage de champs dans une liste déroulante
    Par mealtone dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 03/10/2008, 18h06
  4. [ODBC] PDO_ODBC Access : problème d'affichage de champs
    Par koa dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/05/2007, 12h32
  5. Problème à l'affichage quand j'utilise SDL
    Par vincechaff10 dans le forum SDL
    Réponses: 8
    Dernier message: 25/07/2006, 11h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo