Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/05/2011, 09h29   #1
Futur Membre du Club
 
Femme Audrey
Étudiant
Inscription : avril 2011
Messages : 71
Détails du profil
Informations personnelles :
Nom : Femme Audrey
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 71
Points : 17
Points : 17
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 :
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 :
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!!
audrey1912 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 10h18   #2
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
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

dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 10h29   #3
Futur Membre du Club
 
Femme Audrey
Étudiant
Inscription : avril 2011
Messages : 71
Détails du profil
Informations personnelles :
Nom : Femme Audrey
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 71
Points : 17
Points : 17
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 :
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...
audrey1912 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 10h37   #4
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
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
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 10h52   #5
Futur Membre du Club
 
Femme Audrey
Étudiant
Inscription : avril 2011
Messages : 71
Détails du profil
Informations personnelles :
Nom : Femme Audrey
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 71
Points : 17
Points : 17
Ç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...
audrey1912 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 11h05   #6
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 445
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 445
Points : 7 532
Points : 7 532
Une jointure externe serait peut-être plus adaptée ...
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 11h08   #7
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837


et cela :
Code :
1
2
WHERE numero = 0 
   OR numero IS NULL
et la requete update s’écrit
Code :
1
2
3
UPDATE ..... SET numero = ' '
   WHERE numero = 0 
      OR numero IS NULL
Citation:
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.....
Citation:
quand même
???? ce n'est pas une décision du SGBD, c'est ta requête qui lui demande cela.

Citation:
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.
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 11h13   #8
Membre expérimenté
 
Homme
Inscription : juillet 2007
Messages : 437
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 : 437
Points : 558
Points : 558
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 :
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...
Luc1an0 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 19/05/2011, 12h15   #9
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
Code :
COALESCE(MaColonne, ValeurDeRemplacement)
pour la norme
La remarque de al1_24 est pertinente ...

Bon courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h34.


 
 
 
 
Partenaires

Hébergement Web