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

WinDev Discussion :

VBA Connexion hyperfilesql [WD16]


Sujet :

WinDev

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur C#
    Inscrit en
    Avril 2011
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 348
    Points : 191
    Points
    191
    Par défaut VBA Connexion hyperfilesql
    Bonjour,

    Je suis complètement désespéré, vous pourriez peut-être m'aider.

    Je dois me connecter à une base de donnée hyperfilesql(donc , d'extension .FIC) à partir du VBA.
    Je ne parviens pas à m'y connecter. La BD se trouve sur mon pc, mais pas moyen d'y avoir accès.
    Alors le pilote ODBC est bien installé (à partir du CD de windev), j'arrive à convertir ma BD en fichier .odc, lequel me permet de visualiser la BD sur excel, mais cela ne m'est pas très utile car je n'ai pas l'intention de la convertir ^^

    Auriez-vous la syntaxe me permettant de me connecter au fichier .FIC à partir du VBA ?

    Merci d'avance pour vos réponses :-)

  2. #2
    Membre régulier
    Inscrit en
    Août 2010
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 93
    Points : 95
    Points
    95
    Par défaut
    salut Draco


    Voilà

    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
     
    'Référence = Microsoft ActiveX Data Objects 2.8 Library
    'Référence = Microsoft ActiveX Data Objects Recordset 2.8 Library
     
    '
    'Source de donnée Lyo Hperfile SQL  (Analyse.WDD, + Répertoire de la base)
    '
    Sub connecte()
     
    Dim cnx As ADODB.Connection
    Set cnx = New ADODB.Connection
     
    cnx.Open "lyo"
     
    If cnx.State = adStateOpen Then
          MsgBox "Welcome to Pubs!"
       Else
          MsgBox "Sorry. No Pubs today."
    End If
     
     
    End Sub
    et après, tu envoies des requètes SQL

    donc, c'est une source de données utilisateur qu'il faut définir. dans "Outils d'administration/Sources de données (ODBC)"
    je ne sais pas comment ça se passe quand il n'y a pas d'analyse

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    Pour ma part, pour accéder à une base HyperFile via ODBC, je conseillerai une source de données système.

    Avec ODBC, il faut absolument l'analyse (fichier wdd) et il ne faut pas de mot de passe sur les fichiers.
    En plus, les fichiers créés "à côté" de l'analyse ne sont pas accessibles.

    Même avec une source de données ODBC, je n'arrive pas à travailler correctement sur des jeux de données en modification (utilisation de curseurs).
    Les commandes SQL fonctionnent. Mais ça ne me permet pas de manipuler modifier un jeu de données directement en mémoire.

    Je suis en WD12, mais je ne pense pas que ça fonctionne mieux pour les versions plus récentes.
    _

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur C#
    Inscrit en
    Avril 2011
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 348
    Points : 191
    Points
    191
    Par défaut
    Un tout grand merci à vous 2, vos réponse m'ont permis d'avancer :-)

    Dis moi Laurent ?

    Pour affecter une commande SQL à un recordset? comment dois-je procéder ?

    Normalement on fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dim cnx as database
    dim rs as recordset
     
    Set cnx = OpenDatabase("C:\projet_pal\Guima.mdb")
    Set rs = cnx.OpenRecordset("SELECT * FROM TImp1")

    J'ai fait comme tu m'as suggéré mais il ne me prend pas en compte le OpenRecordset.

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    draco951, le code que tu nous donnes semble utiliser la biliothèque DAO (Data Access Object).

    En revanche, le code donnée par Laurent_m_paris est basé sur la bibliothèque ADODB.

    DAO permet de travailler avec des bases de données via ODBC mais ce n'est pas forcément "la" bibliothèque à utiliser, à moins que tu aies des contraintes particulières (par exemple, la nécessité de travailler avec un existant DAO).

    Si tu utilise ADODB, alors tu trouveras énormément de ressources sur l'internet.
    _

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur C#
    Inscrit en
    Avril 2011
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 348
    Points : 191
    Points
    191
    Par défaut
    Bonjour,

    Le fichier excel utilisait OLEDB, mais depuis que je dois accéder à une BD hyperfilesql, je n'ai pas d'autre choix que de passer par ODBC. Donc, je dois retravailler ce fichier.

    J'ai trouvé un post qui me permet d'avancer, mais j'ai encore quelques souçis pour arriver à acceder à mes données preséntes dans la BD, je trouve ma table dont j'ai besoin, mais pas encore les données ^^

    Le post trouvé :

    http://www.developpez.net/forums/d17...de-openschema/

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur C#
    Inscrit en
    Avril 2011
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 348
    Points : 191
    Points
    191
    Par défaut
    Ca y est, j'ai trouvé ! ^^

    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
     
     
    //connexion a ma base hyperfile
    Dim cnx As ADODB.Connection
     
    Set cnx = New ADODB.Connection
    cnx.Open "hyperfi"
     
    //recherche de la table requise : TIMP1
    Dim rstableschema As ADODB.Recordset
     
    Set rstableschema = cnx.OpenSchema(adSchemaTables)
    Do While rstableschema("TABLE_NAME") <> "TIMP1"
        rstableschema.MoveNext
    Loop
     
    //Execution de ma requete 
    Dim rs As ADODB.Recordset
    Dim sqltxt As ADODB.Command
     
    Set sqltxt = New ADODB.Command
    sqltxt.ActiveConnection = cnx
    sqltxt.CommandText = "SELECT * FROM TIMP1"
    Set rs = sqltxt.Execute
     
    ....
    Un grand merci pour votre aide :-)

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bravo draco951,
    Avec ton code tu peux parcourir le schéma de la BD.

    Comme j'ai cherché de mon côté, je donne un bout de code VB6/VBA qui permet de se connecter à un serveur HyperFile en ADODB.
    Sur le PC, j'ai créé une source de données système ODBC nommée "TestHyperFileCS".

    Ici on exécute une requête directement sur une table nommée STOCKS.
    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
        Dim oRS As ADODB.Recordset, oField As ADODB.Field
        Dim oConn As New ADODB.Connection
     
        oConn.Open "TestHyperFileCS"
     
        Set oRS = New ADODB.Recordset
        oRS.Open "SELECT * FROM STOCKS", oConn, adOpenDynamic, adLockOptimistic
     
        Do Until oRS.EOF
            For Each oField In oRS.Fields
                Debug.Print oField.Value
            Next oField
            oRS.MoveNext
        Loop
     
        oRS.Close
        oConn.Close

  9. #9
    Membre habitué
    Homme Profil pro
    Développeur C#
    Inscrit en
    Avril 2011
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 348
    Points : 191
    Points
    191
    Par défaut
    Merci JBO,

    il me semble que mon bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    //recherche de la table requise : TIMP1
    Dim rstableschema As ADODB.Recordset
     
    Set rstableschema = cnx.OpenSchema(adSchemaTables)
    Do While rstableschema("TABLE_NAME") <> "TIMP1"
        rstableschema.MoveNext
    Loop
    Etait complètement inutile en fait. Je pensais que je devais d'abord lui sélectionner la table, et que ensuite, j'aurais seulement accès aux données, mais non, exécuter la requête directement fonctionne bien :-)

    Merci pour le coup de main :-)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/04/2011, 11h13
  2. [XL-2007] VBA Connexion hyperfilesql
    Par draco951 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 19/04/2011, 16h46
  3. [XL-2003] VBA connexion ODBC sous Excel
    Par Lomath dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/08/2010, 11h24
  4. [VBA] Connexion permanente dans un module de classe
    Par cocobingo dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 14/01/2009, 13h54
  5. Réponses: 4
    Dernier message: 09/10/2008, 12h03

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