Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1755 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [ACCESS] navigation de formulaire à formulaire... need help!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ACCESS] navigation de formulaire à formulaire... need help!

n°1585364
La poisse1
Posté le 11-07-2007 à 17:33:59  profilanswer
 

salut a tous!
je travaille sur un projet en Access et je galère encore et toujours (jpcheck en sait quelque chose... ;) )
voila mon soucis:
 
j'ai mes relations, des formulaires, des sous formulaires, parfaitement articulés les uns aux autres... (je me la pète un peu mais ca va pas durer...)
 
mon premier formulaire s'appelle Etablissement. avec l'assistant j'ai créé mon formulaire Etablissement, mon sous formulaire Hopital, et un sous formulaire Service, lié par une relation que voici:
Table Hopital 1--------(inf) Table Service.
 
tout marche bien jusqu'ici: lorsque je change d'hopital dans mon sous formulaire hopital, il change tout seul mon sous formulaire service pour m'afficher ce qu'il faut.
 
 
voila pour l'exposition du contexte.
 
maintenant, j'ai la relation suivante:
Table Service 1--------(inf) Table Salle
 
et j'aimerai, lors d'un appui sur un bouton dans mon sous formulaire Service, que s'affiche uniquement les Salles du service concerné, et non toutes mes salles en vrac...  
 
finalement, je souhaiterai juste créer manuellement la relation que créé l'assistant de création de formulaire...
 
j'espère avoir été clair, sinon je suis dispo pour toutes les questions que vous auriez...  
 
Merci d'avance a ceux qui ont lu j'usqu'ici... :) cest super simpa...


Message édité par La poisse1 le 11-07-2007 à 17:34:58
mood
Publicité
Posté le 11-07-2007 à 17:33:59  profilanswer
 

n°1585421
jpcheck
Pioupiou
Posté le 11-07-2007 à 19:41:18  profilanswer
 

tu reprends le meme raisonnement que celui pour l'établissement, sauf que tu l'appliques à tes services, stou :p

n°1585530
La poisse1
Posté le 12-07-2007 à 09:05:07  profilanswer
 

donc fonction public LectureService(), et appel de la fonction derrière ma zone de texte ou je veux retrouver le nom du service...
 
le soucis c'est que je construis mes Formulaires sur des tables, et je craint qu'il me créé a chaque fois un nouvel enregistrement.  
 
Requête obligatoire pour retrouver mes enregistrements de salle?

n°1585647
tegu
Posté le 12-07-2007 à 11:25:22  profilanswer
 

Je ne comprends pas un truc.
Pour un formulaire lié à une table, qui contient un sous formulaire lui-même lié à une table, normalement, aucun code n'est nécessaire pour que le sous formulaire n'affiche que les informations liées à l'enregistrement en cours.
Les propriétés du controle sous formulaire .LinkMasterFields (champs pères) et .LinkChildFields (champs fils) sont suffisantes.
Je te suppose donc dans un cas particulier.
 
Sinon pour éviter qu'un formulaire ne propose d'ajouter des enregistrements, tu peux mettre False dans la propriété .AllowAdditions (ajout autorisé) de ton formulaire.

n°1585710
La poisse1
Posté le 12-07-2007 à 12:21:41  profilanswer
 

en fait j'ai commencé par créer avec l'assistant un formulaire, et deux sous formulaires. et j'aimerai partir de l'un de ces sous formulaires pour afficher un autre formulaire. si je passe par un bouton, l'assistant me propose la procédure d'ouverture de formulaire toute faite. mais il me renvoi sur tous mes enregistrements, et non sur les enregistrements spécifiquement liés au sous formulaire contenant le bouton...  
 
le lien entre ces deux tables est très basique, et je pense que l'assistant d'Access a une solution toute faite, mais je ne trouve pas... et pourtant j'éssaie...

n°1585713
La poisse1
Posté le 12-07-2007 à 12:25:01  profilanswer
 

alors... comme je galère depuis un bout de temps la dessus (environ 1mois sur les deux disponibles)  
 
j'ai employé la methode "bourrin"  
 
avec l'assistant j'ai créé un formulaire, et un formulaire attaché. ensuite, je suis parti sur VBA et j'ai copié le bloc d'instructions.  
 
quelles sont les instructions que je dois reprendre et adapter pour que ca marche?
 
 
Sub Form_Current()
On Error GoTo Form_Current_Err
 
    If ChildFormIsOpen() Then FilterChildForm
 
Form_Current_Exit:
    Exit Sub
 
Form_Current_Err:
    MsgBox Error$
    Resume Form_Current_Exit
 
End Sub
Sub LienBascule_Click()
On Error GoTo LienBascule_Click_Err
 
    If ChildFormIsOpen() Then
        CloseChildForm
    Else
        OpenChildForm
        FilterChildForm
    End If
 
LienBascule_Click_Exit:
    Exit Sub
 
LienBascule_Click_Err:
    MsgBox Error$
    Resume LienBascule_Click_Exit
 
End Sub
Private Sub FilterChildForm()
 
    If Me.NewRecord Then
        Forms![Tbl_E2_Installation_Appareil].DataEntry = True
    Else
        Forms![Princ_Appareil_Tbl_E2_Installation_Appareil].Filter = "[NumSalle] = " & Me![NumSalle]
        Forms![Princ_Appareil_Tbl_E2_Installation_Appareil].FilterOn = True
    End If
 
