1 membre
Connectés : ( personne )
- La Charte du Forum - Forum - Problèmes Access des débutants
Sujet n° 372 |
Saisir plusieurs enregistrements à la fois |
le 30/05/2010 : 19:01 par Kolele
visiteur |
Bonsoir, Grâce aux conseils trouvés ici, je me lance dans la créationd'une application de gestion de 9000 manuels scolaires élèves avec lecteur codebarre (code39).Je bute sur un problème de saisie en masse : sil'attribution du manuel se fera individuellement avec lecteur et saisie de l'élèveau clavier (j'ai provisoirement renoncé à coller un code barre sur le front dechaque élève !), l'achat des manuels est massif (400 exemplaires du même manueld'un coup). Or, je ne sais gérer la saisie que d'un enregistrement à la fois. Tables : Discipline (maths, anglais..), Niveau (Seconde,Première..), ManuelScolaire (titre, éditeur et avec en clé externe les clésprimaires des 2 tables précédentes), ModeStockage (achat/vente/destruction), Stock(Champ compteur en clé primaire, CléManuelScolaire en clé externe, Code Barre,CléModeStockage en clé externe). Je cherche à fabriquer une procédure VBA qui génèrerait enun clic, sur un formulaire, dans la table Stock les 400 exemplaires du manueld'Espagnol de la classe de Seconde.(Ça fait des années que je rêve de cette procédure et là jene peux plus m'en passer) Merci à tous de vos tuyaux.Et merci à 3Stone d'héberger les SDF de MPFAccess ! |
|
|
Réponse n° 2 -------- le 03/06/2010 : 18:23 par kolele
visiteur |
Rebonsoir Pierre
"Stocks" n'est peut être pas le nom adéquat de
cette table.
Dans la table "manuelScolaire", (côté UN), je veux
placer chaque titre (CléManuelSco = 1 ; Titre = Espagnol – Classe de Seconde).
Tandis que dans cette table "Stock", (côté plusieurs), je voudrais inventorier
chaque volume (CléStock = 368 ; ClémanuSco = 1). Puis dans une requête,
introduire le codebarre (CléStock, au format code39).
Et donc je voudrais, le jour de la livraison des 400 volumes
du même titre, les ajouter d'un coup dans la table stock (l'étape suivante sera
d'éditer des étiquettes codebarre, puis d'organiser la distribution aux élèves
; là-dessus, je devrais me débrouiller).
Une requête mise à jour suffirait où faut-il du VBA pour
réaliser un truc pareil ?
En te remerciant, |
|
|
Réponse n° 3 -------- le 07/06/2010 : 20:51 par 3Stone
Administrateur
|
Bonjour,
Citation :Dans la table "manuelScolaire", (côté UN), je veux placer chaque titre (CléManuelSco = 1 ; Titre = Espagnol – Classe de Seconde).
Oui, mais tu as 400 livres identiques me semble t-il, non ?
Citation :Tandis que dans cette table "Stock", (côté plusieurs), je voudrais inventorier chaque volume (CléStock = 368 ; ClémanuSco = 1). Puis dans une requête, introduire le codebarre (CléStock, au format code39).
Je ne sais pas trop ce que tu entends par là...
Encore une fois, un code barre n'est qu'une méthode d'écriture qui permet une lecture optique (via scanner) mais cela n'influence en rien l'organisation de la base et des tables. D'ailleurs, en cas de panne du lecteur, il faut pouvoir utiliser la base exactement de la même manière, mais par saisie manuelle. Le code barre n'ajoute donc rien, même pas un champ! Il permet seulement de faciliter les saisies. Par exemple, on lit le badge de l'élève via son code barre, puis le code barre du livre (que ce dernier existe physiquement sur le livre ou soit disposé à proximité).
Cordialement, Pierre(3stone) |
|
|
Réponse n° 4 -------- le 09/06/2010 : 22:37 par Kolele
visiteur |
Bonsoir, 3Stone :
C'est vrai : je mélange tout. Le code barre n'a rien à voir
avec mon problème du jour qui est : Gérer la livraison par le libraire de 400
volumes d'un même titre
Je veux les saisir dans Access, avec 2 tables : dans la
première table "ManuelScolaire", je saisis seulement le titre du
bouquin (Côté UN) ; dans la seconde table
"Volumes" (côté plusieurs), je saisis chacun des 400 volumes
(CléPrimaire au format NuméroAuto, Clé externe = clé primaire de la table
précédente).
Pour répondre à ta question : oui, les 400 livres sont
identiques, matériellement parlant. Dans Access, ils seront différenciés dans
la deuxième table, par la clé primaire (volume 1, volume 2….400).
C'est là que je cherche une solution pour m'éviter d'avoir à
saisir un à un 400 volumes, ou d'importer des lignes d'Excel. Je pense à une Requête
ajout qui ajouterait à ma table "Volume" 400 enregistrements,
incrémentant le NuméroAuto, et définissant la valeur du champ clé externe (identifiant
ManuelScolaire, ="2" par exemple, correspondant dans la Table "ManuelScolaire" au titre
Espagnol – Classe de 2nde – Première langue). Au final, je voudrais
400 lignes de plus avec la valeur "2"
Je n'arrive pas à la paramétrer en mode création, encore
moins en SQL.
J'espère avoir été moins abscons !
Merci de ta patience.
|
|
|
Réponse n° 5 -------- le 10/06/2010 : 15:46 par 3Stone
Administrateur
|
Bonjour,
Plus de réponse sur social.answers.microsoft.com ?
Malgré que je ne vois pas la raison d'une telle organisation... voilà ce que tu peux faire. Adapte les noms de table et de champ à ce que tu utilises.
table 1 : T_Type_Livre champ 1 : ID_Livre - numéroauto champ 2 : Nom_Livre - texte ...
table 2 : T_Livre_Disponible champ 1 : ID_LivreDispo - numéroauto champ 2 : ID_TypeLivre - numérique (recoit donc ID_Livre de table 1)
un petit formulaire frm_AjoutLivre avec : un liste lst_TypeLivre basée sur la table 1 (colonne ID_Livre cachée) une zone de texte txtQuantite pour la saisie du nombre de livres à saisir un bouton cmd_AjoutLivre avec le code ci-dessous
Code :Private Sub cmd_AjoutLivre_Click() Dim i As Integer Dim db As DAO.Database Dim rs As DAO.Recordset '// Vérifications If Not IsNull(Me!lst_TypeLIvre) Then If IsNull(Me.txtQuantite) Then MsgBox "Saisir une quantité" Exit Sub End If Else MsgBox "Sélectionner le type du livre" Exit Sub End If '// Boucle Set db = CurrentDb Set rs = db.OpenRecordset("T_Livre_Disponible") For i = 1 To Me.txtQuantite rs.AddNew rs!ID_TypeLivre = Me!lst_TypeLivre rs.Update Next i '// Libérer les variables rs.Close db.Close Set rs = Nothing Set db = Nothing '// OK MsgBox Me.txtQuantite & " livres " & Me!lst_TypeLivre.Column(1) & " ont été ajoutés." Me.lst_TypeLIvre = Null Me.txtQuantite = Null End Sub
Voilà, si c'est ce que tu souhaites...
Cordialement, Pierre(3stone) |
|
|
Réponse n° 6 -------- le 11/06/2010 : 15:32 par kolele
visiteur |
Raah lovely : je cours l'essayer ! |
|
|
sujet actif
sujet clos
Important!
Nouveau message -
Rectifier message
Clôturer sujet
Remonter
|