OVH Cloud OVH Cloud

[ACC XP] manipulation sur table par code

2 réponses
Avatar
pat
Bonjour à tous et toutes

Je souhaite en VBA :
- ouvrir une table
- vérifier la présence de un ou plusieurs champs et les compter
- ajouter des champs en plus

plus concretement

pour un enregistrement j'ai par exemple
CHAMPS DONNEE
article chaise
mois 1 100
mois 2 150

l'utilisateur ouvre la table et souhaite etablir des stats sur 4 mois
(04-08-09 et 10)
et saisir les valeurs pour 09 et 10 de 200 et 175
Je voudrais en VBA ouvrir la table et voir qu'elle comporte que 2 mois
(verifier les champs et les compter)
ajouter les 2 champs manquant : mois 3 et mois 4 pour après saisie des
données par l'utilisateur obtenir :

CHAMPS DONNEE
article chaise
mois 1 100
mois 2 150
mois 3 200
mois 4 175

j'ai creuser la fonction CreateField mais ceci est dans le cadre d'un
CreateTableDef
qui lui crée une table.... or la table existe

merci à l'âme charitable qui me mettra sur une piste

Patrick

2 réponses

Avatar
xavier HUE
Bonjour Patrick,

Sub AjoutChamp(intNumMois As Integer)
Dim db As Database
Dim tbl As TableDef
Dim fld As Field
Dim intNbMois As Integer
Dim intf As Integer

Set db = CurrentDb
Set tbl = db.TableDefs("Table1")

For Each fld In tbl.Fields
If Left(fld.Name, 4) = "mois" Then
intNbMois = intNbMois + 1
End If
Next fld

'intNbMois contient le nombre de champs Moisxx
For intf = intNbMois To intNumMois
Set fld = tbl.CreateField 'Créer le champ
With fld
.Name = "Mois" & Format$(intf, "00")
.Type = dbLong 'voir les autres types
dans l'aide de CreateField
End With
tbl.Fields.Append fld 'Ajouter le champ à la
table
Next intf

Set fld = Nothing
Set tbl = Nothing
db.Close
Set db = Nothing
End Sub

Tu peux voir aussi du côté de la commande SQL ALTERTABLE.

Ceci étant, je trouve la façon de procéder trés bizarre!!
Ajouter des champs dans une table pour faire des stats????
- Et si la table contient 12 champs, et qu'on ne veut
faire des stats que sur 4 mois?
- Ne serait-ce pas une erreur de conception de la base??
Je verrais plutôt TblQteArticle(Article, Annee, NumMois,
Qte) avec les 3 premiers champs en clé primaire.

Cordialement.
Avatar
pat
Bonjour à tous et toutes

Tout d'abord, merci Xavier de ta réponse....

tu me disais...
*Ceci étant, je trouve la façon de procéder trés bizarre!!
*Ajouter des champs dans une table pour faire des stats????
* -Et si la table contient 12 champs, et qu'on ne veut faire des stats que
sur 4 mois?
* -Ne serait-ce pas une erreur de conception de la base??
*je verrais plutôt TblQteArticle(Article, Annee, NumMois, Qte) avec les 3
premiers champs en clé primaire.

Merci pour ton avis, tu as raison !!!!!! , je tentais de chercher midi à
quatorze heure... :-o((((
la clé primaire composée est plus performante.......

A force de mal analyser les choses, d'un truc simple, j'aurais tendance à
faire une "usine à gaz" !!!!!!

Encore merci de me "remettre" sur les rails

à bientôt sur le net

Patrick