End Sub
Private Sub OpenChildForm()
 
    DoCmd.OpenForm "Princ_Appareil_Tbl_E2_Installation_Appareil"
    If Not Me![LienBascule] Then Me![LienBascule] = True
 
End Sub
Private Sub CloseChildForm()
 
    DoCmd.Close acForm, "Princ_Appareil_Tbl_E2_Installation_Appareil"
    If Me![LienBascule] Then Me![LienBascule] = False
 
End Sub
Private Function ChildFormIsOpen()
 
    ChildFormIsOpen = (SysCmd(acSysCmdGetObjectState, acForm, "Princ_Appareil_Tbl_E2_Installation_Appareil" ) And acObjStateOpen) <> False
 
End Function
 
 

n°1585757
tegu
Posté le 12-07-2007 à 13:33:20  profilanswer
 

Vu les relations entre tes tables je ne comprends pas pourquoi tu ne fais pas simplement un sous sous formulaire pour gérer automatiquement tes salles.
Le formulaire Hopital contient un sous formulaire Services qui contient lui-même un sous formulaire Salles.
Ça ne te conviendrait pas ?
 
Si le problème est lié au fait que tu ne veux pas que ça s'affiche automatiquement mais seulement sur le clic du bouton alors il suffit de changer la source de donnée (.RecordSource) de ton formulaire des salles au moment de son ouverture.
Cette source ne doit pas être obligatoirement une table ; ça peut être une requete Access qui, en l'occurrence, filtrerait sur le service.

n°1585765
La poisse1
Posté le 12-07-2007 à 13:49:01  profilanswer
 

en fait je viens de trouver la solution avec l'assistant.
et au final je pense qu'il gère les choses comme tu viens de le décrire:
 
la procédure que j'ai suivi:
 
Form Etablissement
SSForm Hopital
SSForm Service
 
Form Service Bis
SSForm Salle
SSform Equipements de sécurité de la salle
 
j'ai posé un bouton dans SSForm Service, avec une procédure d'ouverture de Form Service Bis.
ensuite, je coche l'option choisir les enregistrements a afficher, et je fait une équivalence NomService <->NomService
du coup, il filtre les salles a partir du nom du Service.  
 
 
c'etait simple, je vous l'accorde, je suis navré si je vous ai enervé... (je suis autodidacte en ACCESS, c'est pour ca que ca prend autant de temps pour les trucs banaux...)
 

n°1596540
La poisse1
Posté le 07-08-2007 à 10:47:10  profilanswer
 

salut!  
 
je relis en ce moment tout mes posts, et j'ai manifestement manqué de correction vis à vis des solutions que tu me proposais...  
 
effectivement, le plus simple pour moi serait, pour réaliser ce dont j'ai besoin, d'articuler mes formulaire dans une arborescence du type Formulaire-->sous Formulaire-->sous-sousFormulaire, filtré a chaque fois... mais access ne me créé automatiquement que l'arborescence Formulaire-->Sous Formulaire1 et Sous Formulaire2. par conséquent, je m'étais mis en tete de filtrer sous formulaire2 en fonction de sous formulaire1... chose faite automatiquement, maintenant que mes relations sont proprement écrites...
 
le problème intervient lorsque je fais un nouveau formulaire "principal" comportant de nouveaux sous formulaires 1 et 2: en effet, lorsque j'éssaie de filtrer les valeurs de mon nouveau formulaire principal à l'aide de mon sous formulaire 2 précédent, il perd le lien! en raisonnant par l'exemple la compréhension est plus aisée:
 
j'ai deux établissements: CHL, CHEM.  
dans ces deux etablissements j'ai plusieurs hopitaux ou sites: CHL-HM, CHL-CE, CHL-EM, CHEM-A, CHEM-B, CHEM-C
dans ces hopitaux j'ai toujours les memes services (c'est la que ca se complique...): Radiologie, pediatrie, pneumologie, chirurgie...
ensuite, dans ces services j'ai des salles (encore plus compliqué...): salle1, salle2, salle C1, C3... qui pose des problèmes de redondance...
 
ensuite j'ai mes formulaires:
Form_Etablissement, SSForm_Hopitaux, SSForm_Service. les relations de établissement jusqu'a service ca va...  
mais j'ai ensuite:
Form_rappel_Service, SSForm_Salle. et là, alors que j'ai bien mis champ père et champ fils entre SSForm_Service et Form_Rappel_Service, le filtre ne fonctionne plus: il m'affiche tous les enregistrements portant, par exemple, le nom chirurgie... alors que j'aurai voulu uniquement le service chirurgie de l'hopital considéré au début...  
 
c'est pourquoi il faut que j'arrive a filtrer, a mon avis, avec deux paramètres. cela devrait etre possible a partir de VBA, mais je cherche encore la facon d'écrire le stlink criteria qui va bien dans ma procédure d'ouverture de formulaire...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [ACCESS] navigation de formulaire à formulaire... need help!

 

Sujets relatifs
Aide pour un formulaire[Access] Update sur clés primaires
ACCESS[Access VB] Comment crééer un menu avec access 2007 ?!
[Access] Rajouter menu dans barre de menuutiliser les enregistrements d'une table Access en VBA
HELP!Envoi de formulaire PHP
[Sharepoint] Customiser la navigation[Access] Mettre une valeur dans une zone de texte venant d'une table ?
Plus de sujets relatifs à : [ACCESS] navigation de formulaire à formulaire... need help!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR