Création d'un champs dans une table access [Résolu]

Messages postés
19
Date d'inscription
samedi 25 novembre 2006
Statut
Membre
Dernière intervention
18 janvier 2007
- - Dernière réponse : Gil_
Messages postés
19
Date d'inscription
samedi 25 novembre 2006
Statut
Membre
Dernière intervention
18 janvier 2007
- 8 déc. 2006 à 23:13
Bonjour,

Je souhaite créer un progamme sous access mais je ne sais pas comment faire. Dans ma base de données; j'ai une table avec deux champs "montant" et "sens".
- montant est de type numérique
- sens peut prend la valeur 1 ou 2.

Je voudrais créer dans cette table deux autres champs :
"montant1" qui reprendrait la valeur "montant" si le sens est égale à 1
"montant2" qui reprendrait la valeur "montant" si le sens est égale à 2

Ensuite je voudrais supprimer les champs "montant" et "sens"

      montant      sens      montant1      montant2
1      100            1            100               (vide)
2      160            2           (vide)              160

et ainsi de suite pour les autres enregistrements

Merci a vous
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
1884
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
3
Merci
Salut,


toujours dans le même ordre d' idée que nhervagault,
la règle veut que tout ce qui est calculé ne doit pas figuré
dans une table en tant que champ...
mais plutôt généré ; à part des cas précis de traçage et
d' historique, ce qui ne semble pas être le cas dans ton exemple.
Solution proposée:
Au lieu de créer deux champs, construit une requête qui les génère:


"SELECT TBL.Montant, TBL.Sens, IIf(TBL.Sens=1, " _
 & "TBL.Montant,Null) AS Montant1, IIf(TBL.Sens=2, " _
& "TBL.Montant,Null) AS montant2 " _
& "FROM TBL;"


et c' est le résultat de cette requête que tu vas exploiter...


 


 

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 136 internautes nous ont dit merci ce mois-ci

Commenter la réponse de chaibat05
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
21
0
Merci
Salut,

Je ne comprends pas trop la question.

1 --> Tu veux créer des colonnes ou les remplir.
2--> Pour creer des colonnes il faut utiliser ADOX sur access, peut être que ca fonctionne en ado avec une adocommand alter table .... mais je ne suis pas sur.
Regarde sur developpez.com il y un tutoriel ADOX deposé dessus

3 --> Pour alimenter les colonnes il faut que tu fasses une boucle qui parcours tous les enregistrements.

4--> Je pense que ta méthode de dupliquer ta colonne est une mauvaise idée car elle est contraire aux bonnes pratique de base de données, a moins qu'elle sert d'histoire pour garder la valeur n-1
Mais sinon c'est pour moi une mauvaise solution, a moins que tu me démontre le contraire.

BOn courage
Commenter la réponse de nhervagault
Messages postés
19
Date d'inscription
samedi 25 novembre 2006
Statut
Membre
Dernière intervention
18 janvier 2007
0
Merci
Pourrait tu préciser ton point 3. Je cherche le code pour alimenter les colonnes avec une fonction if ?
Commenter la réponse de Gil_
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
21
0
Merci
Salut

En gros en vb ca donnerait.

while not rs.eof
if rs(sens) = 1 then    strsql "update set montant1 rs(montant) where id = rs(id)
else if rs(sens) = 2 thenstrsql "update set montant1 rs(montant) where id = rs(id)
end if
sqlCommand.execute strsql, conn

rs.movenext
wend

rs.close

Attention a ta selection les parmetre peuvent bloqué la mise à jour des champs si la table ou les enregistrements sont veouillés

Le probleme est que je ne fais jamais ce gere de manip car cela est due a une mauvaise conception de la base de données cf point 4

Bon Courage
Commenter la réponse de nhervagault
Messages postés
19
Date d'inscription
samedi 25 novembre 2006
Statut
Membre
Dernière intervention
18 janvier 2007
0
Merci
merci ca marche nikel
Commenter la réponse de Gil_