Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/09/2011, 06h07   #1
Candidat au titre de Membre du Club
 
Homme Louic
Étudiant
Inscription : juillet 2011
Messages : 38
Détails du profil
Informations personnelles :
Nom : Homme Louic
Âge : 20
Localisation : Indonésie

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2011
Messages : 38
Points : 10
Points : 10
Envoyer un message via MSN à Alialyn Envoyer un message via Skype™ à Alialyn
Par défaut Bug listes déroulantes liées et problème de correspondance.

Bonjour,

La base de donnée, en gros, répertorie des documents requis pour la validation de matériels médicaux, le formulaire qui me pose problème sert à enregistrer un nouveau produit, appartenant à une usine donnée, elle même appartenant à une marque. J'ai donc créé une liste déroulante pour la marque, que je dois lier à la liste déroulante des usines pour qu'en fonction de la marque choisie, je n'ai que les usines dépendantes de cette marque.
J'ai 'à peu près' réussi... Quand je choisi ma marque, ma liste déroulante des usines se déverrouille et je peux choisir uniquement celles liées à la marque. Cependant ceci fait, quand je me déplace dans les autres enregistrements, l'usine reste toujours celle que je viens de choisir. Pour n'importe quel produit et n'importe quelle marque. Et quand je ferme et réouvre le formulaire (après avoir sauvegarder au préalable) la case des usines est verrouillée et vide. L'enregistrement de l'usine n'a pas été effectué. Voici mon code

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 Private Sub idPrincipallist_AfterUpdate()
Dim lngIDCat   As Long
Dim SQL        As String
 
  If Not IsNumeric(Me!idPrincipallist) Then Exit Sub
  '' Vérifie que l'on a cliqué sur un principal pour éviter le NULL
  lngIDCat = Me!idPrincipallist
  '' Affecte la valeur de idPrincipallist à la variable lngIDCat
  SQL = "SELECT idFactory, FactoryName, idPrincipal FROM Factory WHERE idPrincipal =" & lngIDCat & " ORDER BY FactoryName"
  '' Construit la chaîne SQL avec le principal concerné
  idFactorylist.RowSource = SQL
  '' Affecte la chaîne SQL à la liste des factories
  idFactorylist.Enabled = True
  '' Déverrouille la liste des factories
  idFactorylist.SetFocus
  '' Donne le focus la liste des factories
 
End Sub
J'ai un deuxième problème, dans un autre formulaire chargé de répertorier les documents requis pour la validation d'un produit.
Tout d'abord j'aimerais faire pareil que pour les marques et usines, c'est à dire lier une liste déroulante des marques avec les produits associés dans une autre liste. Et si possible même avec une troisième liste, des usines comme précédemment.
Aussi quand je veux créer un nouvel enregistrement de document pour un produit donné, je ne peux pas sélectionner le document souhaité dans la liste déroulante. J'ai accès à toute la liste, je vois tout les documents correctement mais je ne peux pas en sélectionner, un message m'indique que c'est parce que la liste est liée à un champ 'NumAuto' mais je ne vois pas ce que ça change...
Enfin dans ce formulaire des documents enregistrés pour un produit donné je n'ai que 3 enregistrements, (le formulaire est basé sur une table) alors que dans la table j'en ai 5. Je ne comprends pas d'où peut venir cette erreur...

Merci par avance de votre aide

Alialyn
Alialyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 08h17   #2
Membre Expert
 
Avatar de bernardmichel
 
Inscription : janvier 2004
Messages : 985
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 985
Points : 1 028
Points : 1 028
Envoyer un message via MSN à bernardmichel Envoyer un message via Skype™ à bernardmichel
bjr, Il y a plusieurs questions dans ton post, pas évident d'y répondre à toutes à la fois. Petite question avant de tenter une réponse, est-ce que ta liste déroulante (première question) est "Indépendante" ?
bernardmichel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 08h26   #3
Candidat au titre de Membre du Club
 
Homme Louic
Étudiant
Inscription : juillet 2011
Messages : 38
Détails du profil
Informations personnelles :
Nom : Homme Louic
Âge : 20
Localisation : Indonésie

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2011
Messages : 38
Points : 10
Points : 10
Envoyer un message via MSN à Alialyn Envoyer un message via Skype™ à Alialyn
Bonjour,

Oui je sais je suis débutant en Access alors j'ai du mal avec ... tout

Hum la liste des marques non puisque c'est celle de départ mais la liste des usines et "Indépendante" oui. C'est mon code qui est censé la 'remplir'
Alialyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 08h49   #4
Membre Expert
 
Avatar de bernardmichel
 
