Création d'un champs dans une table access

Résolu
Gil_ Messages postés 18 Date d'inscription samedi 25 novembre 2006 Statut Membre Dernière intervention 18 janvier 2007 - 2 déc. 2006 à 14:16
Gil_ Messages postés 18 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

5 réponses

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


 


 
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
2 déc. 2006 à 15:58
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
0
Gil_ Messages postés 18 Date d'inscription samedi 25 novembre 2006 Statut Membre Dernière intervention 18 janvier 2007
3 déc. 2006 à 16:38
Pourrait tu préciser ton point 3. Je cherche le code pour alimenter les colonnes avec une fonction if ?
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
3 déc. 2006 à 17:45
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gil_ Messages postés 18 Date d'inscription samedi 25 novembre 2006 Statut Membre Dernière intervention 18 janvier 2007
8 déc. 2006 à 23:13
merci ca marche nikel
0
Rejoignez-nous