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 03/05/2011, 16h19   #1
Invité régulier
 
Inscription : mai 2006
Messages : 29
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 29
Points : 8
Points : 8
Par défaut Recheche multicritère Complément

Bonjour,

J'ai avec succès le tutiriel de Caféine sur le recherche multicritère avec le complément de modification par double clic.

Lorsque je double clic sur le record, mon formulaire de modification s'affiche sur le premier enregistrement ?

Voici mon code du formulaire de recherche sur double clic:
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
30
Dim stDocName As String
    Dim stLinkCriteria As String
    Dim Y As String
 
    Y = Me.lstResults.Column(1)
 
    stLinkCriteria = "[IdEtudiant] = " & Me.lstResults
 
Select Case Y
    Case 1
        stDocName = "Etudiant_QC"
 
    Case 2
        stDocName = "Etudiant_CA"
 
    Case 3
        stDocName = "Etudiant_EX"
 
    Case 4
        stDocName = "Etudiant_SP"
 
End Select
 
    'Ouvre le formulaire sur l'enregistrement sélectionné
    DoCmd.OpenForm stDocName, acNormal, , stLinkCriteria
 
    Me.Form.Visible = False
 
Exit_lstResults_DblClick:
    DoCmd.Close acForm, "Rechercher"
J'utilise un Case pour choisir le bon formulaire.

Le code sur le formulaire (Form_Open) de modification est:
Code :
1
2
3
4
5
6
7
Select Case Forms("Menu").ActiveControl.Name
 
Case "BtnRech"
    ' Si ouverture par le formulaire de recherche
    ' Active les champs pour modifier les données
     Call ChampsAct
     Call NavigDes

Mon formulaire sert aussi de pour la création et la modification. Les Sub ChampsAct et NavigDes servent respectivment à activer les champs et à désactiver les boutons de navigation ?

C'est surement un petit BUG mais je n'y vois plus rien !!!

GAGPIE
gagpie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 19h12   #2
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 623
Points : 11 623
Bonjour,

Il faut positionner un point d'arrêt dans ton code pour savoir ce que vaut column(1).

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 14h43   #3
Invité régulier
 
Inscription : mai 2006
Messages : 29
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 29
Points : 8
Points : 8
Bonjour LouFab,

La colonne(1) vaut selon l'enregistrement choisi 1 à 4 ce qui correspond au formulaire à ouvrir en modification.

Cela fonctionne bien. Cependant, le formulaire ouvre sur le premier enregistrement et non sur l'enregistrement sélectionné dans la RECHERCHE.

