Formulaire Acces avec Macro

cortexm Messages postés 4 Date d'inscription samedi 1 mars 2003 Statut Membre Dernière intervention 15 février 2006 - 15 févr. 2006 à 10:53
cortexm Messages postés 4 Date d'inscription samedi 1 mars 2003 Statut Membre Dernière intervention 15 février 2006 - 15 févr. 2006 à 13:49
Actuellement en aprentissage sous Acces,
j'ai besoin d'afficher des données provenant d'un fichier texte dans un formulaire Acces.

Voici mon code:

Private Sub Report_Open(Cancel As Integer)

nomfich = reptrav & "toto.tmp"

Open nomfich For Input As #1

Seek #1, 1

Do Until EOF(1)
Line Input #1, donnée

a = Left$(donnée, 17)
premier = 19
pos = InStr(premier, donnée, ";", 1)
b = Mid$(donnée, premier, pos - 20)
pos1 = InStr((1 + pos), donnée, ";", 1)
pos1 = pos1 - (1 + pos)
c = Mid$(donnée, (1 + pos), pos1)

Reports![defauts_couche].[Étiquette42].Caption = a
Reports![defauts_couche].[Étiquette44].Caption = b
Reports![defauts_couche].[Étiquette46].Caption = c


'DoCmd.RunMacro "ouverture élément"
DoCmd.Maximize
Loop
'DoCmd.OpenForm "defauts_couche"
Close #1


End Sub

Mon problème est que je voudrai bien afficher dans mon formulaire toutes les données du fichier texte.

Alors que dans ce cas je n'ai seulement que la dernière info de mon fichier texte.

Quelqu'un peut il me donner une explication sur le fonctionnement des formulataires via une macro.

Cordialement

5 réponses

Simouss33 Messages postés 85 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 15 février 2006 2
15 févr. 2006 à 11:30
Le fait que tu n'est que la dernière ligne est normal:

Reports![defauts_couche].[Étiquette42].Caption = a
Reports![defauts_couche].[Étiquette44].Caption = b
Reports![defauts_couche].[Étiquette46].Caption = c

Si tu veux afficher tes informations dans des étiquettes, il faut qu'à chaque ligne tu les mettes dans des étiquettes différentes.
La à chaque tour de boucle tu écrases la valeur précédente.
De plus tu utilises un état et pas un formulaire, leur gestion est beaucoup plus compliquée: contrairement aux formulaires, les états ne permettent pas de créer plusieurs enregistrements.
Donc au final:
- soit tu ajoutes des étiquettes pour chaque ligne dans lesquels et tu y mets tes valeurs
- soit tu crées une table exprès pour enregistrer tes valeurs provisoirement puis tu relies cette table à ton état.
cortexm Messages postés 4 Date d'inscription samedi 1 mars 2003 Statut Membre Dernière intervention 15 février 2006
15 févr. 2006 à 11:53
au vu de ta réponse j'ai donc mis mes données dans une table
voici le code modifié:

Private Sub Report_Open(Cancel As Integer)

Set db = DBEngine.Workspaces(0).Databases(0)
Set feuille = db.OpenRecordset("couche", DB_OPEN_TABLE)

If Not (feuille.EOF And feuille.BOF) Then
feuille.MoveFirst
Do Until feuille.EOF
feuille.Delete
feuille.MoveNext
Loop
End If

nomfich = reptrav & "toto.tmp"

Open nomfich For Input As #1

Seek #1, 1

Do Until EOF(1)
Line Input #1, donnée

a = Left$(donnée, 17)
premier = 19
pos = InStr(premier, donnée, ";", 1)
b = Mid$(donnée, premier, pos - 20)
pos1 = InStr((1 + pos), donnée, ";", 1)
pos1 = pos1 - (1 + pos)
c = Mid$(donnée, (1 + pos), pos1)

feuille.AddNew
feuille![date] = a
feuille![panne] = b
feuille![item] = c
feuille.Update

Loop

Close #1


End Sub

Maintenant comment je relie cette table à mon état ?
Simouss33 Messages postés 85 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 15 février 2006 2
15 févr. 2006 à 11:58
En mode création tu vas dans les propriétés de ton état.
Dans l'onglet données, tu vas dans Source et tu choisis la table que tu viens de créer.

Ensuite, tu vas dans "liste des champs" (dans la barre d'outils) et tu les glisses dans ton état. Si tu passe en mode aperçu ton état répertoriera tous les enregistrements contenus dans ta table.
cortexm Messages postés 4 Date d'inscription samedi 1 mars 2003 Statut Membre Dernière intervention 15 février 2006
15 févr. 2006 à 13:22
je ne trouve pas propriété de mon état, où se trouve cette option?

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

Posez votre question
cortexm Messages postés 4 Date d'inscription samedi 1 mars 2003 Statut Membre Dernière intervention 15 février 2006
15 févr. 2006 à 13:49
ok ca marche , je passe donc par un état
merci pour tes réponses
A bientot
Rejoignez-nous