Problème de programmation en VBA (ACCESS97)

Murielle -  
blux Messages postés 27117 Date d'inscription   Statut Modérateur Dernière intervention   -
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 !!!

9 réponses

Utilisateur anonyme
 
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
jonibigoude
 
Bonsoir,
As-tu pensé à utiliser l'assistant d'ACCESS ? Il est bien pratique
0
Murielle
 
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
 
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 27117 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
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
Murielle
 
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
 
Hum, Hum, que de flâteries....

Rien n'est plus dangereux qu'une idée quand on a 
qu'une idée
  :-)
0
Murielle
 
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 27117 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
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