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

Signaler
Messages postés
18
Date d'inscription
samedi 25 novembre 2006
Statut
Membre
Dernière intervention
18 janvier 2007
-
Messages postés
18
Date d'inscription
samedi 25 novembre 2006
Statut
Membre
Dernière intervention
18 janvier 2007
-
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

5 réponses

Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
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...


 


 
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
26
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
Messages postés
18
Date d'inscription
samedi 25 novembre 2006
Statut
Membre
Dernière intervention
18 janvier 2007

Pourrait tu préciser ton point 3. Je cherche le code pour alimenter les colonnes avec une fonction if ?
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
26
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
Messages postés
18
Date d'inscription
samedi 25 novembre 2006
Statut
Membre
Dernière intervention
18 janvier 2007

merci ca marche nikel