Problème de programmation en VBA (ACCESS97)

Fermé
Murielle - 5 sept. 2003 à 15:54
blux Messages postés 26107 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 5 juin 2024 - 8 sept. 2003 à 10:54
Bonjour,

J'ai un problème de programmation en VBA, sous ACCESS :
J'ai une table à occurence simple "PATIENTS", qui a pour clé un numéro de patient. Cette table comprend également 99 champs (vides), correspondant à 99 actes.
J'ai également une deuxième table "ACTES". Cette table est à occurence multiple. Elle ne contient que 2 champs : un champ "numéro de patient" et un champ "acte".
Je voudrai rappatrier les actes qui sont dans "ACTES" pour les mettre dans ma table "PATIENTS", en sachant que lenombre d'actes est variable selon les patients !
Merci de votre aide !!!
A voir également:

9 réponses

Utilisateur anonyme
5 sept. 2003 à 18:25
t'as essayé quoi? quel message d'erruer tu rencontres?

ceci étant dit, question structure, 99 champs, contenant des réferences à des occurrences de la même entité, et pouvant en plus ne rien contenir.... à ta place je réviserais un peu le modèle de ta base de données

kinder.surprise,
le maton du matou
0
Bonsoir,
As-tu pensé à utiliser l'assistant d'ACCESS ? Il est bien pratique
0
Le problème, c'est que je n'arrive pas à faire une boucle faisant varier mes champs actes de AC01 à AC99 sans avoir à les nommer un par un.
Kinder.surprise, je suis tout à fait d'accord avec toi : cette structure va à l'encontre des principes de BD relationnelle mais elle m'est demandée, in fine, par un organisme administratif !
0
Utilisateur anonyme
8 sept. 2003 à 09:58
Salut murielle,

Tu vas devoir spliter tes boucles en deux parties. Une pour les AC01 à AC09 et une autre pour les AC10 à AC11.

L'idée est de:
1. Lire ta table "PATIENT"
2. Pour chaque enregistrement de PATIENT, tu filtres ta table "ACTE" sur la clé patient. Tu comptes le nombre d'enregistrements qu'elle contient (soit nbrActe).
3. Tu crées deux boucles pour le remplissage

Patient.edit
If nbrActer < 10 Then
For i = 1 to nbrActe
Patient("ACT0" & i).value = Acte("nom_du_champ").Value
Next i
Else
For i = 1 to 9
Patient("ACT0" & i).value = Acte("nom_du_champ").Value
Next i

For i = 10 to nbrActe
Patient("ACT" & i).value = Acte("nom_du_champ").Value
Next i
End If
Patient.Update

J'ai pas testé, mais ça devrait être quelquechose comme ça.


Rien n'est plus dangereux qu'une idée quand on a 
qu'une idée
  :-)
0

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

Posez votre question
blux Messages postés 26107 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 5 juin 2024 3 292
8 sept. 2003 à 10:06
Salut,

c'est une base avec ce principe-là qui t'est demandée ou un état avec ce principe-là ? car si c'est un état, pas de problème, si c'est une base, c'est ridicule, autant faire de l'excel...

je suis curieux de savoir quel organisme te demande ça... (j'ai une idée, mais j'ose pas l'avouer), réponds-moi sans crainte s'il te plaît...

Sinon, il faut que tu fasses une boucle en vba avec changement du nom de champ avec l'option fields(n)

je m'explique :
tu crées une requête qui va chercher les éléments dans la table initiale, quand tu l'exécute, tu comptes le nombre d'occurences d'actes que tu trouve pour un patient.

lorsque tu veux insérer l'acte dans la table cible, tu fais un rs.addnew et tu identifies le champ acte1, avec !fields(1), si c'est le deuxième champ de ta table et que tu es à l'occurrence 1 tes actes, tu continues jusqu'a la fin de ta requête principale, ensuite tu passes au patient suivant.

pour savoir le nom de tes champs tu peux faire une boucle en demandant l'affichage de rs.fields(n).name et en faisant varier n.

Ca irait ?

C'est un peu confus comme explications, mais le principe est simple, utiliser le numéro de l'occurrence de lecture pour nommer le champ à mettre à jour... (en se méfiant que le comptage commence à 1 et que l'index des champs commence à 0)

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
LeLaid, tu es vraiment génial !!! Tu me sors d'une situation qui commencait à me peser très fortement.
Ta solution est claire, encore fallait-il y penser ...et connaitre VBA mieux que moi !

Merci également à Kinder.Surprise et jonibigoude d'avoir pris la peine de répondre à ma question.
0
Utilisateur anonyme
8 sept. 2003 à 10:20
Hum, Hum, que de flâteries....

Rien n'est plus dangereux qu'une idée quand on a 
qu'une idée
  :-)
0
Merci Blux !
Je vais étudier tout ça !

PS : c'est bien une BD et non un état qu'on me demande (ça serait trop simple...) et l'organisme, c'est la DRASS. Ton idée était-elle la bonne ?
0
blux Messages postés 26107 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 5 juin 2024 3 292
8 sept. 2003 à 10:54
ben zut, alors, mais j'étais pas loin... ;-)
Vraiment ridicule de demander ça à ACCESS, c'est sûrement parce qu'ils veulent faire de l'import sous excel et qu'ils n'osent pas le dire...

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0