Création basede données access: problèmes!

soleilanna -  
technique1322 Messages postés 5 Statut Membre -
Bonjour à tous,

je construit actuellement une base de données Access (sous access 97).
Ma base regroupe des individus caractérisés par pleins de critères (par exemple couleur des yeux, taille...). J'aimerais qu'access me sélectionne les ind dont les critères correspondent au choix que je lui aurais indiqué par le biais de cases à cocher.
Lors de la création d'une telle case, je ne peux cependant pas choisir la table contenant la liste de mes valeurs (access rappelle automatiquement la table qui a servi à créer le formulaire!) = premier hic!
deuxième hic, j'aimerais non seulement qu'il me trouve les ind qui correspondent aux critères, mais qu'il me les stocke dans une table.
En fait j'ai l'impression qu'il faudrait que je coche les 3 options proposées avec le bouton "Zone de liste déroulante " de la boite à outils.

Avez-vous une idée sur la façon de procédé?!
un grand merci à vous!

soleilanna
A voir également:

20 réponses

zenon Messages postés 729 Statut Membre 180
 
Les cases à cocher ne conviennent à mon avis bien qu'à des valeurs oui/non ou renvoient des valeurs numériques lorsqu'elles sont groupées. Cela t'obligerait à écrire du code pour filter les enregistrements. La méthode est peu "transparente" (si tu veux modifier ou ajouter des critères, tu dois réécrire le code).

J'imagine que tes critères sont groupés par catégories dans des champs différents.

Tu pourrais créer des listes de choix fondées sur des requêtes qui extraieraient les données de ces champs puis exécuter une requête qui combinerait ces critères.

pour créer les listes de choix, tu peux utiliser l'assistant: choisis la première option: je veux que la zone... recherche dans table.
Sélectionne le champ que tu veux trier et clique "suivant jusqu'à la fin.
Ensuite, dans les propriétés de la zone de liste, sous "contenu" tu vois le code SQL. Si tu cliques à droite sur les trois petits points, tu ouvres l'assistant.
Là tu cliques dans la barre d'outils sur le bouton "sigma" qui ajoute la ligne "opérations". Dans cette dernière tu choisis "compte" pour la clé primaire. Puis tu trie la colonne qui contient ton critère par ordre croissant.
Tu obtiens une zone de liste qui trie toutes les valeurs présentes dans ta table pour le critère choisi.
Tu peux répéter l'opération pour les autres critères.

Ensuite, par le biais d'un bouton de commande, tu peux combiner les valeurs renvoyées par ces listes dans une requête.

Il est possible de créer une nouvelle table sur la base de cette requête mais cela me semble inutile puisque toutes les données sont déjà présentes dans la base.
0
purrofixe Messages postés 490 Date d'inscription   Statut Membre Dernière intervention   95
 
Bonjour soleilanna,

Voici une idée :
Vous contruisez un formulaire de type indépendant et ensuite vous ajoutez les champs suivant :
1.- listbox (affichage des résultats selon vos choix)
Votre champ doit être de type « Zone de liste », la propriété « Aligner barre défilement » sur Système. De cette façon, si le nombre ligne trouvé est plus grand que la fenêtre disponible, la barre de défilement vertical s’affiche (à utiliser pour voir le tout).

2.- rajouter un choix dans le formulaire (1 pour chaque choix sésiré).
Dans le formulaire vous ajouter :
---le premier champ « Case à cocher » nommer « chk***** » et sous propriété Evénement : Sur clic créer une [Procédure événementielle] , lorsque vous cliquez sur créer (petit carré avec 3 point) vous serez dans l’éditeur VBA et vous avez « Private Sub chk*****_Click() » et en dessous « End Sub ». il s’agit de recopier le code et de remplacer « Type » par le nom de votre case à cocher (*****) sans le chk bien sur.
If Me.chkType Then
Me.cmbRechType.Visible = False
Else
Me.cmbRechType.Visible = True
End If
RefreshQuery

---le deuxième champ « Zone de liste déroulante » nommer « cmdRech***** » et sous ropriété Evénement : Avant MAJ créer une [Procédure événementielle], clic sur Créer et sous VBA vous avez :
Private Sub cmbRech*****_BeforeUpdate(Cancel As Integer)
End Sub
Vous introduisez « RefreshQuery » entre Priva… et End S…
Maintenant il faut ajouter un instruction dans la procédure « Private Sub RefreshQuery () »
A rajouter sous le dernier « End If » (pas oublier de remplacer les 5 points par le nom adéquat)
If Not Me.chk***** Then
SQL = SQL & "And Medias!***** = '" & Me.cmbRech***** & "' "
End If

Et voilà.
C’est peut être un brin compliqué comme explication mais cela marche à merveille.
Si vous le désirez je peux vous envoyez un exemple…..
Bonne semaine.

Salutations
Jean-Pierre
0
soleilanna Messages postés 8 Statut Membre
 
Bonjour Jean-Pierre,
merci tout d'abord de vous être penché sur mon problème! c'est vraiment sympa!
j'ai peut-être oublié de signaler une chose importante dans mon message, qui excusera sans doute mon ignorance: je ne me suis mise à access que depuis 3 semaines. Du coup, votre réponse ressemble un peu à du chinois, bien que je ne doute de son efficacité. Je vais donc bucher sur le problème avec vos solutions sous le nez, si vous pouviez cependant m'envoyer l'exemple que vous me proposiez, je pense qu'il me sera très utile en tant que support.

en vous remerciant sincèrement!
anna
0
purrofixe Messages postés 490 Date d'inscription   Statut Membre Dernière intervention   95 > soleilanna Messages postés 8 Statut Membre
 
Bonjour soleilanna,
Effectivement ce doit être un peu chinois pour vous, par contre si je sais où et que vous le souhaitez je vous envoie volontiers mon exemple que vous aurez tout le loisir de voir comment sa marche et aussi d'apprendre......
Bonne chance.

Salutations
Jean-Pierre
0
soleilanna Messages postés 8 Statut Membre
 
PS merci Zenon, je buche sur tes conseils également!
0
purrofixe Messages postés 490 Date d'inscription   Statut Membre Dernière intervention   95
 
Bonjour soleilanna,
Pour l'envoi c'est oui, mais de grâce quelle adresse, la transmission de pensée, je ne connais pas....

Salutations
Jean-Pierre
0
soleilanna Messages postés 8 Statut Membre
 
désolée, c'est également la 1ère fois que j'ai recours à ce genre de forum!
infos réctifiées! cf sur mon profil!
merci encore
anna
0
purrofixe Messages postés 490 Date d'inscription   Statut Membre Dernière intervention   95
 
Bonjour soleilanna,
Voila expédition terminée.
Regardez sous se lien, cela peut vous rendre service:
http://mypage.bluewin.ch/w.stucki/astuces.htm
Bonne semaine et bonne chance.

Salutations
Jean-Pierre
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zenon Messages postés 729 Statut Membre 180
 
Erreur, désolé.
0
purrofixe Messages postés 490 Date d'inscription   Statut Membre Dernière intervention   95
 
Bonjour zenon,
J'ai reçu se message de vous :
Je ne sais pas, mais PURROFIXE l'a fait sur son site... Il te renseignerait sûrement avec plaisir!,
Que dois-je comprendre.... merci.
Bonne fin de semaine.

Salutations
Jean-Pierre
0
zenon Messages postés 729 Statut Membre 180 > purrofixe Messages postés 490 Date d'inscription   Statut Membre Dernière intervention  
 
C'est une réponse à une question posée par Julie


http://www.commentcamarche.net/forum/affich-1142021-Image-suiveuse-de-souris

J'espère que vous ne m'en voudrez pas...

Joli, sinon, le calendrier volant...

A bientôt!
0
purrofixe Messages postés 490 Date d'inscription   Statut Membre Dernière intervention   95 > zenon Messages postés 729 Statut Membre
 
Bonsoir zenon,
Merci pour la réponse.
Pas de problème je vai voir de quoi il retourne.
Bonne soirée.

Salutations
Jean-Pierre
0
mohammed
 
Salut MR ZENON,
voilà j'aimerais savoir si vous avezune idée concernant le RUNTIME pour access.
je vous serais vraiment reconnaissant.
MERCI
0
zenon Messages postés 729 Statut Membre 180
 
Va voir sur ce lien...

Mais c'est ddracoon qu'il faut remercier...

http://www.commentcamarche.net/forum/affich-1018977-runtime-access-en-fran%E7ais
0
mohammed
 
merci Zenon,
mais après le téléchargement j'ai eu un pblème avec le pc.
Merci
0
purrofixe Messages postés 490 Date d'inscription   Statut Membre Dernière intervention   95
 
