ajout dans table une selection d'aprés formulaire

Le
eric
Bonjour,
j'ai
1 table "détail lot" avec pour clef primaire 3 champs
n°marché
n°lot
ref article

1 table "base article" avec 2 champs
code_article
selection (oui/non)

un formulaire(recherche_ref) issu de"base article"
sur ce formulaire
je fais un selection sur la table "base article" en cochant selection pour
certains articles
je filtre sur les articles selectionnés

2 zone textes existent ou apparaissent
n°marché (val_marche_ajout)
n°lot( val_lot_ajout)
J'ai donc les infos nécessaires pour ajouter cette selection à ma table
"détail lot"

J'ai bien trouvé un code Vba pour ajouter les enregistrements


Private Sub miseajour_Click()
Dim MaTable As DAO.Recordset
Set MaTable = CurrentDb.OpenRecordset("détail lot")


With MaTable
.AddNew
.Fields("n°marché") = Form_recherche_ref!val_marche_ajout
.Fields("n°lot") = Form_recherche_ref!val_lot_ajout
.Fields("ref article") = Form_recherche_ref!code_article
.Update
End With

Malheuresement ce code ne copie que le premier enregistrement.
Je débute en vba et je ne sais pas comment coder
"pour tous les enregistrements dont la valeur "selection"=vrai applique la
procédure
miseajour"
Merci d'avance de m'éclairer
Cordialement
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fabien
Le #6300391
Bonjour,
j'ai
1 table "détail lot" avec pour clef primaire 3 champs
n°marché
n°lot
ref article

1 table "base article" avec 2 champs
code_article
selection (oui/non)

un formulaire(recherche_ref) issu de"base article"
sur ce formulaire
je fais un selection sur la table "base article" en cochant selection pour
certains articles
je filtre sur les articles selectionnés

2 zone textes existent ou apparaissent
n°marché (val_marche_ajout)
n°lot( val_lot_ajout)
J'ai donc les infos nécessaires pour ajouter cette selection à ma table
"détail lot"

J'ai bien trouvé un code Vba pour ajouter les enregistrements


Private Sub miseajour_Click()
Dim MaTable As DAO.Recordset
Set MaTable = CurrentDb.OpenRecordset("détail lot")


With MaTable
.AddNew
.Fields("n°marché") = Form_recherche_ref!val_marche_ajout
.Fields("n°lot") = Form_recherche_ref!val_lot_ajout
.Fields("ref article") = Form_recherche_ref!code_article
.Update
End With

Malheuresement ce code ne copie que le premier enregistrement.
Je débute en vba et je ne sais pas comment coder
"pour tous les enregistrements dont la valeur "selection"=vrai applique la
procédure
miseajour"
Merci d'avance de m'éclairer
Cordialement


Bonjour,

Tu n'est pas trés loin de la solution ;-)
Set MaTable = CurrentDb.OpenRecordset("détail lot") <- ici met la
requete sur ta table Detail Lot

Ensuite tu boucles avec
While Not Matable.eof
With Matable
.
.
.
End with
Matable.movenext
Wend
voilà
A toi de jouer !

eric
Le #6300341
bonjour,
Merci de ta réponse.
Une chose m'échappe qu'entends tu par "ici met la requête sur la table
"détail lot"?
Je ne lance pas de requête puisque ma selection est déjà faite via le filtre
suivant

Private Sub Filtsel_Click()

Me.FilterOn = True
Me.Filter = "[selection]=true"


End Sub

en suivant les instructions j'obtiens
Private Sub Commande100_Click()
Dim MaTable As DAO.Recordset
Set MaTable = CurrentDb.OpenRecordset("détail lot")

While Not MaTable.EOF
With MaTable
.AddNew
.Fields("num_interne_marche") = Form_recherche_ref!val_marche_ajout
.Fields("num_lot") = Form_recherche_ref!val_lot_ajout
.Fields("ref_plg") = Form_recherche_ref!CODE
.Update
End With
MaTable.MoveNext
Wend
End Sub

rien ne se passe



Bonjour,
j'ai
1 table "détail lot" avec pour clef primaire 3 champs
n°marché
n°lot
ref article

1 table "base article" avec 2 champs
code_article
selection (oui/non)

un formulaire(recherche_ref) issu de"base article"
sur ce formulaire
je fais un selection sur la table "base article" en cochant selection pour
certains articles
je filtre sur les articles selectionnés

2 zone textes existent ou apparaissent
n°marché (val_marche_ajout)
n°lot( val_lot_ajout)
J'ai donc les infos nécessaires pour ajouter cette selection à ma table
"détail lot"

J'ai bien trouvé un code Vba pour ajouter les enregistrements


Private Sub miseajour_Click()
Dim MaTable As DAO.Recordset
Set MaTable = CurrentDb.OpenRecordset("détail lot")


With MaTable
.AddNew
.Fields("n°marché") = Form_recherche_ref!val_marche_ajout
.Fields("n°lot") = Form_recherche_ref!val_lot_ajout
.Fields("ref article") = Form_recherche_ref!code_article
.Update
End With

Malheuresement ce code ne copie que le premier enregistrement.
Je débute en vba et je ne sais pas comment coder
"pour tous les enregistrements dont la valeur "selection"=vrai applique la
procédure
miseajour"
Merci d'avance de m'éclairer
Cordialement


