IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

[A2-VBA][Débutante] Ajout d'enregistrements selon critères


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 54
    Points : 36
    Points
    36
    Par défaut [A2-VBA][Débutante] Ajout d'enregistrements selon critères
    Bonjour à tous,

    Après avoir pourtant écrit quelques petits programmes modifiant les données d'une table, là je coince.

    Je travaille sur une table identifiant des patients dans un hôpital!
    J'ai créé un champ provisoire "clé"="NomPrenomDatNaissance".

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Clé                             DateDeDécès
    TitiToto05/07/1954              08/07/1989
    TitiToto05/07/1954  
    TitiToto05/07/1954              08/07/1989
    MimiTao04/08/1929              
    PatPit06/11/1963
    PatPit06/11/1963                 07/01/2002
    Je souhaite avec un recordset que,
    si Cle1=Cle2 et que DatDeces1 existe
    alors DatDeces2=DatDeces1

    Je suis désolée, mais je ne vois pas comment, avec un recordset, je peux comparer deux cellules d'un champ et ajouter une valeur dans un autre champ...

    Merci

  2. #2
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    bjr,

    Je ne comprend pas tout

    Juste une chose qui m'intrigue :
    1 - quel est l'intérêt du champ temporaire?
    2 - pourquoi est-il nécessaire de stocker la date de décès plusieurs fois?
    Est-ce que ça ne cacherait pas une erreur dans la conception?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    Bonjour Arkham46,

    Une erreur dans la conception ne serait pas impossible mais je commence tout juste à y réfléchir (beaucoup de nettoyage des tables au préalable)!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1 - quel est l'intérêt du champ temporaire?
    Je t'explique : j'ai 5 années et 5 secteurs psy! Si je travaille dans un secteur, j'ai un identifiant unique par patient, ce qui n'est plus le cas quand je change de secteur! Un patient peut n'avoir été hospitalisé qu'au cours d'une seule année dans un seul secteur, mais ça peut aussi être 3 années dans 4 secteurs!
    Si je veux connaître l'activité de M.TitiToto dans les secteurs 4 et 5 en 2002, ce n'est que par son nom, prenom et DatNaissance!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    2 - pourquoi est-il nécessaire de stocker la date de décès plusieurs fois?
    En effet, au final, je n'aurais qu'une ligne par patient concernant cette table!
    Euh... maintenant que j'y réfléchis, ça ne me paraît plus logique

    Je reprends ma table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
               Clé                        DateDeDécès           IdentifSecteur
    TitiToto05/07/1954              08/07/1989               8000012
    TitiToto05/07/1954                                            4008521
    TitiToto05/07/1954              08/07/1989               6000458
    MimiTao04/08/1929                                            4000473
    PatPit06/11/1963                                               7087261
    PatPit06/11/1963                 07/01/2002               5019348
    En fait j'avais pour idée au début de supprimer automatiquement les doublons mais ne sachant quelles lignes vont être supprimées, j'avais peur de perdre des infos et, de plus je dois conserver les identifiantsSecteurs (le 1er chiffre correspond au N°Secteur) pour faire la liaison avec les autres tables (activité du patient...) par secteurs!
    Je ne sais pas si ma réponse te conviendra

  4. #4
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Effectivement il y a un problème de conception alors apparemment.

    Il devrait y avoir une table patients avec les informations sur les patients et une table hospitalisations avec les informations sur les hospitalisations.

    C'est peut-être déjà le cas?
    Mais alors la date de décès devrait être dans la table des patients, pas dans celle des hospitalisations.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    Merci de réfléchir un peu à mon pb, alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Il devrait y avoir une table patients avec les informations sur les patients et une table hospitalisations avec les informations sur les hospitalisations.
    C'est bien ça, la table "patients" contient les champs :
    CodPat (unique dans UN Secteur), NomFamille, NomJF, Prenom, DatNaissance, DatDeces, cle(que j'ai créé pour relier les patients entre les secteurs)!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mais alors la date de décès devrait être dans la table des patients
    C'est bien le cas

  6. #6
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    J'aurais tendance à dire qu'il y a toujours un problème de conception

    Si tu as des données dupliquées telles que le nom, la date de naissance, .. ça n'est pas une situation "normale"

    Le champ clé temporaire c'est encore pire

    A mon humble avis il devrait y avoir une table TCodPat qui définit les différents code pour un même patient

    Donc un identifiant CodPat tel que tu as déjà
    et un identifiant IdPat sans signification fonctionnelle, mais qui fait le lien entre le CodPat et le patient dans la table patient

    Comme ça si tu saisis un code patient, tu retrouves l'identifiant qui te permet d'aller récupérer les données du patient telles que sa date de naissance, ...

    Un patient peut apparaître plusieurs fois dans la table TCodPat (une fois par service maximum si j'ai bien saisi), mais par contre il n'est qu'une seule fois dans la table des patients parce qu'on n'a pas envie de stocker 15 fois son nom et sa date de naissance (et s'il y a un changement de nom, ça arrive, comment tu fais, tu dois le changer dans chaque service c'est galère)

    C'est un peu l'idée générale, j'ai pas tout les éléments (je me demande même si le secteur ne devrait pas être également dans cette table TCodPat étant donné qu'un CodPat correspond à un secteur).

    A voir si tu peux retravailler ton modèle de données, ou si tu dois continuer à bricoler des pansements...
    Cela peut prendre du temps à revoir la structure des tables, les requêtes, les formulaires, ...
    Mais pour moi c'est très clair : travailler sur un bon modèle de données c'est du temps gagné par la suite, et moins de galère et de cheveux arrachés.

    Je ne sais pas non plus où en est le projet, est-ce qu'il est en développement auquel cas il faudrait mieux y penser maintenant, ou est-ce que tu fais des modifications sur une base en production auquel cas tu ne peux peut-être pas tout casser...

    Voilà j'ai un peu dévié du sujet original qui était de dupliquer des données avec VBA, mais bon....

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    Vraiment merci Arkham46!

    Je vois beaucoup mieux vers où me diriger! C'est appréciable d'y voir plus clair!!

    Concernant ma clé temporaire, j'ai lu beaucoup de choses et je sais que c'est à éviter mais je ne voyais pas comment faire sans!
    Si une patiente est hospitalisée dans le secteur 4, on ouvre un dossier à son nom "Durand Marilyne" avec un identifiant "400583"!
    2 mois après, elle est hospitalisée dans le secteur 6, on ouvre un dossier à son nom "Durant Marilyne" avec un identifiant "601847"!
    Dans un autre secteur, son prénom se transforme en Marie-Line!
    Je travaille depuis 3 mois sur le nettoyage de toutes les données mises à ma disposition! Très Grand nombre d'erreurs!

    J'ai en tout 75 tables à traiter : 25 tables "Patient" (5*5 secteurs), 25 tables "Activité" et 25 tables "ReponsesAuxItems"
    Sachant que si l'on me demande l'activité de "Durand Marilyne" en 2003, il faut que je connaisse les différents identifiants de cette personne dans les différents secteurs, et donc que son nom, prenom et date de naissance aient été saisis de manière unique (cette étape de nettoyage est aujourd'hui terminée..)

    Pour répondre à une autre de tes questions, je travaille sur une base en production, je dois concevoir une base de données unique la plus "propre" possible afin que des études puissent y être effectuées par la suite!

    Bref, merci pour tes conseils sachant qu'il y a 3 mois, je ne connaissais rien ni à VB, ni à Access et ses requêtes, ce site a été d'une grande aide!!!

    Je vais réfléchir à tout ça et lorsque j'aboutirais à une conception qui me paraît correcte peut-être pourras-tu me dire ce que tu en penses!

    A plus tard

    Céline

  8. #8
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Salut,

    Donc ça semble bien être ce que je pensais :
    Il faudrait une table patient mais avec une seule fois chaque patient, ne pas dupliquer les informations par service, de toute façon les nom/prénom/date sont identiques
    Dans cette table patient tu as en clé primaire (numéro auto par exemple) un identifiant IdPat
    C'est cet identifiant qui sera utilisé dans les autres tables.
    Par exemple :
    - IdPat : 56
    - Nom : Durand
    - Prénom : Marilyne
    - Date de Naissance : 12/10/76

    Ensuite du point de vue de la base de données, tu n'hospitalises pas Durant Marilyne, tu hospitalises 56.

    Et si Maryline est hospitalisée dans un autre service, il doit être possible de sélectionner le patient dans une liste et ne pas resaisir toutes les informations.
    Si le patient n'est pas trouvé dans la liste alors on en crée un nouveau dans la table.

    Une fois que la modélisation est correcte, tu ne devrais plus avoir une seule information en double...
    Essaye de mettre des relations (outils --> relations) ça te permettera d'y voir plus clair dans les liens entre tes tables.
    Et si tu peux faire une impression-écran de cette fenêtre on y verra peut-être aussi plus clair.

    Bon courage.

Discussions similaires

  1. [AC-2010] Positionner sur le premier enregistrement selon critère
    Par patgag78 dans le forum VBA Access
    Réponses: 6
    Dernier message: 25/10/2013, 02h35
  2. [AC-2010] Annuler l'ajout d'enregistrement selon une liste
    Par docjo dans le forum VBA Access
    Réponses: 3
    Dernier message: 20/03/2012, 08h50
  3. [VBA-E] sélection plusieurs lignes selon critères
    Par clairefranclieu dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 06/09/2006, 17h22
  4. [A2-VBA][Débutante] Ajout d'enregistrements
    Par Ericka dans le forum Access
    Réponses: 3
    Dernier message: 10/07/2006, 14h35
  5. Réponses: 6
    Dernier message: 11/10/2004, 15h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo