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 :

Add et delete de record qui s'affichent mal [AC-2003]


Sujet :

VBA Access

  1. #1
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut Add et delete de record qui s'affichent mal
    Bonjour,
    question sans doute dèjà 1000 fois posée, mais désolé je ne trouve pas la parade.

    Le formulaire principal de mon application affiche des "Evènements", basés sur une table Events.

    Via un formulaire appelé en cascade, j'importe des évènements complémentaires dans cette table Events, après les avoir effacés au préalable s'ils existent.

    Le code fait donc des Delete des anciens records :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        'Delete Linked Events
        Entry_Events.FindFirst (Criteria_Events)
        While Not Entry_Events.NoMatch
            Entry_Events.Delete
            Entry_Events.FindNext (Criteria_Events)
        Wend
    et des ajouts de nouveaux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    R_Imports.FindFirst (Criteria_Imports)
    While Not R_Imports.NoMatch
            R_Events.AddNew
            '....
            R_Events.Update
          End If
        R_Imports.FindNext (Criteria_Imports)
    Wend
    En fin de proc je ferme bien tous les recordset et mets bien tous à Nothing.

    Mon problème : Quand je reviens sur mon form principal "Events", les record supprimés apparaissent tous avec #delete dans les champs et les nouveaux records ne sont ni comptabilisés, ni visibles.
    La méthode requery ne donne rien.
    Fermer et rouvrir le formulaire ne donne rien.
    Fermer l'application et la rouvrir rectifie l'ensemble.

    Comment puis-je faire cela par code sans sortir ?
    Faut-il prendre des précautions pour ne pas être dans le formulaire Event sur un record qui va être supprimé, comme par exemple fermer le formulaire et le rouvrir après l'import ?

    Merci d'avance.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 178
    Points : 175
    Points
    175
    Par défaut
    Bonjour,

    As tu essayé de presser la touche F5 ? auquel cas si cela fonctionne il me semble que l'on peut faire quelque chose d'équivalent avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.RunCommand.acCmdRefresh
    A vérifier je ne suis pas sur !

    Bon courage

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2003
    Messages : 53
    Points : 73
    Points
    73
    Par défaut
    Bonjour,

    Juste une petite question toute bête... mais peut être pas...

    Ton formulaire est-il directement basé sur la table ou sur un recordset de la table?? Si tel était le cas, il te faudrait recharger le recorset sous-jacent de ton formulaire events afin qu'il prenne en compte les modifications effectuée par le code.

    Par contre ce qui cloche dans ce raisonnement est le fait que de fermer et re-ouvrir le formulaire events ne donne rien. Le recordset est pourtant rechargé à ce moment.

  4. #4
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour et merci pour vos réponses.

    @JeanYves70.
    J'ai testé F5, mais cela ne donne rien.

    @GCUSSE
    Le form était basé sur la table.
    J'ai crée un SQL et l'ai mis à la place comme source.

    Fermer et ouvrir le formulaire corrige le problème.

    Je voudrais cependant faire ce rafraichissement en automatique par code VBA. Est-ce possible ?
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2003
    Messages : 53
    Points : 73
    Points
    73
    Par défaut
    Bon, c'est déjà une bonne nouvelle.... l'update se réalise. On ne solutionne pas mais on contourne... donc c'est fonctionnel.

    Pour le rafraichissement, as tu re-essayé le requery? Il devrait fonctionner car il va recharger le recordset.

    A la sortie du formulaire d'import tu lui donne un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![NomFormulairePrincipal].requery

  6. #6
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Absolument.

    Je ne faisais pas le .requery de la bonne manière.

    J'ai fait comme tu indiques après les .delete et après les .add.

    C'est impec.

    Merci beaucoup.

    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 178
    Points : 175
    Points
    175
    Par défaut
    Plutot que de baser le formulaire Events directement sur la table et donc à l'ouverture, pourquoi ne pas baser la source sur l'activation de celui-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Form_Activate()
        Me.RecordSource = "SELECT [Events].* FROM [Events];"
    End Sub
    Je pense qu'il serait actualisé à chaque "activation" - A voir !

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2003
    Messages : 53
    Points : 73
    Points
    73
    Par défaut
    pour le requery .... ca arrive même aux meilleurs

    Maintenant si tu veux optimiser, tu n'es pas obligé de faire le requery juste après l'addnew et le delete, mais juste quand tu quittes ton formulaire d'import ou mieux uniquement lorsque que tu reactives ton formulaire principal cf JeanYves70 (avec comme défaut sur le declenchement sur activation, c'est que le requery s'effectuera même si tu n'as rien modifié).

    Bref, il ne reste plus que du fignolage...

    N’empêche, je n'arrive toujours pas à comprendre pourquoi cela ne fonctionnait pas lorsque le forms principal était basé sur la table.... un mystère de plus dans ma connaissance d'access...

  9. #9
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Re,

    merci pour ses suggestions.

    Je me permet de rester sur ma philosophie de .requery après les .delete et après les .add car,

    1) Ces 2 fonctions sont des actions/étapes bien spécifiques et distinctes de mon import (2 boutons d'actions différents).

    2) Dans le processus d'import, ce traitement de requery est ainsi transparent.

    3) Cet import est un traitement annuel alors autant le pénaliser lui plutot que chaque activate du Form principal.


    Mes connaissances d'access sont parsemées de trous, mystères et lacunes.

    Mais à plusieurs, les trous se compensent.

    Encore merci à tous les 2.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/04/2014, 04h54
  2. Menu qui s'affiche mal
    Par Tezcatlipoca dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 05/12/2012, 15h49
  3. boucle for qui s'affiche mal
    Par kate59 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 22/04/2009, 15h47
  4. [ZF 1.7] UTF-8 qui s'affiche mal
    Par Shirraz dans le forum MVC
    Réponses: 12
    Dernier message: 23/01/2009, 08h40
  5. [Application MDI] Composants qui s'affichent mal
    Par PiPo123 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 12/09/2008, 18h10

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