Inscription : janvier 2004
Messages : 985
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 985
Points : 1 028
Points : 1 028
Envoyer un message via MSN à bernardmichel Envoyer un message via Skype™ à bernardmichel
Alors, ta liste ne doit pas être indépendante car les données que tu sélectionnes doivent être mémorisées dans la table source de ton formulaire. Sinon, il se passe ce que tu dis: La valeur que tu y a entré reste la même pour tous les enregistrements.
bernardmichel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 09h34   #5
Candidat au titre de Membre du Club
 
Homme Louic
Étudiant
Inscription : juillet 2011
Messages : 38
Détails du profil
Informations personnelles :
Nom : Homme Louic
Âge : 20
Localisation : Indonésie

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2011
Messages : 38
Points : 10
Points : 10
Envoyer un message via MSN à Alialyn Envoyer un message via Skype™ à Alialyn
Ah... Que dois-je mettre dedans alors?
Alialyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 09h44   #6
Membre Expert
 
Avatar de bernardmichel
 
Inscription : janvier 2004
Messages : 985
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 985
Points : 1 028
Points : 1 028
Envoyer un message via MSN à bernardmichel Envoyer un message via Skype™ à bernardmichel
Dans la table qui alimente ton formulaire, tu dois avoir un champ spécifique pour stocker le résultat de ta combobox. Tu relies donc simplement ta combobox à ce champ.
bernardmichel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 10h00   #7
Candidat au titre de Membre du Club
 
Homme Louic
Étudiant
Inscription : juillet 2011
Messages : 38
Détails du profil
Informations personnelles :
Nom : Homme Louic
Âge : 20
Localisation : Indonésie

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2011
Messages : 38
Points : 10
Points : 10
Envoyer un message via MSN à Alialyn Envoyer un message via Skype™ à Alialyn
Hum, je ne comprends pas très bien... Dans mon formulaire j'ai 2 tables. Je dois donc rajouter un champ vide a une des tables? Pour sauvegarder les usines donc, mais cela ne va il pas faire des informations redondantes?
Alialyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 10h24   #8
Membre Expert
 
Avatar de bernardmichel
 
Inscription : janvier 2004
Messages : 985
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 985
Points : 1 028
Points : 1 028
Envoyer un message via MSN à bernardmichel Envoyer un message via Skype™ à bernardmichel
Peux-tu compresser ta base et me l'envoyer ? Ce sera certainement plus simple pour moi de te montrer :-)
bernardmichel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 10h30   #9
Candidat au titre de Membre du Club
 
Homme Louic
Étudiant
Inscription : juillet 2011
Messages : 38
Détails du profil
Informations personnelles :
Nom : Homme Louic
Âge : 20
Localisation : Indonésie

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2011
Messages : 38
Points : 10
Points : 10
Envoyer un message via MSN à Alialyn Envoyer un message via Skype™ à Alialyn
Oui d'accord, mon problème se trouve dans les formulaires 'Product' 'ProductRegistration' par contre j'ai une message m'indiquant que mon quotas de pièce jointe est dépassé alors je ne peux pas la joindre ici. J'ai vu que tu as skype, je peux te l'envoyer par là si tu es d'accord. Mon pseudo est: neptelyn

Merci de ton aide
Alialyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 13h56   #10
Membre Expert
 
Avatar de bernardmichel
 
Inscription : janvier 2004
Messages : 985
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 985
Points : 1 028
Points : 1 028
Envoyer un message via MSN à bernardmichel Envoyer un message via Skype™ à bernardmichel
Alors...
Tout d'abord, tu affiches les propriétés de ton control "IdFactory" puis tu sélectionnes l'onglet "Données", ensuite, dans cet onglet:
  1. Tu définis la "Source de contrôle" du control "IdFactory" comme "idFactory" (ce champs existe déjà dans ta table "Product").
  2. Tu insères le code SQL ci-dessous en face de la propriété "Contenu"
Code :
SELECT idFactory, FactoryName, idPrincipal FROM Factory WHERE idPrincipal = " & [Formulaires]![Product]![idPrincipallist]  & " ORDER BY FactoryName
Ensuite, tu affiches les propriétés du champ "IdPrincipal" et tu sélectionnes l'onglet "Evènements".
  1. Tu ouvres maintenant la "Procédure évènementielle" "Après MAJ et tu remplaces le code que tu as déjà par:
Code :
1
2
3
4
5
Private Sub idPrincipallist_AfterUpdate()
    Me.idFactorylist.Requery        '   A pour effet de recalculer les données affichées dans le combo
    Me.idFactorylist.Enabled = True '   Tu connais la suite...
    Me.idFactorylist.SetFocus       '   ...
End Sub
Voilà, sur cette base-là, tu peux en refaisant cette démarche afficher ce que tu veux dans n'importe quel combobox.
bernardmichel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 03h57   #11
Candidat au titre de Membre du Club
 
