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

VBA Access Discussion :

L'ajout d'un "order by" fait que DoCmd.GoToRecord fonctionne mal


Sujet :

VBA Access

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut L'ajout d'un "order by" fait que DoCmd.GoToRecord fonctionne mal
    Bonjour,

    j'ai une liste déroulante qui ajoute son contenu dans une table temporaire qui s'affiche dans le détail. Elle fonctionne bien.
    Je change la requête de cette liste déroulante (nommée "cboCtrlAajouter")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT sys_controle.CTL_DESCRIPTION FROM sys_controle;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT sys_controle.CTL_DESCRIPTION FROM sys_controle ORDER BY sys_controle.CTL_DESCRIPTION;
    en y ajoutant un order by car c'est nettement plus pratique.
    Et là, ça ne fonctionne plus.
    La ligne ajoutée contient "#Supprimé". Dans la table temporaire il y a bien une ligne créée mais elle est vide.
    Le code associé à la liste déroulante est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub cboCtrlAajouter_Change()
        Me.Section("Détail").visible = True
        Me.AllowAdditions = True
        DoCmd.GoToRecord acDataForm, Me.Name, acNewRec
        Me.txtControle.Value = Me.cboCtrlAajouter.Column(0)
        Me.cboBloquant.Value = "NONBLOQUANT"
        Me.cboRestitution.Value = "Aucun"
        Me.txtOrdre.Value = iOrdreAuto
        iOrdreAuto = iOrdreAuto + 1
        Me.Refresh
        Me.AllowAdditions = False
    End Sub
    Toutes les valeurs affectées par cette méthode sont vides et "#Supprimé" est affiché à la place.
    Christophe

    Pensez à mettre quand c'est le cas.

  2. #2
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    736
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 736
    Points : 1 038
    Points
    1 038
    Par défaut
    pas evident
    si tu remplaces par ... ca marche mieux ?

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Avec un Me.Requery cela fonctionne effectivement mieux mais cela n'est pas bon. Les "#suprimé" ne s'affichent pas mais la ligne est toujours vide.
    Christophe

    Pensez à mettre quand c'est le cas.

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    11 987
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 11 987
    Points : 24 540
    Points
    24 540
    Par défaut
    Bonjour,

    Tu ne sauves jamais tes enregistrements lorsque tu les crée en VBA ?

    Un refresh ou un Requery ne le fait pas. (cf F1)

    Utilises

    pour forcer la sauvegarde, ainsi tu auras un enregistrement rempli.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    J'ai remplacé le refresh par Me.Dirty = False mais cela ne change rien.
    Et je ne comprends pas pourquoi un order by dans la liste déroulante empêche l'enregistrement.
    Christophe

    Pensez à mettre quand c'est le cas.

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    11 987
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 11 987
    Points : 24 540
    Points
    24 540
    Par défaut
    Lorsque tu consultes directement la table tu as tes enregistrements ?

    Sinon pourquoi avoir supprimer le requery ou le refresh ?
    Si tu consultes l'aide sur les trois instructions (dirty, refresh, requery) tu comprendras mieux l'utilité de chacune.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Me.Dirty est à vrai car une ligne (dans tmpAction) a bien été enregistrée mais elle ne contient pas les infos.

    J'ai du mal à comprendre le fonctionnement de DoCmd.GoToRecord.
    Christophe

    Pensez à mettre quand c'est le cas.

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    11 987
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 11 987
    Points : 24 540
    Points
    24 540
    Par défaut
    Gotorecord acnewrec positionne le curseur sur ligne Nouvel Enregistrement de la table (du recordset). Celle qui est matérialisée par un *.

    Dirty a une double casquette :
    En tant que propriété il indique si l'enregistrement est en cours de modification (True) ou ne l'est pas (False)
    En tant que méthode si on le passe à True il place l'enregistrement en modification, à False il le sauve.

    Si Me.dirty est à True c'est que l'enregistrement n'est pas sauvegardé, donc il est normal que les nouvelles données n'apparaissent pas dans la table.

    Note que tout ceci est clairement expliqué dans le F1.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  9. #9
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Dirty est à vrai dans tous les cas, que l'enregistrement se fasse correctement ou non.
    Christophe

    Pensez à mettre quand c'est le cas.

  10. #10
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    11 987
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 11 987
    Points : 24 540
    Points
    24 540
    Par défaut
    Peux-tu poster ton appli ?
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  11. #11
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Le détail de l'appli est .
    Christophe

    Pensez à mettre quand c'est le cas.

  12. #12
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    11 987
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 11 987
    Points : 24 540
    Points
    24 540
    Par défaut
    Avec ce que j'ai dû reconstruire à partir du post précédent ça fonctionne parfaitement.

    Il y a quelque chose que tu as ajouté dans ton appli qui n'est pas dans ce détail.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  13. #13
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Merci. Je vais regarder ce que j'ai ajouté.
    Christophe

    Pensez à mettre quand c'est le cas.

Discussions similaires

  1. ajout automatique de guillemets aux environnements quote et quotation
    Par Malo-net dans le forum Programmation (La)TeX avancée
    Réponses: 2
    Dernier message: 14/02/2015, 14h58
  2. Quote et double quote
    Par aktos dans le forum Langage
    Réponses: 8
    Dernier message: 05/01/2007, 20h55

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