Bonjour mohammed,
Il serait bien de votre part que vous fassiez un nouveau poste pour votre problème, se serait plus clair pour tout le monde, en effet à la base il s'agit de la demande de soleilanna qui est résolue et de plus n'est pas le même que vous.

Merci de votre compréhension.

Salutations
Jean-Pierre
0
mohammed > purrofixe Messages postés 490 Date d'inscription   Statut Membre Dernière intervention  
 
salut Jean-Pierre,
pour moi auccun pblème seulement les jurées vont me demandé de voir le résultat de mon projet sans voir avec quel logiciel j'ai travaillé (interface access) bon il y a une possibilitée qui consiste à renouvlée ma barre des taches mais je ne l'ai pas apprissier mais pour le runtime j'ai entendue que l'application pourrai être executer même si elle est installer sur un ord qui ne comporte pas access.
j'ai suivi le lien http://rbaudry.free.fr/arbemat.php3
j'ai télécharger le runtime et quan je clique dessus il m'affiche "erreur sur la mémoire ..." et je ne peur rien faire avec.
mes salutation les plus profondes à tous les responsables et abbonnées de se site.
Merci
0
mohammed
 
Salut j'ai trouver un autre lien
http://ors1.chez.tiscali.fr/a2krt/
je vais le tester pour demain hereusement que je télécharge dans un cyber.
Merci
0
purrofixe Messages postés 490 Date d'inscription   Statut Membre Dernière intervention   95
 
Bonjour mohammed,
Vous êtes toujours sur le même poste (demande de soleianna), je suis sincérement désolé de ne pouvoir vous aidez pour votre cas.

Salutations
Jean-Pierre
0
purrofixe Messages postés 490 Date d'inscription   Statut Membre Dernière intervention   95
 
Hello,
Pour la dernière, Bonne chance

Salutations
Jean-Pierre
0
soleilanna Messages postés 8 Statut Membre
 
Rebonjour à tous!

J'ai passé quelques bells journées à travailler sur ma base et vos conseils ont été très utiles, surtout les vôtres Jean-Pierre. Merci encore!
Magré moi je me suis mise au langage VBA et le résultat est exactement ce que je voulais. Ca marche effectivement à merveille sur des critères provenant d'une seule et même table. Lorsqu'il s'agit d'y inclure un critère d'une autre table, les choses se corsent! J'ai essayé de rajouter toutes les tables lieés dans les codes (par des INNER JOIN.... tiré d'une simple requête créée par l'assistant (donc pas de fautes dans l'instruction) au niveau de la SQL du Private RefreshQuery.
Je commence à me dire qu'il faudrait peut-être regrouper toutes les infos de mes tables liées dans une seule et même requête, et ne faire appel par conséqunet qu'à cette unique table requête!
Qu'en pensez-vous?
Merci et bonne journéee à tous!
Anna
0
zenon Messages postés 729 Statut Membre 180
 
Mauvaise idée, à mon avis:

seuls les enregistrements de la table source présentant des enregistrement dans toutes les tables liées apparaîtront.
0
soleilanna Messages postés 8 Statut Membre
 
Bonjour Zenon,
en réalité il n'y a pas de table source!

Et une autre question j'aimerais travailler sur les données qu'Access m'aura séléctionné à partir des critères (je suis dans un formulaire). J'aurais voulu les envoyer vers une table ou une requête, est-ce possible dans l'absolu?!

Merci, anna
0
zenon Messages postés 729 Statut Membre 180
 
Cela me surprend: si tous les enregistrements se correspondent exactement, ils pourraient être réunis dans une seule table...
Ca me semble peu probable.

Il est tout à fait possible de créer de nouvelles tables fondées sur des critères X à partir d'autres tables. En principe, c'est souvent inutile et même illogique: une simple requête peut extraire les données. Lorsqu'elles sont dupliquées dans une nouvelle table leur mise à jour est aléatoire.
0
soleilanna Messages postés 8 Statut Membre
 
merci Zenon,

créer une requête à partir d'une table ou autre requête est simple, mais à partir d'un formulaire?!!!!!
0
zenon Messages postés 729 Statut Membre 180
 
Si tu souhaites rester dans une interface de type formulaire, il est facile de créer une procédure événementielle qui ouvre un autre formulaire, lui même fondé sur une requête avec des critères que tu spécifies dans des champs texte ou des listes déroulantes, voire même de filter le formulaire lui-même.
Tout dépend de ce que tu souhaites.

sinon, tu peux aussi en VB ouvrir une requête en mode feuille de données comme tu le ferais dans la fenêtre base de données avec la commande DoCmd.OpenQuery

On peut aussi "faciliter le travail" en intégrant au formulaire un sous-formulaire qui affiche les enregistrements connexes. ..
0
purrofixe Messages postés 490 Date d'inscription   Statut Membre Dernière intervention   95
 
Bonjour soleilanna,
Merci Anna pour votre petit mot.
C'est avec plaisir que j'ai lu les 6 derniers messages, je suis entièrement d'accord avec les réponses de zenon (merci au passage) qui sont très pertinentes.
Pour en dire un peu plus il serait bien de voir la structure de votre BD, si vous le souhaitez vous connaissez la procédure n'est-ce pas.
Bravo pour votre travail.
Bonne semaine.

Salutations
Jean-Pierre
0
soleilanna Messages postés 8 Statut Membre
 
(Re)Bonjour à tous les deux et merci encore sincèrement pour vos conseils précieux. Je ne manquerais pas de vous remercier dans mon manuscript final!

Ce serait évidemment plus facile si je pouvais vous envoyer ma base. Elle est hyper lourde et même en la zippant en long en large je n'y parviens pas. D'autres circonstances font que je ne peux malheureusement pas vous l'envoyer, à mon grand regret croyez moi car je suis sûre que vous pourriez trouver plein d'astuces!

Pour faire simple, j'ai 5 tables principales (00 date de sorties, 01 observations, 02 vues(ce sont des photos), 04 animal et 03 Photos (qui joint la 02 et la 04 pour une relation plusieurs à plusieurs: plusieurs animaux sur une même vue peuvent appartenir à deux obs différentes si deux groupes d'animaux se sont mélangés par exemple:), elles sont toutes liées (à chaque sorties correspond une ou plusieurs obs, une ou plusieurs photos, et sur chaque photos figurent un ou plusieurs animaux). Mes tables sont liées avec une intégrité référentielle.

Le formulaire que vous m'avez aidé à créer me permet de faire un tri des animaux (table 03) sur des critères contenu dans cette même table. Seulement il faudrait également que je sélectionne les animaux faisant partie d'une même sortie (ce qui fait appel à la table 00) et là access s'emmèle un peu les pinceaux!
Voilà mon premier souci.

Et puis mon deuxième donc, mais là je suis sure que ce sont mes lacunes en programmation qui en sont responsables, je ne connais justement pas le code qui permet d'extraire les données sélectionnées (lstResults, comme dans votre exemple Jean-Pierre) et de les placer dans une table ou un autre formulaire. Je cherche, je cherche mais quand on ne connait pas VB, c'est un peu du charabia tout ces codes!

Quoiqu'il en soit, merci infiniment, vraiment!
Anna
0
zenon Messages postés 729 Statut Membre 180
 
re-rebonjour...

Je pense qu'un des problèmes que tu rencontres, ce sont les références multiples circulaires.
Il doit y avoir moyen de les éliminer en créant des tables intermédiaires de manière avoir toujours une structure arborescente.

Par ailleurs, je ne pense pas indispensable de vouloir à tout prix recourir à des instructions compliquées sous VB...

Une bonne structure, quelques requêtes fondant des formulaires devraient faire l'affaire.

Quant au volume de la base, il n'est évidemment pas nécessaire de nous envoyer les données. Tu pourrais créer une nouvelle base puis cliquer sur fichier, données externes, importer et , dans "options" cocher "définitions uniquement". Ta base devrait ne plus "peser" que qque Ko...

A bientôt et tjs avec plaisir...

Zenon
0
purrofixe Messages postés 490 Date d'inscription   Statut Membre Dernière intervention   95
 
Bonjour soleilanna,
Du fait qu’un envoi de doc n’est pas possible, pour me faire une idée plus précise, pouvez-vous précisez se qui suit :
Les noms/types des champs de chaque table….
Pour les liaisons, c’est parfaitement expliqué.
Note: la proposition de zenon pour un envoi serait aussi super.
Bonne semaine

Salutations
Jean-Pierre
0
technique1322 Messages postés 5 Statut Membre
 
bonjour,

je suis entrain de construit une base de données, je voudrais une base du genre: nom , prenom, licence, date de naissance, club , année, categorie, niveau , telephone, adresse. J'arrive pas à faire une page de garde dans acces pour arriver sur mes bases de données. Je voudrais de l'aide
0