VBA sous access (pa rigolai!!!) - VB/VBA/VBS - Programmation
Marsh Posté le 15-05-2002 à 09:04:41
ben oui, tu as les fonctions Sum, Avg, etc....
Ex de requete qui créé un champ "Somme" contenant la somme des valeurs contenues dans Champ1 et Champ2
SELECT Champ1, Champ2, Champ1+Champ2 AS Somme FROM Table
Marsh Posté le 15-05-2002 à 09:17:14
que veux tu faire exactement ?
Marsh Posté le 15-05-2002 à 09:21:12
je t'explique
j'ai 9 champs dans une table, contenant ou non une valeur
lors de la requete que je crée, je souhaite inclure un champ qui affiche le libéllé du premier de ces 9 champs, s'il contient une valeur, sinon le 2e, sinon le 3e etc...
compris ou pas ?
je sais c tordu
Marsh Posté le 15-05-2002 à 09:55:06
tordu, c'est le mot......
expose plutot le pb initial, y'a surement un moyen plus simple d'arriver au résultat que tu souhaites ! parce que la, ce que je comprends, c'est qu'il faudra créé des colonnes supplémentaires dans ta table si des champs contiennent une valeur (ALTER TABLE), et ça me semble assez space ....
Marsh Posté le 15-05-2002 à 09:58:53
SELECT iff( champ1 Is Null,iff(champ2 Is Null, iff(...), champ2),champ1) AS champ FROM table;
OK ?
Marsh Posté le 15-05-2002 à 10:00:50
Harkonnen a écrit a écrit : tordu, c'est le mot...... expose plutot le pb initial, y'a surement un moyen plus simple d'arriver au résultat que tu souhaites ! parce que la, ce que je comprends, c'est qu'il faudra créé des colonnes supplémentaires dans ta table si des champs contiennent une valeur (ALTER TABLE), et ça me semble assez space .... |
certes
je recommence
j'ai une table principale contenant une quinzaine de champs... parmi ces champs, 9 représentent un type d'incident (agression, vol...) . si un de ces champs contient une valeur, c'est que l'incident courant est de ce type. mais l'incident peut etre de plusieurs types (vol+agression par ex...)
comme les types d'incident apparaissent par ordre de gravité, j'aimerais savoir au final quel est le premier champ rempli.
je veux donc afficher un état décrivant chaque incident (càd chaque entrée de ma table principale), avec un champ type d'incident indiquant quel est le premier type renseigné...
et on en revient à ce que j'expliquai tout à l'h !!
c mieux ??
Marsh Posté le 15-05-2002 à 10:07:14
Si y'a moyen de changer la structure de la BD, ce serait mieux, bikoze, là t'es limité à 9 niveaux de gravité.
Donc, tu fait une table des types d'incident avec :
ID (Identifiant du type)
LIB (Libellé)
Et une table de détail des type d'incident d'un incident :
ID_INCIDENT (de l'incident.)
ID_TYPE (Identifiant du niveau de gravité)
NIVEAU de gravité.
Ensuite, tu fait ta requête en indiquant NIVEAU=1 dans le WHERE !
OK ?
Marsh Posté le 15-05-2002 à 10:11:07
Mara's dad a écrit a écrit : SELECT iff( champ1 Is Null,iff(champ2 Is Null, iff(...), champ2),champ1) AS champ FROM table; |
C'est pas plutot "iif" ?
Marsh Posté le 15-05-2002 à 10:12:42
Mara's dad a écrit a écrit : Si y'a moyen de changer la structure de la BD, ce serait mieux, bikoze, là t'es limité à 9 niveaux de gravité. Donc, tu fait une table des types d'incident avec : ID (Identifiant du type) LIB (Libellé) Et une table de détail des type d'incident d'un incident : ID_INCIDENT (de l'incident.) ID_TYPE (Identifiant du niveau de gravité) NIVEAU de gravité. Ensuite, tu fait ta requête en indiquant NIVEAU=1 dans le WHERE ! OK ? |
sauf que c beaucoup plus compliqué que cela
un type d'incident est encore divisé en catégories (vol est caractérisé par vol à main armée, vol àla tire, etc)
la structure de la base a été faite ainsi pour autoriser la multisélection d'un type d'incident
avant y'avait qu'un champ type d'incident, on ne pouvait en choisir qu'un maintenant c possible d'en choisir plusieurs...
Marsh Posté le 15-05-2002 à 10:33:19
c'est IFF !
Marsh Posté le 15-05-2002 à 10:46:13
voila ce que je tape
chaine = chaine & " AND TYPE_INCIDENT.typeIncident = (SELECT iff(INCIDENT.agression IS NULL;iff(INCIDENT.vol IS NULL;iff(INCIDENT.incendie IS NULL ; iff(INCIDENT.dégradation IS NULL;iff(INCIDENT.comportement IS NULL;iff(INCIDENT.problèmes IS NULL;iff(INCIDENT.regroupements IS NULL;iff(INCIDENT.éclairage IS NULL;'Divers';'Eclairage public';'Regroupements';'Problèmes sociaux';'Trouble à l ordre public';'Dégradation';'Incendie de véhicule';'Vol';'Agression' AS type FROM TYPE_INCIDENT) "
et il me dit erreur de syntaxe...
me suis planté ??
Marsh Posté le 15-05-2002 à 14:12:10
Il me semble que c'est des "," qu'il faut mettre, et pas des ";" !
Les ";", c'est quand tu fait ta requête dans l'assistant, sinon, en mode SQL, c'est des "," !
Vive PetitMou et sa logique à la CON !
Marsh Posté le 15-05-2002 à 14:31:50
moi je suis sur que c'est iif...
Marsh Posté le 15-05-2002 à 08:58:34
bonjour
est ce possible avec une requete sql d'afficher un champ qui n'existe pas, et qui résulte d'un calcul à partir d'autres champs ?
merci
---------------
Music|Market|Feed|Loom|DVD