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 ADO] Base de données verrouillée (mais pas systématiquement)


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut [VBA ADO] Base de données verrouillée (mais pas systématiquement)
    Bonjour,

    J'ai besoin pour mon application Access 2003 de stocker dans des variables la valeur d'un champ (à partir d'une requête SQL).
    J'ai écris pour cela une fonction VB qui utilise l'objet ADODB, mais j'ai peur de mal l'utiliser. En effet, j'utilise cette fonction fréquemment dans mon programme, et par moments celle-ci ne fonctionne pas. L'erreur est: La base de données a été placée par l'utilisateur "Admin" sur "[nom de mon PC]" dans un état l'empêchant d'être ouverte ou verrouillée.
    Je n'ai pas réussi à déterminer les conditions exactes de l'apparition de cette erreur. J'ai essayé de fermer la connexion SQL, de libérer l'objet, mais je dois mal m'y prendre car je n'obtiens aucun résultat. Dois-je "cloner" l'objet base de données ? Comment ?
    Voici le code de ma fonction, je me suis inspiré d'un tutoriel de developpez.com

    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
    54
    55
    56
     
    Public Function valeurRequete(r As String, Optional i As Integer = 1) As String
    'On Error GoTo erreur_valeurRequete ' bizarrement il rentre systématiquement dedans !!!
     
    'si la requete rend plusieurs lignes, indiquez le numéro de ligne via l'argument optionel i
     
    'dans la requete r, il est nécessaire de renommer le champ X en "champ" comme ceci: "SELECT X AS champ"
     
        Dim adoRs As New ADODB.Recordset
        Dim adoCon As New ADODB.Connection
     
        adoCon.Provider = "Microsoft.Jet.oledb.4.0"
        adoCon.ConnectionString = Application.CurrentDb.Name ' cette variable indique le chemin complet du fichier access courant
     
        adoCon.Open
     
        Set adoRs = New ADODB.Recordset
     
        Set adoRs = adoCon.Execute(r)
     
        'indice de parcours
        Dim n As Integer
        n = i
     
        While Not adoRs.EOF And n > 0
            'cas où la requete ne rend aucun  résultat
            If IsNull(adoRs!champ) Then
                valeurRequete = ""
            Else
                valeurRequete = adoRs!champ 'on récupère la valeur du champ courant
            End If
            n = n - 1
            adoRs.MoveNext 'tres important, sinon boucle infinie
        Wend
     
     
        ' parfois Access se plaint que la base est en cours d'utilisation malgré le adoCon.close, alors j'essaye de decharger l'objet
        Set adoRs = Nothing
        adoCon.Close
        Set adoCon = Nothing
     
    'erreur_valeurRequete:
        ' parfois Access se plaint que la base est en cours d'utilisation malgré le adoCon.close, alors j'essaye de decharger l'objet
        'MsgBox "Erreur dans valeurRequete: " & Err.Description & " / Requete: " & r & " / i = " & i
        'adoCon.Close
     
        'Set adoRs = Nothing
        'Set adoCon = Nothing
     
        'Unload adoRs
        'Unload adoCon
     
     
    'la valeur retournée doit etre stockée dans valeurRequete
     
    End Function
    Merci d'avance pour vos lumières

    Snap

  2. #2
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 131
    Points : 129
    Points
    129
    Par défaut
    Je ne m'y connais pas beaucoup non plus mais essaye de mettre un
    juste avant le

  3. #3
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci j'essaye, je verrais à l'usage si le problème revient :-)

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/03/2014, 16h38
  2. Réponses: 2
    Dernier message: 18/12/2009, 13h12
  3. [VBA-E]bases de données
    Par massilia80 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 03/03/2006, 17h48
  4. [VBA-E]Base de données
    Par PIERRE57 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/02/2006, 16h53
  5. Base de données puissante - mais j'ai 2/3 bugs
    Par onlineradio dans le forum Access
    Réponses: 2
    Dernier message: 31/12/2005, 13h14

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