Bonjour,

Tu n'est pas trés loin de la solution ;-)
Set MaTable = CurrentDb.OpenRecordset("détail lot") <- ici met la
requete sur ta table Detail Lot

Ensuite tu boucles avec
While Not Matable.eof
With Matable
..
..
..
End with
Matable.movenext
Wend
voilà
A toi de jouer !




Fabien
Le #6300191
bonjour,
Merci de ta réponse.
Une chose m'échappe qu'entends tu par "ici met la requête sur la table
"détail lot"?
Je ne lance pas de requête puisque ma selection est déjà faite via le filtre
suivant

Private Sub Filtsel_Click()

Me.FilterOn = True
Me.Filter = "[selection]=true"


End Sub

en suivant les instructions j'obtiens
Private Sub Commande100_Click()
Dim MaTable As DAO.Recordset
Set MaTable = CurrentDb.OpenRecordset("détail lot")

While Not MaTable.EOF
With MaTable
.AddNew
.Fields("num_interne_marche") = Form_recherche_ref!val_marche_ajout
.Fields("num_lot") = Form_recherche_ref!val_lot_ajout
.Fields("ref_plg") = Form_recherche_ref!CODE
.Update
End With
MaTable.MoveNext
Wend
End Sub

rien ne se passe



Bonjour,
j'ai
1 table "détail lot" avec pour clef primaire 3 champs
n°marché
n°lot
ref article

1 table "base article" avec 2 champs
code_article
selection (oui/non)

un formulaire(recherche_ref) issu de"base article"
sur ce formulaire
je fais un selection sur la table "base article" en cochant selection pour
certains articles
je filtre sur les articles selectionnés

2 zone textes existent ou apparaissent
n°marché (val_marche_ajout)
n°lot( val_lot_ajout)
J'ai donc les infos nécessaires pour ajouter cette selection à ma table
"détail lot"

J'ai bien trouvé un code Vba pour ajouter les enregistrements


Private Sub miseajour_Click()
Dim MaTable As DAO.Recordset
Set MaTable = CurrentDb.OpenRecordset("détail lot")


With MaTable
.AddNew
.Fields("n°marché") = Form_recherche_ref!val_marche_ajout
.Fields("n°lot") = Form_recherche_ref!val_lot_ajout
.Fields("ref article") = Form_recherche_ref!code_article
.Update
End With

Malheuresement ce code ne copie que le premier enregistrement.
Je débute en vba et je ne sais pas comment coder
"pour tous les enregistrements dont la valeur "selection"=vrai applique la
procédure
miseajour"
Merci d'avance de m'éclairer
Cordialement


Bonjour,

Tu n'est pas trés loin de la solution ;-)
Set MaTable = CurrentDb.OpenRecordset("détail lot") <- ici met la
requete sur ta table Detail Lot

Ensuite tu boucles avec
While Not Matable.eof
With Matable
..
..
..
End with
Matable.movenext
Wend
voilà
A toi de jouer !

Bonjour,


Oups !!!
Voilà ce que j'ai compris de ton besoin :
La procedure a pour but de parcourir un jeux d'enregistrements. Ce jeux
doit donc être filtré.
Ne connaissant pas tous les détail de ta base, je pense qu'une requete
du genre select * from [base article] where [selection]=true devrait
faire l'affaire.
En clair on va parcourir le jeux d'enreg de la table base article pour
lesquels Selection est vrai. Pour chaque enregistrements de ce jeux on
va créé un nouvel enreg dans la table detail lot.

Private Sub Commande100_Click()
Dim MaTable As DAO.Recordset
Dim TableSource,Matable as DAO.Recordset

Set MaTable = CurrentDb.OpenRecordset("détail lot")
Set TableSource = CurrentDb.OpenRecordset("Select * from [Base
articles] where [Selection]=True")

While Not TableSource.EOF

MaTable.AddNew
Matable("num_interne_marche") = Form_recherche_ref!val_marche_ajout
Matable("num_lot") = Form_recherche_ref!val_lot_ajout
MaTable("ref_plg") = TableSource("CODE")
MaTable.Update

TableSource.MoveNext
Wend
Matable.close

TableSource.close
Set Matable=Nothing
Set TableSource=Nothing
End sub

C'est mieux ?




eric
Le #6300131
bonjour,
Je ne peux pas exploiter directement ma table source "base article"parce que
les
champs
n°marché
n°lot
n'y figurent pas et doivent être renseignés dans la table"détail lot"
puisqu'ils font partie de la clef primaire (voir structure de mes tables en
dessous)

C'est pourquoi j'ai crée un formulaire (recherche_ref) basé sur la table
"base article) dans lequel sont insérés 2 champs indépendants qui reprennent
les infos

n°marché (val_marche_ajout)
n°lot( val_lot_ajout)

C'est à partir de ce formulaire filtré que je dois pouvoir exécuter l'ajout.


1 table "détail lot" avec pour clef primaire 3 champs
n°marché
n°lot
ref article
1 table "base article" avec 2 champs
code_article
selection (oui/non)

Merci de ton aide
Publicité
Poster une réponse
Anonyme