[résolu][VBA][Access] Form et boutons en fonction d'une requête

Form et boutons en fonction d'une requête [résolu][VBA][Access] - VB/VBA/VBS - Programmation

Marsh Posté le 21-01-2005 à 15:01:05    

Bonjour tout le monde,
 
Voici mon problème :  
 
J'ai deux tables dans Access et je voudrais réaliser un formulaire basé sur une requête sur ces deux tables. Ma première table stocke le chemin d'une image, le chemin d'un fichier batch et un nom. La deuxième est reliée à la première et correspond à une classification de ma première table.
Je fais ma requête sans problème, je pense avoir accès aux données sans trop de soucis. Mais le formulaire est construit sur les données de la table.
Je m'explique, je voudrais construire "dynamiquement" des boutons ayant l'image de fond correspondant à l'image renseignée dans la table, et executant sur clic un fichier batch dont le chemin estdans la requête. Le nombre de ces boutons peut être variable puisqu'il découle d'une requête.
Le formulaire affichera soit dix boutons par dix boutons, ou tous les boutons dans un formulaire avec scrollbar. Ce problème est annexe et je pense pouvoir le gérer.
Ce que je n'arrive pas à réaliser c'est d'attribuer une macro à un bouton par VBA. Comment dois-je m'y prendre ? Dois-je contruire un formulaire avec dix boutons et modifier les propriétés de ces boutons ou dois-je les créer dynamiquement et entièrement ?
 
Comment faire ? et quelle est la manière pour attribuer une macro à un bouton via VBA ?
La macro à affecter est du genre de celle-ci:

Code :
  1. RetVal = Shell("C:\essai.bat", 1)


 
Merci de vos réponses   :jap:


Message édité par Manu la Science le 10-02-2005 à 11:02:29

---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 21-01-2005 à 15:01:05   

Reply

Marsh Posté le 22-01-2005 à 11:22:27    

Il existe un autre moyen dans mon cas, au lieu de créer des boutons de commande, je peux faire des images avec des hyperliens. Mais lorsque je clique sur l'image, l'hyperlien marche mais demande une confirmation d'ouverture du fichier batch cible.
Je souhaiterai ne pas avoir ce genre d'avertissement.
 
Quelle est la manière la plus simple à mettre en oeuvre ? Les boutons commandes avec leur macro ou les images avec les liens hypertextes ?
 
Merci de vos réponses.


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 24-01-2005 à 10:08:09    

Quelqu'un connaît il la réponse à mes questions ?
 
J'aimerai construire cette appli de manière à ce que l'administrateur de l'appli (ne connaissant pas franchement Access) puisse ajouter sans peine de nouveaux liens vers les fichiers batch dans la base de données et que le formulaire se cronstruise tout seul (enfin, par exécution de code).
Je voudrais éviter que cette personne ne soit obligée de rajouter des boutons commandes et qu'elle les programme.
 
Est-ce possible et non utopique  :heink:  ou est-ce que je rêve les yeux ouverts devant mon ordi ?  :sleep:  
 
 :bounce:


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 24-01-2005 à 17:28:35    

Une piste :
 
Dans la zone "Détail" de ton formulaire Access, tu place un bouton, et un champ texte contenant le résultat de ta requête. Dans le code lié au bouton, tu peux faire un Shell([MonChampsTexte], 1). En execution, Access génèrera autant de lignes de détail que ta requête source en retournera.
 
A creuser pour voir si c'est bien ce que tu veux faire...

Reply

Marsh Posté le 24-01-2005 à 18:17:05    

-Farenheit- a écrit :

Une piste :
 
Dans la zone "Détail" de ton formulaire Access, tu place un bouton, et un champ texte contenant le résultat de ta requête. Dans le code lié au bouton, tu peux faire un Shell([MonChampsTexte], 1). En execution, Access génèrera autant de lignes de détail que ta requête source en retournera.
 
A creuser pour voir si c'est bien ce que tu veux faire...


 
Génial, super ton idée. Je te remercie vraiment. J'ai commencé à l'adapter à ce que je veux, il faut que je peaufine mais c'est exactement ce que je cherche, en plus avec très peu de code.
 
Vraiment, encore merci. Je me demande pourquoi je n'y ai pas pensé, je cherche toujours à compliquer...
 
Je ne sais pas si tu connais le logiciel DAEMON. Je vais coupler Access et DAEMON pour pouvoir lancer des CD virtuels d'un serveur depuis un client. Cela évite d'avoir un chargeur ou une tour de CD.
 
Encore Merci  :jap:   :jap:   :jap:   :hello:


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 24-01-2005 à 21:18:22    

C'est encore moi...
 
Je souhaite maintenant mettre une image dont le chemin est donné dans ma requête. Comment donner le chemin source au cadre d'emplacement de l'image ?
Pour le bouton commande, c'est plus facile car le chemin du fichier batch est donné et l'action se déroule bien après ouverture du formulaire tandis que pour l'image, cela doit se faire à l'apparition du formulaire.
Comment faire apparaître une image dans un formulaire dont le chemin est issue d'une requête ?


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 25-01-2005 à 10:03:05    


Pour faire ce genre de choses, je mettrais ça dans l'evennement On_Load du formulaire. A ce môment tu doit pouvoir récupérer les données de ta requête, et modifier la propriété Picture de tes composants.
 
 :hello:

Reply

Marsh Posté le 25-01-2005 à 10:28:22    

J'ai cherché partout et je ne sais pas comment changer la source d'une image.
J'ai essayé avec ça mais sans succès:

Code :
  1. Private Sub CD_sous_formulaire_On_Load()
  2. Me.image.Source = Me.Chemin_Image
  3. End Sub


Mais je pense que "Source" n'est pas bon. Je ne trouve pas la propriété à changer et je pense qu'il faut rafraîchir le formulaire...
image est le nom de mon image à charger et Chemin_image le champ de ma requête où est stocké le chemin de l'image.


Message édité par Manu la Science le 25-01-2005 à 10:30:18

---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 25-01-2005 à 17:17:55    

D'après l'aide d'access, j'aurais attaqué la propriété Picture :

Code :
  1. image.Picture = "C:\Windows\Winlogo.bmp"


 
Mais j'avoue, j'ai pas fais le test ;)
 

Reply

Marsh Posté le 25-01-2005 à 18:14:55    

Voilà où j'en suis :
 
Je progresse car je peux changer l'image Mais je change toutes les images.
J'ai mis ce code :

Code :
  1. Private Sub Form_Load()
  2. Me.image.Picture = Me.Chemin_Image
  3. End Sub


Seulement toutes les images sont les mêmes sauf quand je passe d'un enregistrement à un autre.
 
Comment faire pour programmer le chargement du Détail dans mon formulaire car pour l'instant ce n'est que le chargement du formulaire entier qui est programmé?
 
J'ai pris la construction de formulaire continu et je vois tous les enregistrements les uns après les autres.
Je ne vois aucune programmation possible de Détail d'un formulaire autre que "sur clic", "sur double-clic", "sur souris appuyée", "sur souris déplacée" et "sur souris relâchée".
 
PS: image.picture marche sans refresh, merci encore... :jap:


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 25-01-2005 à 18:14:55   

Reply

Marsh Posté le 26-01-2005 à 22:44:30    

Comment "dire" à Acces que pour chaque enregistrement affiché, il doit changer la source d'un cadre image en réalisant ceci : "Me.image.Picture = Me.Chemin_Image" ?
Comment programmer la section Détail du formulaire pour qu'au chargement du formulaire les images soient différentes et non toutes identiques à l'image du premier enregistrement ?
Comment lui "dire" de prendre la source du premier cadre image et mettre la valeur de Chemin_Image de ce premier enregistrement et de faire la même chose pour chaque enregistrement ?
J'ai essayé des trucs avec "For Each Item in Détail" mais sans grand succès...
 :bounce:


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 27-01-2005 à 15:39:15    

Arf, perso je n'ai jamais réussi... Dés que tu est deconnecté de ta requête source, toutes les données sont communes à chaque ligne de détail (libellé des boutons, champs calculés...)
 
Reste la possibilité de mettre un sous-formulaire dans chaque ligne de détail, mais je ne suis pas certain que Access l'accepte. Et de toute façon ça revient à monter une uzine à gaz :/

Reply

Marsh Posté le 27-01-2005 à 15:56:32    

J'attendais avec impatience ton post mais je fus déçu par celui-ci car tu n'as pas de solution... Dommage. Je viens de penser à quelque chose...
Peut-on stocker des images dans Access et les faire "ressortir" dans un formulaire de "consultation" des enregistrements ?
Ne serait-ce pas une solution plausible ? Je ne stockerai qu'une petite centaine d'images au maximum (jpeg).
 
Merci de ton intérêt  :jap: , Farenheit et du "réchauffement de cerveau" dû à mon problème  ;) .


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 27-01-2005 à 17:49:08    

Hélas non, je n'ais pas réponse à tout  :p  
 
Pour ce qui est de charger des images dans une base access, cela m'étonnerais qu'il soit capable de gérer des blobs.
 
Je ne peux pas t'en dire plus, mon experience sur Access se résume à 6 mois de stage, et je n'y ais pas retouché depuis.
 
A+
 
 :hello:

Reply

Marsh Posté le 27-01-2005 à 17:56:42    

J'ai essayé, je peux insérer des images dans la base Access sans problème, la visualisation dans le formulaire de "consultation" montre bien les images sans problème.
Maintenant, il me reste à modifier le formulaire et sous formulaire pour qu'ils servent qu'à une consultation et non une insertion de données.
Je serai heureux d'avoir des idées sur la manière de procéder. Je fais bien sûr une recherche de mon côté.
 
PS: pour ma part, c'est mon premier "projet" sur Access, alors toute expérience, même de six mois, est la bienvenue.
 
Merci à toi Farenheit.  :jap:


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 10-02-2005 à 11:02:05    

Salut à tous,
 
J'ai pu finir mon projet sans problème après une petite interruption.
 
Je tiens à remercier tous ceux qui m'ont aidé.
 
 :jap:   :jap:   :jap:  


---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 03-05-2005 à 15:46:20    

J'aimerai comprendrela solution :(


---------------
Legends Never Die
Reply

Sujets relatifs:

Leave a Replay

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