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 :

[VBA-A]Supprimer un enregistrement...


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 37
    Points : 19
    Points
    19
    Par défaut [VBA-A]Supprimer un enregistrement...
    Bonour à tous,
    J'essai de supprimer un enregistrement dans une table de ma bd, et voici le message d'erreur -->

    L'erreur d'exécution '2046': La command ou l'action 'SupprimerEnregistrement' n,est pas disponible pour l'instant.

    Voici le code qui cause problème:

    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
    30
    31
    32
    33
    Private Sub Supprimer_Click()
    Dim A As Integer
    If IsNull(Me!Nom_emp) Then
       MsgBox "Vous devez sélectionner un employé!"
       Exit Sub
    End If
    A = DCount("*", "rCompteSuppEmpl")
    If A > 0 Then
       MsgBox "Suppression impossible, des enregistrements sont liés à cet employé!!"
       Exit Sub
    End If
    A = MsgBox("Voulez-vous supprimer cet enregistrement? ", 16 + 4, " ")
    If A = 6 Then
       DoCmd.SetWarnings False
       DoCmd.Echo False
       DoCmd.RunCommand acCmdSelectRecord
       If Me.NewRecord = True Then
          DoCmd.RunCommand acCmdUndo
       Else
       ' *********** L'erreur se produit ici *************
          DoCmd.RunCommand acCmdDeleteRecord
       ' ***********                         *************
       End If
     
       DoCmd.Echo True
       DoCmd.SetWarnings True
       MsgBox "Enregistrement supprimé!"
       SendKeys "+{F9}", True
       Me!LstNomEmp = Null
    Else
     
    End If
    End Sub
    Est-ce que quelqu'un sait d'ou vien l'erreur??

    Merci à l'avance

  2. #2
    Débutant
    Inscrit en
    Juin 2003
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 108
    Points : 52
    Points
    52
    Par défaut
    est-ce que ta base access est ouverte quand tu lances ta fonction ?

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 37
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par Requin15
    est-ce que ta base access est ouverte quand tu lances ta fonction ?
    Oui, car ca marche quelques fois. C'est très bizard parce qu'on dirait que cette fonction est aléatoire; 50% du temps sa marche et l'autre 50% non, et ce avec des enregistrements exactement pareils.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je n'ai pas encore regardé mais un conseil en passant :
    Tu supprimes Dim A As Integer et tu remplaces

    A = MsgBox("Voulez-vous supprimer cet enregistrement? ", 16 + 4, " ")
    If A = 6 Then
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if MsgBox("Voulez-vous supprimer cet enregistrement? ", 16 + 4, " ") = vbyes then 'ou 6 si tu préfères
    '...
    else
    Dernière chose, tu as vu qu'entre les balises [ code ] et [ /Code ] la mise en couleur ne fonctionne pas et perturbe ton code (je nettoie)

    A+

  5. #5
    Débutant
    Inscrit en
    Juin 2003
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 108
    Points : 52
    Points
    52
    Par défaut
    j'avais eu ce problème.
    tout fonctionnait dès lors que la base en question est ouverte.

    Pour pallier ce problème, j'ai du repenser mon organisation :

    avant j'appellais des macros et requêtes stockées dans la base access (avec docmd.run...)

    Maintenant, j'ai tout mis dans mon code VB et ça fonctionne même si la base est fermée :

    exemple :
    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
     
    Dim SCnn As ADODB.Connection
    Dim strSQL As String
    Dim mRS As ADODB.Recordset
     
    'j'ouvre ma connexion
    OpenAccessConnection SCnn
     
    'ma requete
    strSQL = "SELECT * from maTable;"
     
    'j'ouvre un recordset (exécution de la requete -valable aussi pour un delete)
        Set mRS = New ADODB.Recordset
        mRS.Open strSQL, SCnn, adOpenKeyset, adLockReadOnly 'en lecture ici
     
    ' et après tu fais ce que tu veux avec le recordset si tu en as besoin (uniquement dans le cas d'un select en fait)
    Pour moi cela fonctionne bien.

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 37
    Points : 19
    Points
    19
    Par défaut
    VB est encore nouveau pour moi...

    Que représente ADODB dans ton exemple?

Discussions similaires

  1. [VBA Access] supprimer les enregistrements/remplir table/dll
    Par genirette dans le forum VBA Access
    Réponses: 1
    Dernier message: 25/01/2008, 09h23
  2. [VBA]supprimer l'enregistrement d'une table
    Par ludovicparis dans le forum Access
    Réponses: 3
    Dernier message: 06/04/2007, 13h41
  3. Réponses: 8
    Dernier message: 13/04/2006, 15h22
  4. [LG]supprimer un enregistrement dans un fichier
    Par Marcus2211 dans le forum Langage
    Réponses: 10
    Dernier message: 17/11/2003, 00h59
  5. [VB6] Supprimer un enregistrement dans une ListView ??
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/11/2002, 09h37

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