IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

[Article ] Concevoir une liste qui filtre les enregistrements selon {}


Sujet :

Access

  1. #21
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Met ton projet MDB en PJ (ZIP) ; je vais regarder pour t'aider.
    P.S. fais en sorte qu'il n'y ait que ce qui concerne le tuto ; pas de données confidentielles.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  2. #22
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 109
    Points : 78
    Points
    78
    Par défaut
    Je vous remercie mais comme il restait encore trop d'erreurs à la mise en pratique du tuto, j'ai opté pour une autre solution et ai décidé d'étudier directement le code sans chercher à voir ce que cela donnait.

    J'ai appris beaucoup de choses.
    Merci encore.

  3. #23
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 855
    Points : 581
    Points
    581
    Par défaut
    Bonjour,

    Superbe ce code !

    Je l'ai transposé sans trop de difficultés à d'autres listes que des codes postaux/villes, et sans ajout de données dans la table.

    Une petite remarque à propos de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                    'Sinon la variable s'incrémente et prend le caractère tapé
                    m_strCurrentChars = m_strCurrentChars & Chr(KeyAscii)
    quand un utilisateur ajoute un caractère, ce n'est pas forcément à la fin. Cela peut être au début ou au milieu et l'incrémentation de la variable m_strCurrentChars ne prend pas en compte cela.

    idem pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                    'Si on appuie sur Backspace alors on retire un caractère
                    On Error Resume Next
                    m_strCurrentChars = Left(m_strCurrentChars, Len(m_strCurrentChars) - 1)
    le caractère retiré est toujours le dernier.

    Il faudrait, soit interdire ces cas de figure, soit les gérer. Y-a-t-il une raison particulière pour ne pas prendre la valeur complète de la chaîne contenue dans txtLookup ? je n'arrive d'ailleurs pas (et c'est peut-être la raison?) à récupérer cette valeur par :J'obtiens une valeur Null

  4. #24
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Citation Envoyé par argyronet Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetListOfCityProperties SQL, CPT_TOWN_COLWIDTH
    Que vaut SQL dans ton code ?
    Si tu écris que tu as bien tout copié/collé je n'ai pas dans mon tuto posé de SQL en guise de variable mais une constante nommée TOWNCP_QUERY qui correspond à la requête qry_LBOListTownsCP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT IDPostalCode, Town, PostalCode
    FROM TBLPostalCodes
    ORDER BY Town;
    N'importe comment tu n'es pas loin de la solution mais je ne peux pas être dans ton ordi et tu dois trouver ce qui manque, donc être un peu moins pressé que ça marche et comprendre pourquoi ça ne marche pas...

    Pourtant Argy, dans la foncton UpdateTownList, il y a bien du code SQL dans le VBA. Code qui est affecté à une variable nommée SQL

  5. #25
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 24
    Points : 21
    Points
    21
    Par défaut
    Bonjour,
    N'oubliez pas, le premier qui arrive à avoir un code qui tourne, fait passer aux autres qui galèrent depuis un moment !!!

    Merci à TOFALU de prendre un peu notre défense

  6. #26
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Humm, je ne comprends plus trop le file de la discussion...

    Est-ce à dire qu'aucn d'entre vous avez réussi à mettre en place ce tutorile dans votre appli ?
    N'ayant pas eu de retour de macakou99 et bebeul, je me suis dit que ça tournait.

    Où en êtes vous ?


    Daejung, non, m_strCurrentChars ne prends pas en compte l'ajout dans la chaîne puisque l'on est censé écrire au fur et à mesure.
    La zone se comporte un peu comme un LB_FIND_STRING de l'API SendMessage(). Enfin c'est le but.
    Un adaptation est sans doute nécessaire sur ce point mais en tout état de cause sir des caractères sont tapés, seul la bonne occurrence matchera et retournera des enregistrements corespondants.

    Quant à Me.txtLookup.Value, c'est lui qui régit le contenu de la clause WHERE finale.
    Si tu veux mettre des règles da saisie, il faut prévoir celles-ci avant que se lève l'événement KeyPress().

    L'objectuf du tuto est démonstratif ; pour les cas spécifiques, il faut adapter.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  7. #27
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Honnêtement, je ne vois pas où vous bloquez au point que cela ne fonctionne pas du tout. Je viens de reprendre pas à pas et pour peu de nommer les contrôles comme indiqué, il n'y a pas de raison que cela ne fonctionne pas. En tout cas, chez moi, cela fonctionne sans le moindre problème.

    Juste dans

    Les lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Me.labelTownSelected1.Caption = strCurrentSelection
        Me.labelTownSelected2.Caption = labelTownSelected1.Caption
    peuvent être retirées si vous n'avez pas créé d'étiquettes recevant la valeur saisie.

    Par contre Argy, lorsque je recherche des noms comme CHARNAY LES MACON, cela match sur CHARNAY, CHARNAY<espace>, mais plus sur CHARNAY L

  8. #28
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Ah... ben tu vois qu'il y a des erreurs...
    Quelle idée d'habiter un patelin pareil

    Bon, je reviens en mode EDIT, il doit y avoir une explication...
    Merci Tof

    [EDIT]
    Donc oui Tof, il y avait bien une tite boulette...
    Il faut supprimer la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                m_strCurrentChars = Trim$(Replace(m_strCurrentChars, vbNullChar, vbNullString))
    et aussi pour le fun car l'astérique n'est jamais visible et selon la position du curseur, on ajoute ce bloc en fin de procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        'Si la zone ne contient que * on efface la variable (cas de KeyAscii = 8)
        If Len(m_strCurrentChars) Then
            If (Asc(Left$(m_strCurrentChars, 1)) = 42) And (Len(m_strCurrentChars) = 1) Then
                m_strCurrentChars = vbNullString
            End If
        End If
    Le tutoriel a été mis à jour en conséquence.
    Voici en image ce que ça donne en live.


    [/EDIT]

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  9. #29
    Membre habitué Avatar de texas2607
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 344
    Points : 159
    Points
    159
    Par défaut
    Salut à tous,
    pour reprendre cette discussion de mon coté tout fonctionne nickel.
    Je voulais juste faire une adaptation mais je tourne en rond.
    En effet, impossible d'intercepter la touche "DEL" avec KeyAscii... Le cas de figure est si l'utilisateur sélectionne la totalité des caractères mis dans la zone de texte et par la suite il les efface avec "Del" alors la variable m_strCurrentChars ne change pas et dispose toujours des caractères tapés auparavant.

    Il y à t'il un moyen de "corriger" ceci ?

    D'avance merci
    Fred
    Loi des Évolutions synchronisées : Les logiciels deviennent de plus en plus lent, et ceci plus vite que le hardware ne devient plus rapide.

  10. #30
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Le problème est que la touche DEL est couplée au point (.) en ASCII et donc, même si on peut l'intercepter via le KeyAscii comme le KeyUp, on récupère le code 46.

    Du fait que l'on est jamais censé insérer un point dans le nom d'une commune, tu peux sans doute jouer là-dessus...

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  11. #31
    Membre habitué Avatar de texas2607
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 344
    Points : 159
    Points
    159
    Par défaut
    Bonjour et merci de ta réponse.
    Je vais effectivement voir comment jongler la dessus. Je ferais un retour ici même, cela pourra peut être en aider d'autres.

    Merci,
    Fred

    Edit :
    En fait j'ai rajouté ces lignes sur le KeyDown :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Postal_KeyDown(KeyCode As Integer, Shift As Integer)
    Select Case KeyCode
     
    Case 8, 20, 48 To 57, 96 To 105
        'Autorise Back, Capslock, numériques
        Exit Sub
     
    Case Else
            KeyCode = 0
    End Select
    End Sub
    A première vu ca marche.
    -> Touche Del inactive, Sélection de l'ensemble des caractères interdit (obligation d'utiliser BackSpace).... et autorisations uniquement sur les numériques
    Loi des Évolutions synchronisées : Les logiciels deviennent de plus en plus lent, et ceci plus vite que le hardware ne devient plus rapide.

Discussions similaires

  1. Concevoir une liste qui en alimente une autre
    Par argyronet dans le forum IHM
    Réponses: 17
    Dernier message: 14/08/2020, 17h21
  2. concevoir une liste qui dépend d'une autre
    Par doomi26 dans le forum Access
    Réponses: 3
    Dernier message: 27/02/2014, 09h27
  3. Réponses: 13
    Dernier message: 06/02/2013, 14h53
  4. Réponses: 8
    Dernier message: 23/06/2011, 17h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo