|
|
|
| [Access] affich planning ss forme de tableau par zenon |
mercredi 10 mai 2006 à 17:51:54 |
|
Bonjour,
un formulaire type tableau constitué d'une requête modifiable par VBA est tout indiqué ! Voici une suggestion ! Créer un formulaire à l'aide de l'assistant de type tableau qui pointe sur une requête global de la table. Paramètrer au besoin la requête pour obtenir le visuel des champs sur tous les enregistrements. Paramètrer celle-ci pour ne pointé que sur un critère de recherche qui formerait un groupe basé sur les priorités d'affichage. Une fois le résultat tableau souhaité, voici le code VBA pour modifier cette requête : Private Sub Liste_Catégorie_AfterUpdate() Dim Chaine As String ' Variable de la chaine de caractères Dim Critere As String ' Variable contenant la string "SQL" Dim Indice As String ' Variable du critère de recherche ' Affectation dans variable Indice = Forms![Formulaire Tableau].[MaListeDeroulante] ' Création d'une chaine de caractères Chaine = "Select * from [MaTable] where [MonChamp] = " ' Création de la string "SQL" Critere = Chaine & """" & Indice & """" ' Appel fonction et changement de la requête If (ChangeRequeteDef("RequeteSpecifique", Critere)) Then ' Si réussite, ouvrir formulaire tableau DoCmd.OpenForm "Formulaire_Tableau", acNormal, "", "[ChampsDeLaRequêteEnRecherche]", , acNormal End If End Sub ' Et la fonction Public Function ChangeRequeteDef( _ ChaineRequete As String, ChaineSQL As String) As Boolean Dim Definition As QueryDef If ((ChaineRequete = "") Or (ChaineSQL = "")) Then ChangeRequeteDef = False Else Set Definition = CurrentDb.QueryDefs(ChaineRequete) Definition.SQL = ChaineSQL Definition.Close RefreshDatabaseWindow ChangeRequeteDef = True End If End Function </code> cela te convient-il ? Lupin |
Merci pour ta réponse.
Mon problème est surtout que je ne vois pas comment construire le tableau et surtout comment lui faire afficher les lignes vides. J'ai une table qui liste les jours et heure de début de réservation ainsi que la durée mais aucune donnée ne pointe vers les périodes libres... En y réfléchissant, je pense que c'est là le problème... Je vais essayer en créant une nouvelle table pour commencer. |
|
re:
si tu veux mon avis, une requête est mille fois mieux qu'une nouvelle table ssi les données sont déjà présentes dans la(les) table(s) existante(s). Quand au problème de donnée vide, je ne vois pas de problème puisque le formulaire affiche ce qui est paramètré dans les requêtes, ce sont les objets ( contenants de donnée ) qui sont sur le formulaire. L'encapsulation des données nous permets d'apercevoir une structure naturel qui oriente la méthodologie du travail, c'est de la grande théorie, mais très importante. En supposant que toutes l'information est déjà présente. Utilise un formulaire pour piloter la fabrication. Postulat : Un formulaire pointe toujours sur une requête SQL qui elle pointe sur une table ou une requête SQL. Si j'ai bien compris tu désire un évènement client pour visualiser "le calendrier des activités en cours", terrain libre ou pas. Délimite dans le formulaire un "calendrier", comme un tic-tac-toe mais en plus grand selon tes besoins, conserve un espace "bouton", un espace "libellé", etc... Ensuite, pour chaque case, établie une mini-requête. Étudie bien cette rêquête de façon à ne changer qu'une seule variable et parcourrir ainsi toutes les cases du "calendrier", pour commencer de simple text box agrandi fera l'affaire, si tu est à l'aise avec la manipulation d'un objet "grid" il y a pleins de références supplémentaires que tu peux charger. Ensuite sur un évènement bouton tu contruit une petite routine du style :
Private Sub Liste_Catégorie_AfterUpdate()
Dim Chaine As String ' Variable de la chaine de caractères
Dim Critere As String ' Variable contenant la string "SQL"
Dim Indice As String ' Variable du critère de recherche
Dim Boucle As Long
Indice = Forms![Formulaire Tableau].[MaListeDeroulante]
' Création d'une chaine de caractères
Chaine = "Select * from [MaTable] where [MonChamp] = "
' Création de la string "SQL"
Critere = Chaine & """" & Indice & """"
For Boucle = 1 to 16
' Appel fonction et changement de la requête
If (ChangeRequeteDef("RequeteSpecifique" & Boucle, Critere)) Then
' Si réussite, ouvrir formulaire tableau
' ici, je crois qu'un simple refresh du formulaire fera l'affaire,
' à la fin du balayage de chaque requête si tu n'as pu l'adapter.
' Si Resultat <> Vide Alors
' CetteTextBox.Value = Enregistrementdelarequête.Champ
' Sinon
' CetteTextBox.Value = ""
' Fin Si
End If
Next Boucle
Me.Refresh
End Sub
'Pas tester !
attention, je ne prétends pas que c'est la meilleur, c'est une suggestion ! Lupin |
Désolé de tarder à te répondre, j'ai été (je suis) débordé de boulot
Je vois l'idée, reste à trouver le temps de la mettre en oeuvre... merci pour ton aide! |
Salut
J'essaye de réaliser un planning, moi aussi mais je ne comprends pas très bien comment attribuer une mini-requête à un contrôle Faut dire que je voudrais construire les lignes de mon calendrier avec les données d'une table (les noms des personnes concernées) et en face, les informations qui leur correspondent pour chaque jour (une autre table liée) si access m'autorisait des sousformulaires en mode continue ce serait déjà fini... mais ce n'est pas le cas... merci de m'éclairer. |
Bonjour,
Procédons par étape ! 1.) Créer une simple requête avec 1 critère ex.: Posons une simple table avec 3 champs. Nom Prénom Téléphone supposons que je crée une requête pour trouver le nom de "Lupin" ça donnera quelque chose comme : SELECT tab_Liste.*, tab_Liste.Nom FROM tab_Liste WHERE (((tab_Liste.Nom)="Lupin")); donc, ici nous voulons pouvoir modifier la requête par l'évènement d'un contrôle, alors on place un contrôle sur un formulaire par exemple une liste déroulante qui pointera sur un autre requête. cette liste déroulante doit avoir la liste de tous les noms de la table, donc la source sera une requete du genre : SELECT tab_Liste.Nom FROM tab_Liste; maintenant, sur l'évènement [ Après mise è jour ], tu lance le générateur de code :
Private Sub ListeDeNoms_AfterUpdate()
Dim Chaine As String
Dim Critere As String
Dim varAcronyme As String
If (Forms![frm_Liste].[ListeDeNoms] <> "") Then
' Ici, il faut reconstruire le requête avec la valeur
' du contrôle
'SELECT tab_Liste.*, tab_Liste.Nom
'FROM tab_Liste
'WHERE (((tab_Liste.Nom)="Lupin"));
varAcronyme = Forms![frm_Liste].[ListeDeNoms]
Chaine = "Select tab_Liste.*,tab_Liste.Nom from [tab_Liste] where (((tab_Liste.Nom)="
Critere = Chaine & """" & varAcronyme & """"
' Et ici on utilise une petite fonction pour modifier la requête
If (ChangeRequeteDef("req_Liste", Critere)) Then
DoCmd.OpenForm "frm_Liste", acNormal, "", "[ListeDeNoms]", , acNormal
End If
End If
End Sub
et voici la fonction qui modifie la requête : Public Function ChangeRequeteDef(ChaineRequete As String, ChaineSQL As String) As Boolean Dim Definition As Variant If ((ChaineRequete = "") Or (ChaineSQL = "")) Then ChangeRequeteDef = False Else Set Definition = CurrentDb.QueryDefs(ChaineRequete) Definition.SQL = ChaineSQL Definition.Close RefreshDatabaseWindow ChangeRequeteDef = True End If End Function bon, je sais que ça ne semble pas évident mais ça fonctionne très bien. @+ Lupin |
Bon, ya plus qu'à essayer...
Merci |
HELP
j'ai besoin d' aide pour crée un emplois du temps pour mes agents ou il y aurait une recap des taches et le temps de la tache le jour et une fiche induviduel qui soit relié a cette a cette recap comment faire merciiii beaucoup |
Salut
je cherche une solution pour afficher mes données sous forme de planning. comme un diagramme de Gantt. sous access bien sur. existe-il un Activix pour cela? peut on le télécharger? Merci pour le coup de pousse j'ai bien sur tester les requette croisée dinamique. mais dans un état c'est plus du tout dinamique... Mitch |
Salut,
je ne puis que vous apporter une solution VBA sous access, lorsque j'ai entamé ce dernier j'ai sauté directement des "macros access" au "macros vba". J'ai apprit avec le bouquin : Beginning Access 97 VBA Programming ( Robert Smith and David Sussman ) Pour créer votre état vous devez avoir la structure : TABLE(S) <- Requête(s) <- Formulaire(s) <- État(s) Je ne connais pas Gantt, plus de détails serait souhaité ! Avez-vous 1,2, ... ou plus de table(s) ? Avez-vous 1,2, ... ou plus de requête(s) ? Avez-vous 1,2 , ... ou plus de formulaire(s) ? Avez-vous 1,2, ... ou plus de lien(s) ? Un activeX ? Tout se fait sous VBA ! Lupin |
salut
j avais dans le temps composé un tableau avec une gestion de rdv, etiquettes etc.. j ai resolu le pb des jours (ce que tu cherches) encréant 1 sub contenant une fonction backcolor rouge ou vert. ce sub etait avait comme critère une variable. chaque case du planning avait sa variable distincte pour selectionner au jour par jour et en modifier la couleur puis une raz (tout én vert) par un do while par contre, si tu veux ajouter 1 nom dans tes cases, il te faut passer par une requete ajout qui acceptes tres bien les variables. bonne suite |
Salut Ego, salut Lupin.A
pour vos réponse, Je peu me débrouillée pour avoir toute les données sur une seule table. (ça j'en fait mon affaire.) pour la suit il me faut imprimer le tableau suivant : sur la colonne de gauche : des taches à réaliser. sur le première ligne : des dates. à l’intersection des lignes et des colonnes : des noms de une ou plusieurs personnes. il faut bien sur que le nombre de ligne soit variable. et que le nombre de date soit variable (aussi). ce qu'il faut c'est pouvoir le sortir sur un état. PS : une date : une ou plusieurs actions une action : une ou plusieurs personnes et bien sur une personne sur plusieurs date et sur plusieurs action PS le bonjour aux Briguades du T. |
Salut Ego, salut Lupin.A
Merci pour vos réponses, .... il manquais un mot |
Bonjour,
Alors voici comment je procéderais, notez qu'il y en a d'autres ! Je recommande de travailler avec des mots sans accens ! Les informations en main : Creation d'un agenda Donc des evenements ayants des proprietes Evenement / Heure debut Evenement / Heure fin Evenement / Date Evenement / Lieu Evenement / Contacts Creation d'une table TabEvenements Creation d'une requete globale, d'une retuete annuel, d'une requete mensuel, d'une requete hebdomadaire, d'une requete quotidienne, d'une requete pour une heure et une pour 1 evenements RqsGlobale RqsAnnuel RqsMensuel RqsHebdo RqsJour RqsHeure RqsEvenement Creation d'un formulaire qui servira de previsualisation a l'etet et la modofication des parametres de tri. Creation des etats souhaites EtsAnnuel EtsMensuel EtsHebdo EtsJour EtsHeure EtsEvenement Si cette structure est appliqué, ensuite il ne s'agit que d'attacher les objets ensembles pour modifier les requêtes de base créé au départ. Sur le formulaire, on insere quelques contrôles pour effectuer la sélection, exemple un controle qui selectionne la requete et un controle qui selectionne le groupe d'evenement(s). Est-ce assez clair ? Lupin |
re:
ah oui, au cas ou ! Le formulaire pointe sur la requete globale qui pointe sur la table, souviens toi de la structure. TAB-REQ-FOR-ETA lUPIN |
Merci lupin,
j'ai créé la table agenda et la table TabEvenements et un table personne et il est facile de crée un requête pour afficher un état du style : Jour_1 Action_1 Pierre Action_2 Paul Jour_2 Action_1 Pierre Action_3 Paul Jour_3 Action_3 Paul Action_4 Jaque mais c'est pas très convivial. Le Défit c'est d'afficher: ************************************* * Jour_1 Jour_2 Jour_3 * * Action_1 Pierre Pierre * * Action_2 Paul * * Action_3 Paul Paul * * Action_4 Jaque * ************************************ et il faut que le nombre d'action et de jour soit variable il faut pouvoir imprimer l'état sans avoir à le retoucher (modifier) la subtilité du problème n'est pas dans la récupération des données, mais dans dans la mise en forme et le dynamisme de l'affichage..... |
Pour la mise en page, c'est plustôt ça:
___________ Jour_1__________Jour_2_____________Jour_3 Action_1___ Pierre___________ Pierre ___________________ Action_2____Paul _____________________________________ Action_3 ____________________ Paul______________ Paul___ Action_4______________________________________ Jaque _ |
Re:
1. Créé une requéte type pour un état souhaité ! 2. Créé un premier modèle type d'un état souhaité ! 3. Créé les requêtes/tables de l'état en dynamique avec VBA C'est exactement comme l'exemple du début de ce fil, plutôt que de créer 300 requétes, une suffit puisqu'elle est modifié de façon dynamique :-) Avant de pouvoir la modifier j'ai du la créé en manuel une première fois. Présentement, dans ton exemple : ___________ Jour_1__________Jour_2_____________Jour_3 Action_1___ Pierre___________ Pierre ___________________ Action_2____Paul _____________________________________ Action_3 ____________________ Paul______________ Paul___ Action_4______________________________________ Jaque _ je vois 3 objets : Jour(x) Action(y) Personne(z) structuré ainsi : Personne / Jour Personne / Action ( Personne / Évènement ) Alors je procederais comme suit en créant un état avec genre plein de cellule. À partir d'un formulaire, créer une table et une requête dynamique pour produire l'état souhaité. Vois-tu un peu plus ou je veux en venir ? Lupin |
| 01/10 17h50 | ACCESS!!!afficher tables ds formulaire | Programmation | 05/03 14h48 | 9 |
| 16/11 21h51 | [ACCESS] pb ss-formulaire "image" | Programmation | 17/11 15h13 | 2 |
| 22/08 09h56 | [Access] & [VBA] formulaire et ss-formulaire | Programmation | 22/08 09h56 | 0 |
| 13/03 13h55 | [VBA]importer texte (.lvm) ss forme BD access | Etudes/Formation | 13/03 13h55 | 0 |