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 :

Suppression enreg en cours impossible


Sujet :

Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut Suppression enreg en cours impossible
    Salut,
    je tombe sur un problème qui doit être simple à résoudre mais je ne vois pas de solut...

    J'essai de supprimer l'enregistrement en cours de mon Formulaire lié avec le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
        Private Sub cmdSoumettre_Click()
    Dim sReponse As String
     
        'Controle saisie, SI OK écrire dans les tables controle
        If fnControleSaisie = True Then
            sReponse = MsgBox("Etes-vous sûr de vouloir soumettre le rapprochement saisie ? Une fois soumis vous n'aurez plus accès au rapprochement", vbYesNo, "Soumettre le rapprochement")
            If sReponse = vbYes Then
            'Insérer dans les tables controles
            'Insérer dans RAP ENTETE controle
            Application.CurrentDb.Execute "INSERT INTO [Rap - Entete Controle] SELECT * FROM [Rap - Entete] WHERE ref_numero= " & ref_number.Value & " and ref_nom='" & ref_name.Value & " ';"
            'Insérer dans Rap - Ligne Comptable Controle
            Application.CurrentDb.Execute "INSERT INTO [Rap - Ligne Comptable Controle] SELECT * FROM [Rap - Ligne Comptable] WHERE ref_numero= " & ref_number.Value & " and ref_nom='" & ref_name.Value & " ' and numero_ligne_comptable='" & Forms![heading]![Line_accountant sous-formulaire1].Form![ref_ligne].Value & "';"
            'Insérer dans Rap - Transaction Controle
            Application.CurrentDb.Execute "INSERT INTO [Rap - Transaction Controle] SELECT * FROM [Rap - Transaction] WHERE ref_numero= " & ref_number.Value & " and ref_nom='" & ref_name.Value & " ' and Transaction_numero='" & Forms![heading]![Deal_ss_form].Form![Ref_transaction].Value & "' and nom_evenement='" & Forms![heading]![Deal_ss_form].Form![lstNom_Evenement].Value & "' and application='" & Forms![heading]![Deal_ss_form].Form![lstNomAppli].Value & "';"
     
            'Supprimer l'enregistrement des tables locales
            On Error GoTo Err_Suppression
                DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
                DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
            End If
        End If
     
        'Quitte
        Exit Sub
     
    Err_Suppression:
                MsgBox Err.Description
    End Sub
    Mais j'obtiens l'erreur suivante:
    La commande ou l'action supprimer enregistrement n'est pas disponible pour l'instant.

    Ce code se trouve dans une procédure evenementielle d'un bouton click.
    Merci

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2003
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2003
    Messages : 116
    Points : 146
    Points
    146
    Par défaut
    Ou est Err_suppression?

    en cas d'erreur, tu renvoie vers une partie de la procédure qui n'existe pas.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par ptitdragon_eric
    Ou est Err_suppression?
    Désolé, j'avais pas copier coller toute la fonction.
    Dis moi ce que tu en penses, pourquoi me dit il que c'est pas dispo pour l instant ?

    Ce qui est bizzare, c'est que quand je crée un bouton de suppression avec l'assistant ça marche ... Mais moi je ne veux pas de boutons, je veux pouvoir supprimer l'enregistrement après les actions SQL que j'effectue dans le code.
    Dites moi si c'est pas clair.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    Alors ce qui encore plus bizzare, c'est que quand je teste avec le bouton de suppresion crée par l'assistant access, et que je change son nom d'objet ainsi que le nom de la procédure evenementielle qui lui est rattaché, j'obtiens cette satané erreur....
    Ya un truc qui m'échappe. Après avoir chercher dans les tutoriels + Faq + Forum je ne vois pas...
    Si quelqu'un aurait la gentillesse de m'aider...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    L'erreur d'exécution est la 2046 ...

    j'ai vraiment pas l'impression que quelqu'un a envie de m'aider

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    Dans un élan de desespoir ....

  7. #7
    Expert éminent sénior
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    salut,

    le désespoir t'envahi vite, 10 min entre chaque message, premier message il y a deux heures...

    Les requêtes insertion ajoutent-elle des enregistrements dans la même table que celle sur lequel est basée le formulaire?
    Peut-être que les insertions décalent les lignes et qu'acces s'y perd.

    Sinon au passage n'utilise pas currentdb plusieurs fois, ça crée une nouvelle instance de la base à chaque fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim db as database
    set db = currentdb
    et tu utlises db à chaque fois ça peut éviter des problèmes.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par Arkham46
    Les requêtes insertion ajoutent-elle des enregistrements dans la même table que celle sur lequel est basée le formulaire?
    Peut-être que les insertions décalent les lignes et qu'acces s'y perd.
    Non, le formulaire est basé sur les tables Rap - Transaction, Rap - Ligne Comptable, Rap - Entete

    Je ne fais que un SELECT sur ces tables durant mes INSERT.


    J'ai mis une seul variable db, mais rien ne change .. Toujours ce message d'erreur à la c**

    Merci à toi

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 424
    Points : 20 002
    Points
    20 002
    Billets dans le blog
    67
    Par défaut
    Salut,

    et avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim rs As DAO.RecordSet
     
    Set rs = Me.RecordsetClone
    rs.Delete
    Me.Requery
    @+

  10. #10
    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 : 41
    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
    Oui, il faut abandonner les doMenuItem, ce n'est pas du tout portable.

    utilise DAO

    http://warin.developpez.com

    Tu verras notamment qu'il est préférable d'utiliser un objet database plutot que de faire X appel à currentdb

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    Très interessante cette propriété recordsetclone, je suis bien content de la connaitre et de pouvoir à présent utiliser les Recordset DAO.

    Merci à vous 2

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    Je tiens cependant à préciser que la propriété RecordsetClone renvoi le recordset du formulaire mais ne pointe pas sur l'index correspondant à l'enregistrement en cours dans le form. En effet, la propriété absoluteposition du recordset est à 0 après l'affectation de recordsetclone.
    Il faut donc faire le code suivant pour pointer sur l'enregistrement en cours dans le formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                    Set rs = Me.RecordsetClone
                    rs.AbsolutePosition = Me.CurrentRecord
                    rs.Delete
                    Me.Requery

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    Bonjour,
    je recontre un gros problème que je n'arrive pas à résoudre.

    Ci-dessus je supprime un enregistrement. Le problème est qu'après cette suppression la table est vide et Access m'embete car il ne peut mettre à jour le formulaire.
    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
                'Supprimer l 'enregistrement des tables locales
                On Error GoTo Err_Suppression
                    'Suppression de l'enregistrement de RAP ENTETE (la suppression des enregistrements connexe est automatique).
                    Set rs = Me.RecordsetClone
                    rs.Delete
                    rs.AddNew
                    rs.Fields("ref_nom") = fnsDonneValeurParam("PEOPLE")
                    rs.Update
                    Me.Requery
     
                    fnKillRS rs
     
    Err_Suppression:
                MsgBox Err.Description
    En fait ce que j'essai de réaliser, je supprime l'enregistrement en cours, la table est alors vide, ensuite je recrée un enregistrement et quand je tente de mettre a jour le fomrulaire avec requery, mais a ce moment une errur se declenche avec le message aucun enregistrement en cours ...
    Pouvez vous me dire pourquoi svp?
    Merci beaucoup

  14. #14
    Expert éminent sénior
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Salut,

    Tu rajoutes l'enregistrement dans le clone du recordset, je ne suis pas sûr que le recordset du formulaire soit mis à jour en même temps.
    Et si tu travailles directement sur me.recordset c'est pas mieux?

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par Arkham46
    Salut,

    Tu rajoutes l'enregistrement dans le clone du recordset, je ne suis pas sûr que le recordset du formulaire soit mis à jour en même temps.
    Et si tu travailles directement sur me.recordset c'est pas mieux?
    OK voila ce que j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
                On Error GoTo Err_Suppression
                    'Suppression de l'enregistrement de RAP ENTETE (la suppression des enregistrements connexe est automatique).
                    Me.Recordset.Delete
                    Me.Recordset.Requery
     
                    'Création nouveau rapprochement
                    fnNewRecord
    Err_Suppression:
                MsgBox Err.Description
     
     
     
    Private Sub fnNewRecord()
     
        'Permettre l ajout
        Me.AllowAdditions = True
        'Placer le form sur un nouvel enreg Et forcer la ref name a la valeur contenu dans la tabel des parameters
        DoCmd.GoToRecord acDataForm, "heading", acNewRec
     
        Me.ref_name.Value = fnsDonneValeurParam("PEOPLE")
        Me.ref_name.DefaultValue = Me.ref_name.Value
        Me.ref_name.Locked = True
     
        Me.Requery
     
        'Boucler l'ajout
        Me.AllowAdditions = False
    End Sub
    A présent ça marche une fois, mais pas deux je commence a devenir fou
    En fait, j'execute le code ci-dessus, tout se passe correctement, l'enregistrement en cours est supprimé et la procédure fnNewRecord cré un nouvel enregistrement.
    je modifie des données sur l'enregistrement crée, et je ré execute le code ci-dessus et la (toujours au bout de la deuxieme fois) je tombe sur l'erreur suivante a la ligne requery : Cette méthode a été annulé par un objet associé

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    Est-ce que quelqu'un pourrait me dire si la manière dont je supprime un enregistrement et la manière dont j'en recré un est la bonne svp car la je suis pommé..... Merci

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    bien je crois que je viens de comprendre ce qui me joue des tours.

    En fait je saisie un champs texte de mon formulaire et ensuite je click directement sur le bouton qui execute le code que j'ai mis ci-dessus.
    Quand je fait cette action j'ai le problème que je décrit.

    Par contre quand je saisie dans mon champs texte et que avant de clicker sur le bouton je m'amuse a faire d'autre click sur le form (histoire qu'il enregistre ce que je viens de saisir dans le champs texte) et que seulement ensuite je click sur le bouton qui execute le code ci dessus, ça marche !!!

    Donc il me faut une fonction qui enregistre dans la table (car access n'est pas très clean la dessus) avant que j'execute le code ci deussus.

    Merci

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 304
    Points : 94
    Points
    94
    Par défaut
    j'ai trouvé, pour forcer l'enregistrement il faut faire :

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 25/11/2009, 20h01
  2. Suppression d'un enregistrement Impossible
    Par Bayoro dans le forum Forms
    Réponses: 22
    Dernier message: 05/05/2008, 22h35
  3. Suppression d'une vue impossible
    Par engi dans le forum SQL
    Réponses: 4
    Dernier message: 04/06/2007, 17h48
  4. Suppression d'un paquet impossible
    Par Michaël dans le forum Debian
    Réponses: 5
    Dernier message: 31/10/2005, 20h44
  5. [VBA-A] Problème Suppression enreg en cours
    Par _developpeur_ dans le forum Access
    Réponses: 2
    Dernier message: 17/10/2005, 21h08

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