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

VB 6 et antérieur Discussion :

Liste des sources de données système (ODBC) [Trucs & Astuces]


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 26
    Points : 9
    Points
    9
    Par défaut Liste des sources de données système (ODBC)
    Bonjour,

    Voilà, je dois faire un prog en Visual Basic (comme vous vous en doutez ) permettant de migrer une base SAGE vers une base SQL Server. En fait j'aimerais en page d'accueil de mon prog que je puisse choisir la base de données dans la liste des sources de données système (ODBC), mais je ne sais pas comment m'y prendre pour obtenir cette liste (que je mettrais ensuite dans une ComboBox ou dans un DataCombo). Pouvez-vous m'aider ?

    D'avance merci!

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Pitié, aidez moi je suis déderpéré !!!
    J'ai beau chercher je ne trouve pas !!!!

    Pliiiiiiiiiiiiiiiiiiiiiiiiiiiz !!!!

  3. #3
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Je vois deux solutions :

    1 Tu lis la section [ODBC 32 bit Data Sources] du fichier ODBC.INI
    2 Tu parcours la base de registre HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI

  4. #4
    Expert confirmé
    Avatar de grafikm_fr
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 470
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 470
    Points : 5 059
    Points
    5 059
    Par défaut
    Y a meme une troisieme solution:

    Tu mets List1 et List2 sur un forme puis tu mets 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
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
     
    Option Explicit
     
     
    Private Declare Function SQLDataSources Lib "odbc32.dll" _
      (ByVal hEnv As Long, _
       ByVal fDirection As Integer, _
       ByVal szDSN As String, _
       ByVal cbDSNMax As Integer, _
       pcbDSN As Integer, _
       ByVal szDescription As String, _
       ByVal cbDescriptionMax As Integer, _
       pcbDescription As Integer) As Long
     
    Private Declare Function SQLAllocHandle Lib "odbc32.dll" _
      (ByVal HandleType As Integer, _
       ByVal InputHandle As Long, _
       OutputHandlePtr As Long) As Long
     
    Private Declare Function SQLSetEnvAttr Lib "odbc32.dll" _
      (ByVal EnvironmentHandle As Long, _
       ByVal dwAttribute As Long, _
       ByVal ValuePtr As Long, _
       ByVal StringLen As Long) As Long
     
    Private Declare Function SQLFreeHandle Lib "odbc32.dll" _
      (ByVal HandleType As Integer, _
       ByVal Handle As Long) As Long
     
    Private Const SQL_MAX_DSN_LENGTH As Long = 32
    Private Const SQL_MAX_DESC_LENGTH As Long = 128
    Private Const SQL_SUCCESS As Long = 0
    Private Const SQL_FETCH_NEXT As Long = 1
    Private Const SQL_NULL_HANDLE As Long = 0
    Private Const SQL_HANDLE_ENV As Long = 1
    Private Const SQL_ATTR_ODBC_VERSION As Long = 200
    Private Const SQL_OV_ODBC3 As Long = 3
    Private Const SQL_IS_INTEGER As Long = (-6)
     
     
    Private Sub Form_Load()
     
       GetUserSystemDSN
     
    End Sub
     
     
    Private Sub GetUserSystemDSN()
     
       Dim hEnv As Long         'handle to the environment
       Dim sServer As String
       Dim sDriver As String
       Dim nSvrLen As Integer
       Dim nDvrLen As Integer
     
      'obtain a handle to the environment
       If SQLAllocHandle(SQL_HANDLE_ENV, _
                         SQL_NULL_HANDLE, hEnv) <> 0 Then
     
         'if successful, set the
         'environment for subsequent calls
          If SQLSetEnvAttr(hEnv, _
                           SQL_ATTR_ODBC_VERSION, _
                           SQL_OV_ODBC3, _
                           SQL_IS_INTEGER) <> 0 Then
     
     
            'set up the strings for the call
             sServer = Space$(SQL_MAX_DSN_LENGTH)
             sDriver = Space$(SQL_MAX_DESC_LENGTH)
     
            'load the DSN names
             Do While SQLDataSources(hEnv, _
                                     SQL_FETCH_NEXT, _
                                     sServer, _
                                     SQL_MAX_DSN_LENGTH, _
                                     nSvrLen, _
                                     sDriver, _
                                     SQL_MAX_DESC_LENGTH, _
                                     nDvrLen) = SQL_SUCCESS
     
               'add data to the controls
                List1.AddItem Left$(sServer, nSvrLen)
                List2.AddItem Left$(sDriver, nDvrLen)
     
               'repad the strings
                sServer = Space$(SQL_MAX_DSN_LENGTH)
                sDriver = Space$(SQL_MAX_DESC_LENGTH)
     
            Loop
     
          End If  'If SQLSetEnvAttr
     
         'clean up
          Call SQLFreeHandle(SQL_HANDLE_ENV, hEnv)
     
       End If  'If SQLAllocHandle
     
     
       RemoveListDuplicates List2
     
    End Sub
     
     
    Private Sub RemoveListDuplicates(lst As ListBox)
     
       Dim n As Long
     
       If TypeOf lst Is ListBox Then
     
          With lst
     
             If .ListCount > 1 Then
     
                For n = .ListCount - 1 To 0 Step -1
                   If .List(n) = .List(n - 1) Then lst.RemoveItem n
                Next
     
             End If
     
          End With
     
       End If
     
    End Sub
    L'inconvenient de la méthode (ben oui y en a un sinon c'est pas drole) c'est qu'il te retourne tous les types de DSN, y compris les DSN modeles (MS Fox Pro DB etc...) et pas seulement les DSN user/systeme.
    "L'éducation, c'est le début de la richesse, et la richesse n'est pas destinée à tout le monde" (Adolphe Thiers)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Merci bcp !!!! Ca marche impec comme je le voulais MERCI BCP !!!!!

  6. #6
    Expert confirmé
    Avatar de grafikm_fr
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 470
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 470
    Points : 5 059
    Points
    5 059
    Par défaut
    Et le tag [Résolu] ?
    "L'éducation, c'est le début de la richesse, et la richesse n'est pas destinée à tout le monde" (Adolphe Thiers)

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Me revoila avec un autre problème dans le code que vous m'avez donné:

    - je l'avais fait sur une autre machine et ca marchait très bien,
    - et je l'ai installé sur un portable et le debugger me dit que dans cette partie du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    'set up the strings for the call 
             sServer = Space$ (SQL_MAX_DSN_LENGTH) 
             sDriver = Space$ (SQL_MAX_DESC_LENGTH)
    Le Space$ fait partie d'un autre projet ou d'un librairie inconnue !!!!

    et donc je me demandais quelle librairie il fallait ajouter au projet pour que Space$ soit pris en compte !

    Pouvez-vous m'aider ?
    Je vous en remercie par avance!

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Excusez moi d'insister, mais j'ai vraiment besoin d'une réponse, c'est assez urgent en fait!!!!

    Pliiiiiiiz

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Pitiéééééééééééééééééé !!!!!!!!!!!!

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    tu est sur que ton probleme vient de space ...?
    g pas vb mais dans l'aide Vba d'excel on a ...
    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
     
    Space, fonction
     
     
    Renvoie une valeur de type Variant (String) comprenant le nombre d'espaces indiqué.
     
    Syntaxe
     
    Space(number)
     
    L'argument number indique le nombre d'espaces à insérer dans la chaîne.
     
    Remarques
     
    La fonction Space est utile pour mettre en forme des sorties et effacer des données dans des chaînes de longueur fixe.
    la fonction space doit être facile à recréer ...
    par exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
          sServer = left ("                                            ",SQL_MAX_DSN_LENGTH)
    .... ou une boucle for... pour générer chaine de caractére composée d'espace....


  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    merci bcp de ton aide je vais essayer ca dessuite !!!

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    bon ca marche pas !
    a mon avis c'est plus un problem d'install donc merci de d'avoir été la pour m'aider(vu que tu etais le seul) et @ +
    bye

  13. #13
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    j'ai copier le code dans un projet Excel VBA ..grafikm_fr. et ça fonctionne....
    si je regarde la référence de Space ... cette fonction fait partie de VBA.String .... ? As tu VBA installé sur ton 2° PC ???

    sinon voici une fonction un peu "bestiale" mais qui pourrai te permettre de te passer de Space :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Function Espace(iNbEspaces As Integer) As String
        Dim i As Integer
        Dim st As String
        st = ""
        For i = 1 To iNbEspaces
          st = st & " "
        Next
        Espace = st
    End Function
    bon courage...

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 26
    Points : 9
    Points
    9
    Par défaut
    Ca marche Nickel, c'est cool merci bcp !!!!

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

Discussions similaires

  1. [AC-2007] Liste des sources de données d'une machine
    Par lbrun79 dans le forum VBA Access
    Réponses: 3
    Dernier message: 18/09/2014, 09h31
  2. [11g] Paramétrage Source de Données Système avec pilote ODBC Oracle
    Par scritchette974 dans le forum Connexions aux bases de données
    Réponses: 0
    Dernier message: 21/07/2014, 17h55
  3. [MySQL] Obtenir la liste des bases de données
    Par cooper_sunz dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/08/2005, 09h50
  4. Réponses: 9
    Dernier message: 25/07/2005, 15h56

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