access. mise à jour dans un formulaire

access. mise à jour dans un formulaire - SQL/NoSQL - Programmation

Marsh Posté le 15-02-2005 à 12:55:41    

J'ai fais une base de données gérant des ordinateurs pour une entreprise. BDD sous access avec impression des état et une présentation dans un formulaire.  
lorsque je choisis une salle (à laquelle appartient l'ordinateur) je veux que la liste de choix des étages et celle des batiments se remplisse toute seule. J'ai donc fais une table contenant toute les informations (disons que je ne suis pas regardant sur le nombre de redondance  )  
Je n'arrive pas à trouver la requete SQL qui permettrait de remplir ces champs automatiquement (quand je choisis la salle).  
 
Et est il possible de faire (en plus) que lorsque je choisis un étage, on ne m'autorise que les salle appartenant à cet étage (tout batiment confondu). Je sais que cela est possible mais je suis de nouveau coincé par le fait que quand je choisis l'étage, la liste de choix des salles ne se met pas automatiquement à jour.  
 
merci d'avance pour votre aide

Reply

Marsh Posté le 15-02-2005 à 12:55:41   

Reply

Marsh Posté le 15-02-2005 à 13:44:57    

Pour qu'elle se mette à jour, il faut la mettre à jour manuellement. Donc dans l'événement AfterUpdate de ta première liste, tu appelle la méthode requery() sur ta deuxième liste.

Reply

Marsh Posté le 15-02-2005 à 19:54:08    

exactement...
 
requery et dans certain cas refresh...

Reply

Marsh Posté le 16-02-2005 à 09:15:33    

si j'ai bien compris, dans les propriétés de la zone de liste, j'appelle la méthode requery(). Et ce dans le champs "sur changement". C'est à dire que la fonction sera invoquée après que j'ai choisi un élément dans la liste de choix. C'est bien ça?
requery() relance la requete que l'on veut je crois mais il faut que je fasse une macro derriere? car il me dit que la macro "requery" n'existe pas.

Reply

Marsh Posté le 16-02-2005 à 09:31:21    

Oula, laisse tomber les vieilles macros d'il y a 10 ans
 
C'est du VBA ;)
 
Donc dans l'évènement sur changemet, tu met une procédure évenementielle, dans laquelle tu appelle le requery sur l'autre liste. Donc, si l'autre liste s'appelle par exemple CboChoixEtage et la première CboChoixSalle, ça donnera ça

Code :
  1. Public Sub CboChoixSalle_AfterUpdate()
  2.   Me!CboChoixEtage.Requery()
  3. End Sub


Message édité par FlorentG le 16-02-2005 à 09:31:32
Reply

Marsh Posté le 16-02-2005 à 15:43:26    

le "Me!CboChoixEtage.Requery()" consiste à appeler la requete attribuée à l'autre liste. Ca c'est ok.
Mais (désolé d'être vraiment stupide), ma requete sélectionnant des éléments de "CboChoixEtage" doit fonctionner en fonction du choix de la liste "CboChoixSalle". (le B.A.BA d'une requéte SQL en fait).
voici la requete:  

Code :
  1. SELECT [matable].[N°auto], [matable].[N°salle]
  2. FROM matable
  3. WHERE [matable].[N°salle]=XXXXXXX;


XXXXXX est la valeur sélectionnée dans la première liste de choix.
Quelle est la syntaxe à utiliser? le nom de la 1ere liste de choix du formulaire?
Cest surement tout bete mais je vois pas, ou alors je me plante complétement...

Reply

Marsh Posté le 16-02-2005 à 17:11:07    

Dans la requête, à la place des XXXXX tu peux mettre  

Forms![NomDeTonFormulaire]![CboChoixSalle]

Reply

Marsh Posté le 16-02-2005 à 19:29:53    

Je te remercie d'abord pour ton aide très précieuse.
 
Ca fonctionne presque, bon, il y a le presque qui m'ennuie un peu, quand je choisis mon N° de salle, il me met une erreur de syntaxe dans VBA pour "Me![N°etage].Requery()". Je dois me tromper de nom pour la liste, j'ai essayer de mettre "modifiable135" qui est le nom de l'élément liste mais ça ne change rien. Mais sinon ça à l'air de marcher, il ne me laisse choisir que l'étage correspondant au N° de la salle.
 
A quoi correspond le "Me"?

Reply

Marsh Posté le 17-02-2005 à 00:05:33    

Je pense que le caractère '°' dans un nom de champs ne doit pas lui plaire, non ?

Reply

Marsh Posté le 17-02-2005 à 00:06:10    

Le Me, c'est le Form en cours. J'aime bien mettre Me partout, même si c'est facultatif. Au moins on sait d'où sort la variable à laquelle on fait référence :)

Reply

Marsh Posté le 17-02-2005 à 00:06:10   

Reply

Marsh Posté le 09-06-2005 à 10:21:41    

Slt !
 
J'avais le même soucis et j'ai pu m'en sortir grâce à ces explications!
Par contre, je souhaite mettre le résultat dans une zone de texte et non
pas dans uns liste!!! Ca fonctionne bien dans une liste, mais impossible
de faire la même chose dans une zone de texte!!!!!
 
Ca doit être une connerie, ou alors un autre objet à utiliser, mais je ne vois pas..

Reply

Marsh Posté le 09-06-2005 à 10:55:18    

Bon, c'était vraiment pas évident à trouver !!!
http://access.developpez.com/faq/?page=TAZdt#RenvVal

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed