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 :

Problème de verrouillage


Sujet :

VBA Access

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 102
    Points : 56
    Points
    56
    Par défaut Problème de verrouillage
    Bonjour à tous

    Je me mets tout tout doucement au VBA d'Access ...
    Voici mon petit bout de code, honteusement pompé de ci de là ...
    La macro est déclenchée par un bouton dans un formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Btn_Formulaire1_Click()
    'Paramètres de connection
    Set Cnx = New ADODB.Connection
    Cnx.Provider = "Microsoft.Jet.Oledb.4.0"
    Cnx.ConnectionString = "E:\Mes documents\SuivisDesCadeaux.mdb"
    Cnx.Open
     
    'Zone de requête
    Dim ListFields As String
    ListFields = "TP,Paye,Beneficiaire"
    Cnx.Execute "INSERT INTO Suivis_des_coupons (TP,Paye,Beneficiaire,CodeCoupon) VALUES('" & TP_Form & "','" & Chkb_Paye & "','" & Benef & "','" & CodeCoup & "')"
    Cnx.Close
    End Sub
    La macro fonctionne bien, quand elle veut bien ...
    Lorsqu'elle arrive à Cnx.Open, il m'arrive, mais pas tout le temps , d'avoir un message d'erreur du style : "La base de données a été placée par l'utilisateur "Admin" dans un état l'empêchant d'être ouvert ou verrouillée"
    Pourtant, j'ai bien mon Cnx.Close ...
    Je ne vois pas bien d'ou ca peut venir ?? Une petite idée ???

  2. #2
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Bonjour.

    Je ne répondrais pas à votre interrogation principale.

    Je vous signale simplement qu'il ne faut pas avoir honte de copier des bouts de codes.
    C'est le début pour apprendre.

    Et puis, en général, un code copier ne fonctionne pas tel quel. Il faut l'adapter, ce qui aide à la compréhension.

    Pierre

  3. #3
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 102
    Points : 56
    Points
    56
    Par défaut
    Merci pour ces encouragements !!

    C'est vrai que rien que pour ces quelques lignes de code, il m'a fallu faire un mixte de plusieurs morceaux ...
    Et c'est d'ailleurs comme ca que j'ai réussi à bien progresser en VBA sur Excel.
    Mais Access est loins d'etre aussi facile d'utilisation !!

    Encore merci !!
    Wanaka

  4. #4
    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,

    Ce qui ne va pas dans ton code tel que je le lis, c'est que Cnx est déclarée ailleurs et on ne peut dans ce cas connaître son état...

    Tu dois, surtout si tu débutes, te donner de bonnes habitudes et user de procédures génériques, notamment celle pour la connexion, soit par 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    Option Compare Database
    Option Explicit
    'Module connexion
    '----------------------------
    'Variable de module de la connexion
    Private m_oCnx                As ADODB.Connection
     
    Public Function ConnectAndExecute(ByVal SQLScript As String, ByVal CloseConnection As Boolean, ByRef RecordsAffected As Long, Optional ByVal ConnectionString As String) As Boolean
    'Paramètres de connection
        On Error GoTo ConnectAndExecute_Error
        Set m_oCnx = New ADODB.Connection
        With m_oCnx
            ' On vérifie l'état de la conexion
            If Not (.State = adStateOpen) Then
                .Provider = "Microsoft.Jet.Oledb.4.0"
                'On vérifie si le paramètre ConnectionString est renseigné sinon c'est la BDD en cours
                If Len(ConnectionString) = 0 Then
                    .ConnectionString = CurrentProject.FullName
                End If
                'On ouvre et on attend l'établissement de la connexion
                .Open
                While (.State = adStateConnecting)
                    DoEvents
                Wend
     
            End If
            'On exécute le script avec retour du nombre d'enregistrements affectés
            .Execute SQLScript, RecordsAffected
        End With
     
        ConnectAndExecute = True
        On Error GoTo 0
    ConnectAndExecute_Exit:
        'On ferme si c'est demandé
        If CloseConnection Then
            If m_oCnx.State = adStateOpen Then
                m_oCnx.Close
                Set m_oCnx = Nothing
            End If
        End If
        'On sort
        Exit Function
    ConnectAndExecute_Error:
        'Une erreur est levée
        ConnectAndExecute = False
        If m_oCnx.Errors.Count > 0 Then
            'Affichage de l'erreur dans la fenêtre de débogage
            Debug.Print m_oCnx.Errors.Item(0)
        End If
        'On reprend l'instruction à l'étiquette
        Resume ConnectAndExecute_Exit
    End Function
    que tu peux utiliser comme suit :

    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
     
    'Classe du formulaire
    '----------------------------
    Option Compare Database
    Option Explicit
     
    Private Sub Btn_Formulaire1_Click()
    Dim strSQL                    As String
    Dim lngRecordsAffected        As Long
     
        strSQL = "INSERT INTO Suivis_des_coupons (TP,Paye, Beneficiaire, CodeCoupon) "
        strSQL = strSQL & "VALUES('" & Me!TP_Form & "','" & Me!Chkb_Paye & "','" & Me!Benef & "','" & Me!CodeCoup & "')"
        If ConnectAndExecute(strSQL, True, lngRecordsAffected) Then
            MsgBox "C'est OK, il y a eu " & lngRecordsAffected & " enregistrement(s) affecté(s)...", vbInformation
        Else
            MsgBox "Ooops, il y a eu une boulette !", vbExclamation
        End If
    End Sub

    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 ***

Discussions similaires

  1. Problème de verrouillage de boutons
    Par pop.paki dans le forum VBA Access
    Réponses: 6
    Dernier message: 28/07/2011, 14h29
  2. Problème de verrouillage dans un formulaire
    Par Damien84 dans le forum IHM
    Réponses: 4
    Dernier message: 16/12/2008, 17h47
  3. Problème de verrouillage de ma base de données access
    Par franckimmo dans le forum Access
    Réponses: 1
    Dernier message: 23/04/2008, 22h46
  4. Problème de verrouillage
    Par lp38 dans le forum Access
    Réponses: 7
    Dernier message: 09/04/2007, 17h58
  5. Problèmes de Verrouillage
    Par krusty_1226 dans le forum Access
    Réponses: 2
    Dernier message: 25/05/2006, 14h31

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