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 :

Ouvrir et lire une clé de registre dans une boucle while


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Points : 21
    Points
    21
    Par défaut Ouvrir et lire une clé de registre dans une boucle while
    Bonjour à tous, j'aimerai récupérer les les valeurs du serveur et de ma base de données pour chacune de mes sources ODBC stockée dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
    . j'ai les noms de mes sources dans une table access que j'utilise comme paramètre . 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
    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
     
     
     Dim strServer As String * 256
     Dim strDatabase As String * 256
        Dim Key As String
        Dim lngResult As Long
        Dim lngRetval As Long
        Dim lngLength As Long
        Dim lngKey As Long
        Dim i As Integer
        Dim rstTable As Recordset
        Dim rstTable2 As String
     
        Set rstTable = CurrentDb.OpenRecordset("T_DataSource", dbOpenDynaset)
     
         While Not rstTable.EOF     
         rstTable2 = Nz(rstTable("DataSources"), "")
     
       MsgBox rstTable2
       Key = "SOFTWARE\ODBC\ODBC.INI\" & rstTable2
         MsgBox Key
        lngResult = RegOpenKeyEx(HKEY_CURRENT_USER, Key, ByVal 0&, KEY_QUERY_VALUE, lngKey)
     
                 MsgBox lngResult
     
                 If lngResult <> ERROR_SUCCESS Then
             MsgBox "Impossible d'ouvrir la clé de registre" &
             Exit Sub
         End If
     
              If lngResult = ERROR_SUCCESS Then
     
                            lngLength = 256
     
       ' Retrieve the value of the key
        lngRetval = RegQueryValueEx( _
           lngKey, "Server", 0, 0, ByVal strServer, lngLength)
        MsgBox Left(strServer, lngLength)
     
        lngRetval = RegQueryValueEx( _
           lngKey, "Database", 0, 0, ByVal strDatabase, lngLength)
        MsgBox Left(strDatabase, lngLength)
        End If
     
     
    '  
        rstTable.MoveNext
     
      Wend
    à la première itération il ouvre ma clé et récupère les valeurs, mais à la deuxième itération malgré le faite que ma clé existe bien. et me revoie le message d’erreur. je ne vois pas ou est le problème dans mon code si vous pouvez bien m'aider à le corriger je tourne en rond depuis plus de 2 jours.
    Merci d'avance pour votre aide.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour. Généralement je ne joue pas dans les registres donc je vais juste te faire une suggestion.

    Fait un bout de code avec tes paramètres en dur pour aller chercher ta 2ième clef.
    Si cela marche essaye en mettant 2 lignes en dur pour l'appel de ton registre.
    après cela, si cela marche le transformer en boucle devrait être assez direct.

    Si cela ne marche pas, il est possible (quoi que improbable) que la fonction de lecture que tu utilise ne supporte pas les appels multiples.
    Il faudrait fouiller du côté de sa déclaration. Peut-être devrais-tu la mettre seule dans un module et l'appeler d'un autre module.

    Bon courage dans ta quête.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Merci pour ta suggestion Marot_r je vais tester ça tout de suite

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    je l'ai fait j'ai même répéter quatre fois avec les paramètre en dur et il me récupère toutes les valeurs que je veux.
    ça veut bien dire qu'il supporte les appels multiples?
    mais j'aimerai bien comprendre pourquoi pourquoi dans la boucle il ne récupère que la première itération?

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Il y a peut-être une erreur dans ta boucle. Tu penses que tu changes ton critère mais en fait il ne change pas.

    Vérifie ce que cela donne en exécutant ton code pas à pas et en faisant afficher le critère juste avant l'appel de la lecture.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Bonjour marot_r, j'ai déjas fait cela et mon paramètre change bien de valeur à chaque itération.

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Désolé je n'ai plus d'idée pour résoudre ce problème.

    Tu pourrais peut-être utiliser une voie détournée :
    1. Faire un export de tes registres dans le répertoire de ton application ou ailleurs.
    2. Lire le fichier texte généré.


    Je ne sais pas si l'étape 1 peut être faite à partie de VBA.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Bonjour, et merci encore pour tes réponse je vais tester tes propositions et voir ou ça va me conduire.
    et voir aussi si d'ici la je ne trouve pas une autre alternative.
    Merci.

Discussions similaires

  1. [Lazarus] Verifier une clé de registre dans une DLL
    Par abriko dans le forum Lazarus
    Réponses: 5
    Dernier message: 12/03/2012, 08h15
  2. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  3. insertion dans une table puis update dans une autre table
    Par uptoditime dans le forum VBA Access
    Réponses: 5
    Dernier message: 10/10/2007, 18h08
  4. Recherche de valeur dans une feuille et affichage dans une autre
    Par Zebulon777 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/05/2007, 09h40
  5. Réponses: 3
    Dernier message: 06/09/2006, 09h06

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