Sur le load du formulaire en modification, je fais un Select Case sur le control actif (en l'occurence le bouton qui ouvre le formulaire Rechercher).
Code :
1
2
3
4
5
Case "BtnRech"
    ' Si ouverture par le formulaire de recherche
      DoCmd.ApplyFilter , "[Etudiant_Type] = '2'"
      Call ChampsAct
      Call NavigDes
J'applique un filtre sur la base de donnée et active les champs pour modifier les données.

Par défaut, les champs son désactivés lors de l'ouverture du formulaire.


Note: J'ai fait le même processus de recherch cette fois sur un autre formulaire qui afficher seulement les enregistrements sans pouvoir les modifier et ça fonctionne. Il n'y a rien de spécial lors de l'ouverture du formulaire.


Précision: Lorsque j'ouvre mon formulaire en modification, c'est ma table principale qui s'ouvre filtrer ( qui correspond à Column(1) dans Rechercher)
Par contre, l'autre formulaire de consultation (dans mon deuxième essaie) c'Est une requête filtré et là ça fonctionne!!!

Mystère et boule de gomme !!!


GAGPIE
gagpie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 21h13   #4
Invité régulier
 
Inscription : mai 2006
Messages : 29
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 29
Points : 8
Points : 8
Par défaut Suite..

Bonjour,

Je suis encore sur le même problème.

Mon argument me donne bien la valeur de lstResults qui contien le numéro de mon enregistrement.

Code :
stLinkCriteria = "[IdEtudiant] =" & Me.lstResults
La commande pour ouvrir le formulaire ouvre bien le formuilaire, mais sur le premier enregistrement.

Code :
1
2
 stDocName = "Etudiant_QC"
DoCmd.OpenForm stDocName, , , stLinkCriteria
J'utilise le même concept cette fois un autre formulaire et ça fonctionne !!!

Code :
1
2
 stDocName = "Etudiant_QC_Consult"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Donc, Etudiant_QC a pour source la table Etudiant et Etudiant_QC_Consult a pour source une requête.

Sur Form_Load pour Etudiant_QC, je fais un select case sur le control actif, c'est à dire le bouton qui ouvre le formulaire recherche pour que le formulaire soit en mode modification.

Sur Form_Load pour Etudiant_QC_Consult, il n'y a rien puisque la modification n'est pas permise.



Est-ce que ça vous dit quelque chose !!!

Merci à l'avance pour vos pistes de solutions

GAGPIE
gagpie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 09h49   #5
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 623
Points : 11 623
Je suis dans la nuit.

Si tu désactives temporairement le code Onload, est-ce que ça fonctionne ?
Si oui c'est que le code ne fait pas ce qu'il est censé faire.
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 14h53   #6
Invité régulier
 
Inscription : mai 2006
Messages : 29
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 29
Points : 8
Points : 8
Bonjour Loufab,

Oui, j'y avais déjà pensé et ça ne fonctionne toujours pas...

J'ai enlevé tout les évènements de Form et j'ouvre le formulaire sur un nouvel enregistrement.

Mon formulaire contient entre autre des champs (nom, prenom, adresse, etc)
J'ai un contrôle onglet qui vérifie si le champs de chaque onglet est rempli et affiche l'onglet en question. Bien sur une seule option est possible.

Je vais essayé de rendre mon formulaire le plus simple possible en enlevant des contrôle et voir ce qui se passe.

..... J'ai enelvé tout code VBA dans mon formulaire et le résultat est qu'il m'affiche un nouvel enregistrement !!!

Y-a-t-il dans le formulaire un endroit auquel je n'aurais pas pensé de regarder ?


À suivre ....

GAGPIE
gagpie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 15h48   #7
Invité régulier
 
Inscription : mai 2006
Messages : 29
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 29
Points : 8
Points : 8
Bon bien après avoir tout enelvé, je viens de remarquer que lorsque j'ouvre mon formulaire avec aucun VBA, il n'a aucune tablelié et aucun enregistrement visible?? Ais-je perdu la référence à ma table ??

Pourtant mes champs proviennent bel et bie nde ma table Etudiant ?


GAGPIE
gagpie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 16h08   #8
Invité régulier
 
Inscription : mai 2006
Messages : 29
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 29
Points : 8
Points : 8
RE:RE:RE:RE:REBonjour

Je crois que c'est mon formulaire qui perd sa liasion à la table principale (Etudiant).

Lorsque j'utilise l'assisant pour créer un nouveau formulaire avec la même table ça fonctionne.

Comment vérifier ou refaire la liaison avec la table ?

Merci


GAGPIE
gagpie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 17h33   #9
Invité régulier
 
Inscription : mai 2006
Messages : 29
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 29
Points : 8
Points : 8
Par défaut RecordSource

Bonjour,

J'essaie de passer le numéro d'identifiant par la propriété RecordSource.

J'obtiens un enregistrement vide.

Je regarde dans les propriété du RecordSource et je voit bien le numéro correspondant de l'identifiant.

Je récupére le code SQL de la requête pour voir si ça fonctionne et ça exécute la requête correctement.


Pourquoi cela ne fonctionne pas ?

Voici mon code

Code :
1
2
3
4
5
6
7
8
9
   IdEtud = Me.lstResults
 stDocName = "Etudiant_CA1" ' mon formulaire de test
SqlA = "SELECT Etudiant.IDEtudiant, Etudiant.Etudiant_Date, Etudiant.Etudiant_Type, Etudiant.Etudiant_Nom, Etudiant.Etudiant_Prenom," & vbCrLf & _
           "Etudiant.Etudiant_Adr, Etudiant.Etudiant_Ville, Etudiant.Etudiant_CP, Etudiant.Etudiant_Tel, Etudiant.Etudiant_Memo," & vbCrLf & _
           "Etudiant.Charl_Code, Etudiant.B1_1_El_Ne_Ca, Etudiant.B1_B_Par_Res_Qc, Etudiant.B1_C_Orph_Res_Qc, Etudiant.B1_D_El_Res_Qc_Par_Q," & vbCrLf & _
           "Etudiant.B1_E_El_QC_12M, Etudiant.B1_F2_EL_Qc_3M, Etudiant.B1_G_EL_Qc_3A5, Etudiant.B1_H_Conj_Res_Qc, Etudiant.Anx3_Preuve1, Etudiant.Anx3_Preuve2," & vbCrLf & _
           "Etudiant.Etudiant_Memo FROM Etudiant WHERE (((Etudiant.Etudiant_Type)='2') AND ((Etudiant.IDEtudiant) = " & IdEtud & "));"
 
        Forms(stDocName).RecordSource = SqlA
gagpie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 09h29   #10
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 623
Points : 11 623
En effet c'est mytérieux.

Tu n'aurais pas modifié la propriété du formulaire : Entrée données ?
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 19h28   #11
Invité régulier
 
Inscription : mai 2006
Messages : 29
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 29
Points : 8
Points : 8
Par défaut Euréka !!!

Bonjour,

J'ai trouvé le problème !! C'est dans les propriétées du Formulaire:

Entrée de données = Non ( Il était à Oui)



Merci ça pourra surement servir à d'autres .


GAGPIE
gagpie 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 10h38.


 
 
 
 
Partenaires

Hébergement Web