bonjour,
je suis débutant sous access.
Pour simplifier le probleme, disons que j'ai une table avec un champs "nom" et un champs numéro automatique.
Les champs "nom" sont parfois vides.
Je voudrais que les champs vides prennent la valeur du dernier champs non vide avant eux.
Concretement, j'ai:
ligne1: 1 - Dupont
ligne2: 2 - " "
ligne3: 3 - " "
ligne4: 4 - Durand
ligne5: 5 - " "
Je voudrais que les champs "nom" de la ligne 2 et 3 (qui sont donc vides) prennent la valeur "Dupont" et la ligne 5 "Durand"
J'essaie un peu au hasard un requête sql de ce type:
SELECT Table1.Nom
FROM Table1
IF Table1.Nom is not null
"var"=Table1.Nom
ELSE Table1.Nom="var"
;
Ca ne marche évidemment pas (erreur de syntaxe de la clause FROM), j'imagine que la syntaxe est bizarre, j'espère que ça donne toutefois une idée de ce que je voudrais.
Je ne sais pas si je peux définir une variable ainsi, si mon emploi de if - else est correct, etc.
Merci de votre aide!!!!
Non, c'est pas du SQL ça.
Essaye plutôt de voir la commande UPDATE.
Je n'ai plus l'habitude de faire avec ACCESS et je ne l'ai pas a disposition pour vérifier la syntaxe. (SQL est un langage bien normé : c'est trop facile, tous les SGBD utilise leur propre patois ).
J'ai vérifié sous INFORMIX.
Soit la ligne N, dont le nom est vide.
Quelle est le nom à prendre :
Code :
SELECT Nom
FROM Table1
WHERE Num = ( SELECT MAX ( Num )
FROM Table1
WHERE Nom IS NOT NULL
AND Num < N )
Comment changer la valeur du nom de la ligne N de la table :
Code :
UPDATE Table1
SET Nom = 'Nouveau nom'
WHERE Num = N
Comment résoudre le problème posé :
Code :
UPDATE Table1
SET Nom = ( SELECT Nom
FROM Table1
WHERE Num = ( SELECT MAX ( Num )
FROM Table1
WHERE Nom IS NOT NULL
AND Num < X.Num ) )
from Table1 X
Une bonne âme pour vérifier, voire adapter pour ACCESS...