Homme Louic
Étudiant
Inscription : juillet 2011
Messages : 38
Détails du profil
Informations personnelles :
Nom : Homme Louic
Âge : 20
Localisation : Indonésie

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2011
Messages : 38
Points : 10
Points : 10
Envoyer un message via MSN à Alialyn Envoyer un message via Skype™ à Alialyn
Bonjour,

Merci de ta réponse cependant je ne sais par quel malheur cela ne marche pas chez moi...

J'ai fait exactement ce que tu m'as indiqué, changé le contrôle de Factorylist en pointant idFactory, changé le contenu avec la ligne SQL que tu m'as donnée que je comprends bien, et changer la procédure évènementielle de Principallist mais quand je choisis une marque, la seconde combobox s'active mais il n'y a rien à l'intérieur, rien à choisir...

Par ailleurs aurais-tu, ou quelqu'un d'autre, une idée pour mon second problème?

Merci en tout cas pour ton aide

EDIT: En fait j'ai remarqué que dans la ligne SQL que tu m'as donné pour inclure le formulaire tu as écrit " & ... & " et je crois que c'est ça le problème, en enlevant ces caractères je peux 'presque' sélectionner une usine. J'ai en tout cas les usines correspondantes à leur marque qui apparaissent, déjà un bon point, cependant quand j'en sélectionne une, j'ai une message d'erreur qui s'affiche que je comprends mais n'arrive pas à résoudre...
Voici le message d'erreur: http://www.hostingpics.net/viewer.ph...6098erreur.png

En espérant que quelqu'un puisse m'aider!
Alialyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 12h55   #12
Candidat au titre de Membre du Club
 
Homme Louic
Étudiant
Inscription : juillet 2011
Messages : 38
Détails du profil
Informations personnelles :
Nom : Homme Louic
Âge : 20
Localisation : Indonésie

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2011
Messages : 38
Points : 10
Points : 10
Envoyer un message via MSN à Alialyn Envoyer un message via Skype™ à Alialyn
Bonjour!

J'ai ENFIN trouvé une solution pour mon premier problème, à savoir lier mes deux listes déroulantes.

Dans mon désespoir je me suis dit que à ne pas trouver comment faire en code ou dans mon formulaire, autant tout regarder du début, et ça à été la chose la plus intelligente que j'ai faite depuis quelques jours!

J'ai donc modifié ma table Product et inséré les champs idPrincipal et idFactory, ceux de mes 2 listes en question donc, que j'ai lié à leurs correspondances dans leur tables respectives.

Ensuite j'ai un peu modifié mon code, 'découpé', pour plus de facilité:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
    Private Sub Form_Current()
    Me.FillFactory
    Me.idFactorylist.Requery
 
End Sub
 
Sub FillFactory()
    Dim lngIDCat   As Long
    Dim SQL        As String
 
    If Not IsNumeric(Me!idPrincipallist) Then Exit Sub
    '' Vérifie que l'on a cliqué sur un principal pour éviter le NULL
    lngIDCat = Me!idPrincipallist
    '' Affecte la valeur de idPrincipallist à la variable lngIDCat
    SQL = "SELECT idFactory, FactoryName, idPrincipal FROM Factory WHERE idPrincipal =" & lngIDCat & " ORDER BY FactoryName"
    '' Construit la chaîne SQL avec le principal concernée
    idFactorylist.RowSource = SQL
 
End Sub
 
Private Sub idPrincipallist_AfterUpdate()
    Me.FillFactory
    '' Affecte la chaîne SQL à la liste des factories
    idFactorylist.Enabled = True
    '' Déverrouille la liste des factories
    idFactorylist.SetFocus
    '' Donne le focus la liste des factories
End Sub
Et puis magie, ça marche!!!

Mais malgré tout ça aurait dû aussi marcher avant je pense, c'est un peu redondant de mettre idPrincipal et idFactory encore une fois dans une autre table...

Merci encore à toi bernardmichel pour ton aide.

J'ai aussi résolu mon second problème, que je n'avais pas vraiment regardé étant concentré sur mon premier, qui était en fait une étourderie, je n'avais tout simplement pas appliqué le bon contrôle à ma liste de choix des documents, normal donc que ça ne marche pas (-___-")
Alialyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 13h36   #13
Membre Expert
 
Avatar de bernardmichel
 
Inscription : janvier 2004
Messages : 985
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 985
Points : 1 028
Points : 1 028
Envoyer un message via MSN à bernardmichel Envoyer un message via Skype™ à bernardmichel
Très content que tu aies résolu ton problème. N'oublies pas STP de mettre "Résolu" et bonne journée à toi !
bernardmichel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h00.


 
 
 
 
Partenaires

Hébergement Web