addition de champs sous VB

addition de champs sous VB - VB/VBA/VBS - Programmation

Marsh Posté le 22-01-2009 à 23:38:59    

bonjour
j'utilise une base access et par une macro VB je realise un traitement des données et je bute sur un probleme d'addition de champ
ma table ANALYSE est composée entre autres des champs   MINA MINB MINC MIND MINE  chacun de valeur  1 ou 0 (champs numeriques)
et je souhaite tout simplement additionner ces valeurs et porter le total dans le champ TOTALMIN
 
je suis completement bloquée alors que ca me parait tres simple
 
merci de votre aide

Reply

Marsh Posté le 22-01-2009 à 23:38:59   

Reply

Marsh Posté le 22-01-2009 à 23:59:25    

la solution la plus simple ça peut être de fair un
Select mina, minb, minc, mind,mine from analyse
 
tu additionne les 5 champs récupéré avec le vb et puis tu fais update analyse set totalmin = ta_valeur


---------------
Instagram - Mon PVT en Australie.
Reply

Marsh Posté le 23-01-2009 à 09:35:33    

en pratique tu écris ça comment ?
ca ne fais que quelques jours que je connais le VB
merci de ta repose

Reply

Marsh Posté le 23-01-2009 à 13:38:47    

En gros :

Code :
  1. Sub SelectX1()
  2.  
  3.    Dim dbs As Database, rst As Recordset
  4.    Dim somme as integer
  5.    Set dbs = OpenDatabase("tabaseaccess.mdb" )
  6.  
  7.    Set rst = dbs.OpenRecordset("SELECT mina, minb,minc,mind,mine from analyse;" )
  8.  
  9.    rst.Movefirst
  10.    somme = rst("mina" ) + rst("minb" ) + rst("minc" ) + rst("mind" ) + rst("mine" )
  11.    dbs.execute("update table analyse set totalmin = " & somme & " ;" )
  12.  
  13.    dbs.Close
  14.  
  15. End Sub
 

Ca donnera a peu près ça, je peux pas le tester donc il y a peut-être des erreurs dedans...
Je te conseille de lire des tutoriaux sur le VB tu en trouveras plusieurs ici : http://vb.developpez.com/cours/

Message cité 1 fois
Message édité par LePhasme le 23-01-2009 à 13:39:06

---------------
Instagram - Mon PVT en Australie.
Reply

Marsh Posté le 24-01-2009 à 10:23:18    

je te remercie de ta reponse  
la procedure bute et j'ai eu differents message
" ne trouve pas la base" " Null..." "..incompatible.."
est ce que ce ne serait pas une erreur de definition de base ?
 
j'ai commence les autres sub par
 
Sub total
  Dim MaBase
  Set MaBase = CurrentDb()
  Set basetravail = MaBase.OpenRecordset("ANALYSE" ) '  c'est la table  
  basetravail.MoveFirst
 
 
 
 
je finis par
  basetravail.Update
  basetravail.MoveNext
MsgBox("Traitement terminé" )
End Sub
 
peux tu incorporer ta réponse  la dedans ou autrement ?
merci  tu es super
Eglantine
 
 

Reply

Marsh Posté le 24-01-2009 à 15:37:30    

rebonjour
j'ai un probleme de compactage de ma base access
lorsque j'essai de la compacter un message me repond " TableSys....existe deja"  et je ne peux plus compacter cette copie de base meme ayant changé le nom !

Reply

Marsh Posté le 24-01-2009 à 17:00:50    

Désolé j'utilise pas le compactage de base de données, je saurais pas t'aider.


---------------
Instagram - Mon PVT en Australie.
Reply

Marsh Posté le 24-01-2009 à 17:12:09    

Reply

Marsh Posté le 25-01-2009 à 01:57:36    


 
j'ai réussi a débloquer pour le compactage, c'est tres lourd j'ai du recreer une nouvelle base pour pouvoir recompacter  
 
pour ce qui est plus haut , la réécriture du calcul des sommes peux tu m'indiquer l'écriture avec les indications des noms que j'utilise au début de la procédure Sub,  
merci tu es super

Reply

Marsh Posté le 25-01-2009 à 01:59:58    


 
j'ai réussi a débloquer pour le compactage, c'est tres lourd j'ai du recreer une nouvelle base pour pouvoir recompacter  
 
pour ce qui est plus haut , la réécriture du calcul des sommes peux tu m'indiquer l'écriture avec les indications des noms que j'utilise au début de la procédure Sub,  
merci tu es super
 
j'essaie d'incorporer un compteur qui indiquerai en temps réel l'enregistrement traité en cours car ce sont des traitements longs , sais tu le faire en l'incorporant dans la procédure ?

Reply

Marsh Posté le 25-01-2009 à 01:59:58   

Reply

Marsh Posté le 25-01-2009 à 23:16:58    

Code mis à jour ça ne fonctionne que pour un seul enregistrement dans la db

Code :
  1. Sub SelectX1()
  2.  
  3.    Dim dbs As Database, rst As Recordset
  4.    Dim somme as integer
  5.    Set dbs = currentDB()
  6.  
  7.    Set rst = dbs .OpenRecordset("ANALYSE" )
  8.  
  9.    rst.Movefirst
  10.    somme = rst("mina" ) + rst("minb" ) + rst("minc" ) + rst("mind" ) + rst("mine" )
  11.    rst("totalmin" ) = somme
  12.    rst.update
  13.    dbs.Close
  14.  
  15. End Sub



Message édité par LePhasme le 25-01-2009 à 23:17:58

---------------
Instagram - Mon PVT en Australie.
Reply

Marsh Posté le 30-01-2009 à 11:15:10    

lorsque je place ce sub  le programme bloque sur " Dim dbs as database "
que faire ?  

Reply

Marsh Posté le 30-01-2009 à 11:19:08    

une  2eme précision  
lorsque je construit une requete d' addition cad  mina + minb + minc  le programme tourne ,indique qu'il va mettre " tous" les champs a jour et rien ne s 'inscrit dans les cellules
déjà il et a jour "tous" les champs est curieux car d'habitude il n'indique " que les champs conernés  , mais de plus aucune valeur de somme ne s'inscrit.....bizarre   help

Reply

Marsh Posté le 30-01-2009 à 11:31:32    

en fait mon problème est simple   je veux pouvoir par une macro VB ou par une requête mettre a jour un champ avec la valeur de l'addition de plusieurs autre champs de la même table ( parfois j'ai des messages erreur de type , de conversion ....  quelle est la qualification des champs pour pouvoir travailler avec des valeurs simples de 0 à 20 sans décimales,sans texte,sans rien des nombres  SIMPLES  
ma base totale fait 100 M° et parfois il me répond " argument invalide " "pas assez de mémoire...voulez vous continuer .....impossible de mettre  jour....... erreur de conversion,de types...."

Reply

Marsh Posté le 01-02-2009 à 23:54:30    

une autre précision concernant l'addition des champs    les champs sont bien tous du même format vérifié n fois  ,   lorsque "  tous  "  les champs sont valorisés de 1 à   10 par ex   l'addition se fait , par contre lorsqu'un seul champ est vide aucun total n'apparait,  ni message    svp help

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed