ACCESS choix dans une liste trié par requete - Logiciels - Windows & Software
Marsh Posté le 24-04-2007 à 13:37:17
Bonjour
Une table associative entre Personnel et Voiture.
Ta liste met a jour ta table associative.
Dans la requete de la pioche tu fais un left join de ta table voiture vers la table associative.
Cordialement
[edit]
Envoie ta base qu'on zieute
Ca a un rapport avec notre ancien post ? http://forum.hardware.fr/hfr/Windo [...] 2607_1.htm
Où je n'ai pas de reponse d'ailleurs...
[/edit]
Marsh Posté le 24-04-2007 à 14:06:44
si sa a voir avec l'autre post, mais je ne le retrouvais pue, la comme je suis l'auteur, j'ai facile de le retrouver avec une recherche.
comment pui-je mettre a disposition ma base de donné?
Marsh Posté le 24-04-2007 à 14:09:23
Soit avec mon mail dans mon profil et je la partage ici, soit si tu as une page perso ou autre.
Regarde ce que je viens de faire vite fait et si ca repond a tes attentes.
http://dje69r.free.fr/mdtdamien1-2.mdb
Lance le formulaire nommé : Affectation voiture/personnel + saisie
Cordialement
PS : fais un effort sur l'orthographe...
[edit]
Pour retrouver les sujets auquels tu as participé il suffit de te mettre par exemple sur Windows & Software et de cliquer sur le petit bouton avec les drapeaux.
[/edit]
Marsh Posté le 24-04-2007 à 14:35:56
Je vient de voir tes deux bases de données, la mdtdamien1-2.mdb correspond a se que je cherche, je suis actuellement entrain de voir comment tu a fait.
Je crois savoir pourquoi je n'est pas d'image dans mon cadre, et que ton fichier été si gros lol.
access ne peut que afficher des images BMP
Cela limite fortement les possibilités.
Merci pour ton aide, si tu a une solution pour les photos autres que bmp
Marsh Posté le 24-04-2007 à 14:50:09
mdtdamien1 a écrit : Je crois savoir pourquoi je n'est pas d'image dans mon cadre, et que ton fichier été si gros lol. |
Non, dans ma base j'ai integré des Jpg... Apres pour l'incorporation ou l'affichage c'est Access qui met/transforme ca en BMP, mais ca ne gene pas de mettre du JPG...
Apres la taille, avec les machines de maintenant je ne vois pas trop le souci...
Cordialement
[edit]
je n'ai pas de photo d'adriana en bmp
[/edit]
Marsh Posté le 24-04-2007 à 15:05:13
lorsque j'ouvre la table1 de mdtdamien1, j'ai après avoir choisi mon image, Package dans la colonne Image, alors que toi tu a Image bitmap.
Mon souci doit venir de ma façon dans je procède pour allez chercher l'image.
Pour ma part, a partir du formulaire, j'ai fait
clic droit Insérer un objet
A partir d'un fichier
Je choisi le fichier est valide
a se moment la, sa modifie la colonne Image comme je te l'indiquer au dessus
Marsh Posté le 24-04-2007 à 15:07:37
Click droit
Inserer un objet
Image BitMap
Edition
Coller a partir de
Aller chercher le fichier image quel qu'il soit...
C'est une des possibilités
Lis ca :
http://www.ybet.be/access/13-formulaire.htm
http://cafeine.developpez.com/access/tutoriel/photos/
Cordialement
Marsh Posté le 24-04-2007 à 15:31:11
merci,
J'ai suivi les leçons présent sur se site.
Je n'arrive pas a obtenir le même résultat que lui.
car si je comprend bien, il arrive a partir d'un cadre dépend, d'afficher une image en ayant fait "a partir de"
chose que je n'arrive pas a faire.
La méthode que tu ma présenter fonctionne très bien
mais j'ai peur que mon parton et DRH trouve sa trop lourd comme manipulation.
pour se qui de la seconde mdb je suis preneur de quelque explication, je ne connais pas "met a jour ta table associative."
Comment cela fonctionne tyle ?
cordialement
Marsh Posté le 24-04-2007 à 15:58:23
Tu as
- "SaisiePersonnel" : permet de saisir le personnel en liste. Il est repris en sous formulaire dans le formulaire "Affectation voiture/personnel + saisie"
- "SaisieVoiture" : pareil que "SaisiePersonnel" mais pour les voitures
- "Voiture/Personnel" : Permet de lier une voiture à un personnel. il a comme source de données les 3 tables liées. Il aurait pu n'avoir que la table associative, mais comme on veut faire apparaitre des infos (comme le nom du personnel ou de la voiture) il faut que les autres tables soient presentes.
- "Affectation voiture/personnel + saisie" : reprend les 3 formulaires precedents en sous formulaire. Histoire d'avoir qu'un formulaire pour saisir le personnel, les voitures et l'association d'une voite à un personnel.
il possede aussi un bouton et deux pioches.
* Les pioches ont comme source de données les deux tables respectives, avec une specificité pour celle des voitures. En effet apparait dans la pioche que celles qui ne sont pas encore affectées a un personnel. En fait on prend toutes les valeurs de la table Voiture où n'apparaissent pas les voitures qui sont dans la table associative. C'est le Left Join et le critere "est nul" pour la table associative si tu regardes la source de données de la pioche.
Elles ont aussi un evenement qui fait que qd tu pointes dessus elle s'actualisent. Elles ont en evenement les macros "personnel" et "voiture" de la macro "macro1" respectivement.
* Le bouton quant a lui lance la macro "Affecte" se situant dans la macro "macro1"
- "personnel": permet d'actualiser la pioche du personnel quand tu click dedans
- "voiture" : pareil mais pour la pioche des voitures
- "affecte" : elle lance la requete nommée "requete1"
NB : une sous macro s'atteind comme cela : Nom_de_la_macro.nom_de_la_sous-macro donc si tu regardes la pioche personnel, dans l'evenemment "sur reception focus" tu as "Macro1.personnel"
Elle ajoute dans la table associative le n° du personnel piochée dans la pioche personnel au N°Personnel de la table associative. Pareil pour le numéro de la voiture. Et elle met la date du jour ( fonction date() ) dans le champs [DatePossession]
Marsh Posté le 24-04-2007 à 16:32:52
Expr2: Formulaires![Affectation voiture/personnel + saisie]!N°Voiture // Expr2x veut dire que se qu'il suit est une une formule ?
j'ai essaier de reproduire ton exemple.
je ne parvient pas a réaliser la jointure avec le left join et null
Code :
|
je ne parvient cas un affichage classique avec le code suivant
Code :
|
peut tu me dire comment tu parvient a sa ?
Marsh Posté le 24-04-2007 à 16:59:51
mdtdamien1 a écrit : Expr2: Formulaires![Affectation voiture/personnel + saisie]!N°Voiture // Expr2x veut dire que se qu'il suit est une une formule ?
|
Marsh Posté le 24-04-2007 à 17:22:05
Lorsque je suis sur le formulaire Affectation voiture/personnel + saisie
je sélectionne le champ N°Voiture
propriété
Contenu ( c'est la requête effectuer pour avoir le contenu du champ N°Voiture)
Marsh Posté le 24-04-2007 à 18:53:57
Avec le mode creation, clique sur les 3 petit point au fond de la ligne "contenu" des propriétés
Marsh Posté le 25-04-2007 à 16:46:15
Je n'y parvient pas, j'ai essayer dans tout les sens.
Si je pose dans contenu le code là qui est le tiens sa marche
Code :
|
si j'essaie de le créé manuellement
- j'ouvre avec les 3 ....
- puis j'ouvre les tables
- je mes les trois champ
- je réalise un LEFT JOIN
- puis un IS NUL
j'obtient un message d'erreur "Instruction SQL non exécuter, des jointures externes ambigüe"
Remarque : si il n'y a pas de LEFT JOIN, je n'est pas cette erreur mais mon champ est vide.
Marsh Posté le 25-04-2007 à 18:34:20
ReplyMarsh Posté le 26-04-2007 à 14:12:17
Bonjour
Euh c'est un peu normal que ca ne marche pas... Tu créés 5 fois la lisaison entre [Voiture].[N°Voiture] et [Voiture/Personnel].[N°voiture] :
ON (Voiture.N°Voiture = [Voiture/Personnel].N°voiture) AND (Voiture.N°Voiture = [Voiture/Personnel].N°voiture) AND (Voiture.N°Voiture = [Voiture/Personnel].N°voiture) AND (Voiture.N°Voiture = [Voiture/Personnel].N°voiture) AND (Voiture.N°Voiture = [Voiture/Personnel].N°voiture) |
Si en plus par dessus tu rajoutes un left join...
De plus ton modèle de données n'etait meme pas construit... Donc pas d'integrité referentielle, mais ca c'est peut etre par choix
Fichier avec une requete propre
Marsh Posté le 09-05-2007 à 12:16:20
Code :
|
Je n'est pas compris se que cela veut dire.
Ces coi un model de donner, ces la ou en fait les lien ?
je vient de finir de rentrer les données ( c'est pour cela que j'ete absent du forum )
J'ai on se moment, un formulaire, avec tout un ta de champ,
je voudrai pouvoir faire une recherche a partir du formulaire, par exemple sur le NOM
puis renvoyer le résultat de la recherche sur le formulaire.
j'ai pense a un bouton qui effectuerai une requête sur le champ voulu avec une boite de dialogue pour saisir le nom, mais comme ré introduire le résultat
dans le formulaire ? Merci .
ou alors faut t'il crée une table qui contiendra le résultat de la recherche. avec l'ouverture d'un nouveau formulaire.
Merci de vos info
Je penser aussi a une liste déroulant, avec une recherche dynamique en fonction de la recherche pour faire le choix en cas de doublons,
Mais je n'est aucune idée sur la façon de la faire, et si c'est réalisable
Marsh Posté le 09-05-2007 à 20:08:32
Bonjour
mdtdamien1 a écrit :
|
Oui
Tu as un exemple de la base ?
Ou alors oui tu filtre par la requete sous jacente au formulaire avec un evenement qui actualise ton formulaire apres modif de ta zone de recherche.
Cordialement
Marsh Posté le 10-05-2007 à 10:37:18
Je vient de t'envoyer par email, la base de donné, tu y trouvera les détail sur mon projet a l'état actuel
Marsh Posté le 10-05-2007 à 11:06:39
Bonjour
Si j'ai bien compris, tu veux que dans ton formulaire "Saisie de tout les champs" tu puisses directement affecter une voiture.
D'ailleurs avec le modele que tu as fait, tu pourrais meme affecter deux voitures a une seule personne, ou vice versa. Mais la n'est pas la question.
En fait c'est assez simple, il te suffit de créer un formulaire, qui sera un sous formulaire dans ton formulaire "Saisie de tout les champs" et de faire un lien champ pere/fils avec les champs de la table associative.
Pour ce qui est du filtre il y avait beaucoup plus simple :
SuppotDeSaTante a écrit : Ou alors oui tu filtre par la requete sous jacente au formulaire avec un evenement qui actualise ton formulaire apres modif de ta zone de recherche. |
Je te fais les deux trucs et je repost.
En attendant regarde dans l'aide la gestion des sous formulaire et la notion de champ pere/champ fils
Cordialement
[edit]
http://dje69r.free.fr/bd6.mdb
[/edit]
Marsh Posté le 10-05-2007 à 13:14:06
Ou lala !!
Je ne c'est pas comment tu fait tout sa mais sa ressemble beaucoup a se que je voudrai faire.
J'ai regarder ta macro, rien, j'ai regarder le bouton recherche, rien, le champ indépendant, rien
ou et comment fait tu pour choisir sur quel élément ton filtre s'applique et avec quel critère.
J'ai beau chercher je n'est pas trouver de lien père/fils
Les liaison dans la table liaison_voiture_personnel, me semble arriver par magie !
Les sélection de source pour Tes formulaires, me sont impossible a reproduire.
tu fait les choses avec faciliter ( pas de code ambigue ou autre ) mais une faciliter que je n'arrive pas a reproduire et a comprendre.
Marsh Posté le 10-05-2007 à 14:43:21
Bonjour
Le code j'aime bien, mais si je peux m'en passer... Donc tant que je peux faire sans, je fais. Et access le permet, donc... Et j'avoue que les macro excel 4 me manquent
Pis avec les becanes dont on dispose une nanoseconde de calcul en plus ou en moins je m'en fou un peu.
Alors pour le filtre, c'est tout con. Tu vas dans la requete source du formulaire. Tu te mets en mode creation, propriété du formulaire, source et tu clicks sur les 3 petits points pour arriver sur la requete en mode creation.
Dans la ligne critere du champ NOMS j'ai du mettre un truc genre : Comme("*" & Forms(TonFormulaire)(RechNom) & "*" )
Donc la il va prendre tout les NOMS qui contiennent (Le *Recherche*) ce que tu as la zone independante nommée RechNom (de memoire c'est ce nom la)
Le bouton sert juste a actualiser le formulaire. C'est pour cela que la macro ne contient qu'un "Actualiser" sans parametre.
Comme la source de donnée du formulaire est filtrée en fonction de la zone RechNom tu n'as qu'a Actualiser le formulaire et ca actualisera la source de donnée et le formulaire.
Pour la magie de ta table de liaison c'est justement le sous formulaire et les liens champ pere / champ fils qui font ca.
Ouvre ton formulaire principal en creation. Tu dois voir le sous formulaire en bas a droite. Tu clicks avec le bouton droit, propriété, et tu vas voir les Champ pere / Champ fils. Ces champs font le lien entre la clé principale du formulaire principal et la clé secondaire du sous formulaire...
Je repasserai ce soir avec la base sous les yeux, car la je ne suis plus chez moi
Cordialement
Marsh Posté le 10-05-2007 à 14:54:47
Citation : |
Marsh Posté le 10-05-2007 à 16:33:39
SuppotDeSaTante a écrit : Bonjour |
OK j'ai vue comment tu a fait sa enfin quelque chose que je comprend
Je pense faire plusieurs requête baser sur se principe pour faire des recherches sur chaque champ.
et mettre dans une ou plusieurs macro, (tout dépend si je c'est sortir d'un macro en cours) qui effectuerons le filtrage suivis d'un rafraichissement du formulaire.
quand pense tu ?
SuppotDeSaTante a écrit : Bonjour |
Alors si bien compris, pour que le champ numero soit présent, le sous-formulaire a été créé a partir de la table "liaison", pourtant on y retrouve toute les infos des voitures.
tu a changer la source du sous-formulaire ?
Je repasserai ce soir avec la base sous les yeux, car la je ne suis plus chez moi
Cordialement
Marsh Posté le 10-05-2007 à 17:16:48
mdtdamien1 a écrit : Je pense faire plusieurs requête baser sur se principe pour faire des recherches sur chaque champ. |
Oui c'est possible, mais autant tout faire dans la meme requete. Les criteres mis en colonnes correspondent à des ET, les criteres mis en lignes correspondent à des OU.
Donc tu n'as qu'a créer un autre controle independant nommé par ex RechPrenom et de le mettre aussi dans la zone critere de la requete. Base toi sur l'existant avec RechNom.
mdtdamien1 a écrit : Alors si bien compris, pour que le champ numero soit présent, le sous-formulaire a été créé a partir de la table "liaison", pourtant on y retrouve toute les infos des voitures. |
Si je n'avais voulu que la pioche, la table de liaison aurait suffi. Mais j'ai trouvé plus judicieux qu'une fois piochée, que l'on ait les infos sur la voiture, donc forcement dans la source du sous formulaire il y aussi la table "voiture"
La table de liaison pour lier la personne (formulaire principal, donc champ pere) à la voiture (sous formulaire, champ fils sur la table de liaison)
Et la table "voiture" qui permet d'afficher les infos.
Marsh Posté le 11-05-2007 à 10:22:54
Je suis arriver a pratiquement tout reproduire.
j'ai créé un sous formulaire baser sur la table "liaison_voiture_personnel" a la quel j'ai les champ voiture ( en rajoutant la table voiture dans source )
si j'ouvre le formulaire "relation_voiture_personnel", je peut bien changer le véhicule par le biais de la liste, en voyant les répercutions sur la table "relation_voiture_personnel".
Mais une fois intégrer dans mon formulaire "saisie de tout les champs". j'ai une erreur quand je veut choisir une voiture pour l'associé a une personne.
Access me mes dans la bar d'état "le contrôle ne peut pas être modifier, il est lié au champ inconnu Liaison_vehicule_personnel.VEH_NUM"
Je tes envoyer ma base dans l'etat ou le problème survient.
si tu pouvai me dire se qui ne va pas merci
Marsh Posté le 11-05-2007 à 12:11:33
Bonjour
Le problème vient de ta requete source de ton sous formulaire. Quand tu fais une requete comportant deux tables liées, il ne faut pas mettre tous les champs de toutes les tables. Tu dois mettre la clé secondaire de la table principale mais pas la clé principale de la table secondaire... Tu me suis ? lol
Donc dans notre cas la clé VEH_NUM de la table liaison OUI, mais la clé VEH_NUM de la table Voiture NON
En fait dans ta requete tu as la table liaison et tu mets le champ VEH_NUM, tu aussi la table Voiture et tu mets aussi le champ VEH_NUM (mis avec ton *). Tu as donc deux champs identiques avec le meme nom, et pour palier au probleme Access te créer un champ fictif nommé laison_personnel_voiture.VEH_NUM sur lequel ta pioche pointe. Il ne faut mettre que le champ VEH_NUM de la table liaison.
Donc vire le * de ta requete source, ajoute a la mano les champs de la table voiture dont tu as besoin, sauf bien evidement VEH_NUM et change le source controle de ta pioche (qui pointe sur laison_personnel_voiture.VEH_NUM) en le faisant pointer sur seulement VEH_NUM
Tiens moi au jus.
Cordialement
Marsh Posté le 11-05-2007 à 13:30:46
table_liaison = table principale
table_voiture = table secondaire
liaison.veh_num = clé secondaire ( si j'ai bien compris liaison.num_personnel_voiture est ma clé principale)
voiture.veh_num = clé principale
j'ai fait comme tu ma dit, sa marche nikel !
Je vé essai de faire de même avec la liaison téléphone.
J'ai bien compris le problème vient que je point sur un champ qui est fictif ?
On tout cas merci pour ton aide et tes explication
Prochaine étape, créé des alerte sur les date d'obtention des certificat type électrique nacelle ....
Je doit comparé la date du champ avec la date actuelle avec un delta "validités" et " anticipations"
J'ai mis ces valeur d'anticipations et de validités dans une table, pour qu'il soit réglable.
Je suis actuellement entrain de cherche pour comparer mon champ a la date en prenant en compte le delta
sa me donne sa actuellement
critère : Expr1: [VIS_MEDICALE_DATE]+[validiter_visite_medicale]<Date()
Je penser a sa
critère : Expr1: (CDbl([VIS_MEDICALE_DATE])+([validiter_visite_medicale]*365))<Date()
Si j'ai bien compris Date() renvoi le nombre de jour écouler depuis 1900 ?
Code :
|
Je penser pouvoir appliquer sa dans mon critère, mais je ne suis pas sur que critère accepte le code VB.
Marsh Posté le 11-05-2007 à 14:11:19
Pour les calculs de date regarde aussi du coté des fonctions DiffDate() et AjDate(), plus facile pour faire des calculs sur les dates.
Cordialement
Marsh Posté le 11-05-2007 à 15:51:59
décidément j'arrive a rien, access a une aide pratiquement inexistante,
j'ai trouvez sa dans les exemple de access :
Entre Date( ) Et AjDate("m", 3, Date( ))
je les mis dans critères de VISITE_MEDICALE_DATE
il me dit erreur de synthaxe !
Marsh Posté le 11-05-2007 à 19:16:31
Sans exemple ou sans le critere complet, j'aurais un peu de mal...
Marsh Posté le 15-05-2007 à 10:22:19
Slt,
Maintenant, je voudrai pouvoir rechercher une voiture par exemple
en la sélectionnant dans une liste (de table voiture).
puis afficher la fiche du personnel a la quel cette voiture est rattacher
Je penser récupérer la valeur du numéro d'identifiant voiture de ma liste (NUM_VOITURE)
effectuer une recherche dans la table liaison_voiture_personnel pour trouver le numéro du personnel (NUM_PERSONNEL).
appeler le formulaire personnel avec comme paramètre le numero_du_personnel ou un msgBos si la voiture n'est pas associé.
Je cherche donc a récupéré la valeur de la sélection dans champ liste ( j'ai inclue NUM_VEHICULE en premier pour que access y alle lire dans se champ, il se retrouve cacher puisque clé primaire )
Comment allez lire la valeur du champ sélectionner dans la liste ? ( le NUM_VEHICULE en fonction du choix dans la liste )
Comment faire une boucle sur des enregistrement ( enrg 1 enrg2 )
Comment savoir que l'on est au dernière enregistrement.
Comment comparé les champs de table différent ( [nom_table]![nom_champ] )
Peut tu m'aider ? Merci
Marsh Posté le 15-05-2007 à 11:40:35
Peux tu me renvoyer ta base que je me replonge dedans ?
Marsh Posté le 16-05-2007 à 08:49:09
Pourquoi quand j'intègre une notre table dans un formulaire,
le formulaire se retrouve verrouiller en écriture ?
Marsh Posté le 16-05-2007 à 20:34:21
Ca depend de tes lisaisons et des clés que tu mets dns le formulaire...
J'ai pas été voir mes mails m'as tu envoyé la base ?
Marsh Posté le 24-04-2007 à 13:10:20
bonjour, je souhaiterai pouvoir choisir dans un formulaire pas le bais d'une liste dé roulante une occurrence de la liste, est que cette occurrence ne soit plus accessible tend que pas libérer.
Je m'explqiue :
- j'ai une liste Personnel
- J'ai une liste Voiture
Je souhaiterai Que le personnel puisse choisir par une liste le véhicule qu'il prenne.
Si une seconde personne accède a la base de donnée, le véhicule précédent n'apparaisse plus dans la liste.
j'ai donc essai de faire une liste voiture ou il y a deux colonne, Voiture(string) et utiliser(bool).
j'ai mis dans le formulaire, une liste qui est générer par une requête qui ressort seulement les voitures qui ne sont pas utiliser.
Donc premières question comme faire pour que lorsque je sélectionne un véhicule, le champ utiliser soit mit a jour ( C'est lui qui me permet de trier les véhicules restant )
Deuxième question lorsque je Vé retourner par le formulaire sur la personne qui a choisi le véhicule.
comment faire pour que le véhicule qu'il a choisi apparaisse, puis que la requête va effacer tout les véhicule non disponible
Troisieme question, comment faire pour qu'un champ et un seul soit dans cette liste selectionnable plusieur fois
( pour pouvoir tout simplement dire que la personne na pas de véhicule )
Je ne C'est pas si j'utilise la bonne méthode pour arriver au résultat espéré.
Je suis ouvert a toute vision autre sur le problème