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

Macros et VBA Excel Discussion :

Connexion vers base HFSQL [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut Connexion vers base HFSQL
    Bonjour à tous et à toutes,
    J'ai crée une requête et un connexion en vba vers une base hfsql.
    Je cherche a récupérer dans une feuille le résultat.
    Je ne trouve pas de réponse clair à ce sujet.

    JE vous mets le bout de code si une personne a une idée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    Public Static Sub Main()
    With CreateObject("AdoDb.Connection")
        .Open "Provider=PCSOFT.HFSQL;Data Source=192.168.0.237;User ID=admin;Initial Catalog=SIO"
        With .Execute("SELECT nom,prenom,IDClient from client")
     
     
    ' rapatrier les donnees dans une Feuille ?
            .Close
        End With
        .Close
    End With

    Merci

  2. #2
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    Bonjour,

    Essayez avec CopyFromRecordset :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Static Sub Main()
    dim loRs as Object ' ADODB.Recordset
    With CreateObject("AdoDb.Connection")
        .Open "Provider=PCSOFT.HFSQL;Data Source=192.168.0.237;User ID=admin;Initial Catalog=SIO"
        set loRs = .Execute("SELECT nom,prenom,IDClient from client")
        ThisWorkbook.Sheets(1).Range("A2").CopyFromRecordset loRs
        loRs.Close
        .Close
    End With

  3. #3
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    Hello Arkahm voici ce que j'ai fait à partir de tes indications et cela fonctionne
    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
     
    Public Sub Main()
    Application.ScreenUpdating = False
    Dim Connex As New ADODB.Connection
    Dim Rs As ADODB.Recordset
    Set Rs = New ADODB.Recordset
    Dim Cstring As String
    Cstring = "Provider=PCSOFT.HFSQL;Data Source=192.168.0.237;User ID=admin;Initial Catalog=SIO"
    Connex.Open (Cstring)
     
     
    Set Rs = Connex.Execute("SELECT * FROM documentsgapiece INNER JOIN gapiece ON documentsgapiece.gpcleunik = gapiece.gpcleunik")
    Dim i As Integer
    For i = 0 To Rs.Fields.Count - 1
        'ActiveSheet.Cells(1, i + 1) = i + 1
        ActiveSheet.Cells(1, i + 1) = Rs.Fields(i).Name
    Next
    ActiveSheet.Range("A2").CopyFromRecordset Rs
    'ActiveSheet.Range("A3").CopyFromRecordset Rs
    Rs.Close
    Connex.Close
    Call permut(1, 4)
    Call permut(2, 11)
    Call permut(3, 12)
    Call permut(4, 45)
    Call permut(1, 4)
    Call permut(2, 4)
    Call permut(2, 3)
    Dim Rg As Range
    ' Set Rg = Sheets("Feuil1").Range("A2").CurrentRegion
    Set Rg = Sheets("Feuil1").Range("A1").CurrentRegion
     ActiveSheet.ListObjects.Add(xlSrcRange, Rg, , xlYes).Name = _
            "Tableau1"
        Range("Tableau1[#All]").Select
        Application.ScreenUpdating = True
     
    End Sub
     
    Public Sub permut(col1 As Integer, col2 As Integer)
        Dim c1 As Integer, c2 As Integer
     
        c1 = IIf(col1 < col2, col1, col2)
        c2 = IIf(col1 > col2, col1, col2)
        Application.ScreenUpdating = False
        Columns(c2).Copy
        Columns(c1).Insert
        Columns(c1 + 1).Cut Cells(1, c2 + 1)
        Columns(c1 + 1).Delete
    End Sub
    Juste pour savoir , peut on importer les champs de type memo text de HFSQL via excel?

    sinon je vais mettre en résolu

  4. #4
    Invité
    Invité(e)
    Par défaut
    bonjour,
    Juste pour savoir , peut on importer les champs de type memo text de HFSQL via excel?
    Oui

    mais pourquoi ne fais tu pas ta permutation dans ta requête Sql?

  5. #5
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    Parce que je ne suis pas assez costaud en SQL :-p bien que je me débrouille déjà pas mal pour un chti noob et forcement ça ne m'est pas venu naturellement à l'idée.

    Peut on également lire la structure de la base ( schéma) comme sur une autre base de données en HFSQL ? JE veux récupérer le schémas sur Excel.


    Cdt

  6. #6
    Invité
    Invité(e)
    Par défaut
    https://support.microsoft.com/fr-fr/...n-visual-basic

    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
    Public Function OpenConnetion()
        OpenConnetion = False 'Ouvre une connexion à  la base de données.
        On Error Resume Next
        Dim ConnecString
         Dim NbErr
        Set Connexion = CreateObject("ADODB.Connection")
        Connexion.Open GenereCSTRING 'ConnecString
        If Err = 0 Then
            OpenConnetion = True
           Connexion.CommandTimeout = 14400
        End If
        Debug.Print Err.Description
        Err.Clear
        On Error GoTo 0
    End Function
    Private Function GenereCSTRING()
    'Permet de générer le Cornec String
    '1 - ACCESS 97
    '2 - ACCESS 2000
    '3 - ACCESS 2012
    '4 - ODBC
    '5 - ORACLE
    '6 - SQL SERVER 2005
    '7 - SQL Server 2008 R2
    '8 - SQLite
    '9 - SQLite3
    If Trim("" & fichier) = "" Then fichier = Base
    Select Case TYPEBASE
        Case Xls
                GenereCSTRING = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Base & ";Extended Properties=""Excel 12.0;HDR=" & Array("No", "YES")(Abs(AvecTitre)) & ";"""
        Case ACCESS97
            GenereCSTRING = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & fichier
        Case ACCESS2000
            GenereCSTRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & fichier & ";Persist Security Info=False"
        Case ACCESS2012
            GenereCSTRING = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & fichier & ";"
        Case MySQL
        GenereCSTRING = " DRIVER={MySQL ODBC 5.1 Driver};SERVER=" & Server & ";UID=" & User & ";DATABASE=" & Base & ";Password=" & PassWord
        Case ODBC
            GenereCSTRING = "Provider=MSDASQL.1;Password=" & PassWord & ";Persist Security Info=True;User ID=" & User & ";Data Source=" & Base
        Case ORACLE
            GenereCSTRING = "Provider=OraOLEDB.Oracle.1;Password=" & PassWord & ";Persist Security Info=True;User ID=" & User & ";Data Source=" & Base
        Case SQLSERVER2005
            GenereCSTRING = "Provider=SQLOLEDB.1;Password=" & PassWord & ";Persist Security Info=True;User ID=" & User & ";Initial Catalog=" & Base & ";Data Source=" & Server
        Case SQLServer2008R2
            GenereCSTRING = "Provider=SQLNCLI;Server=" & Server & ";Database=" & Base & ";UID=" & User & ";PWD=" & PassWord & ";"
        Case SQLite
            GenereCSTRING = "Provider=OleSQLite.SQLiteSource.3; Data Source=" & fichier
            GenereCSTRING = "Driver={SQLite ODBC (UTF-8) Driver};Database=" & fichier & ";StepAPI=;Timeout="
        Case SQLite3
            GenereCSTRING = "Driver={SQLite3 ODBC Driver};Database=" & fichier & ";LongNames=0;Timeout=4000;NoTXN=0;SyncPragma=NORMAL;StepAPI=0;"
        Case CSV
            GenereCSTRING = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server & ";Extended Properties=""Text;HDR=" & Array("No", "YES")(Abs(AvecTitre)) & ";FMT=Delimited;"""
        Case Else
            GenereCSTRING = "PAS ASSEZ DE PARAMETRES RENSEIGNES !!!"
    End Select
    End Function
    Public Property Get Connection()
    Set Connection = Connexion
    End Property
    Public Property Get PremiereTableAdo() As String
    With Connexion.OpenSchema(20)
        If Not .EOF Then
            PremiereTableAdo = .Fields("TABLE_NAME")
        End If
        .Close
    End With
    End Property
    Public Property Get IsTableExiste(TableName As String) As Boolean
    With Connexion.OpenSchema(20)
        If Not .EOF Then
          .Filter = "TABLE_NAME ='" & TableName & "'"
           IsTableExiste = Not .EOF
        End If
        .Close
    End With
    End Property
    Public Property Get TableToutes()
    Dim t() As String, i As Integer
    TableToutes = False
    With Connexion.OpenSchema(20)
        While .EOF
            ReDim Preserve t(i)
            t(i) = !TABLE_NAME
            i = i + 1
            .MoveNext
        Wend
        .Close
        TableToutes = t
    End With
    End Property
    Public Property Get ListeChampTable(table As String)
    Dim t() As String, i As Integer
    ListeChampTable = False
    With Connexion
        With .OpenSchema(4, Array(Empty, Empty, table))
            While Not .EOF
                ReDim Preserve t(i)
                t(i) = !COLUMN_NAME
                i = i + 1
                .MoveNext
            Wend
            ListeChampTable = t
        End With
    End With
    End Property
    Public Property Get IsChampExist(table As String, Champ As String) As Boolean
    With Connexion
        With .OpenSchema(4, Array(Empty, Empty, table))
           If Not .EOF Then
               .Filter = "COLUMN_NAME ='" & Champ & "'"
               IsChampExist = Not .EOF
           End If
        End With
    End With
    End Property

  7. #7
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    J'ai fini par comprendre tout ton code mais du j'avais besoin que de ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Set Rs = Connex.openschema(4,empty,empty,table)
    ca me retourne bien toutes les tables et toutes les colonnes de la base du coup je peut visualiser la structure global du pitchoune.

    Merci

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

Discussions similaires

  1. Connexion vers base de données access (mdb)
    Par kochi56 dans le forum Designer
    Réponses: 2
    Dernier message: 19/02/2014, 08h51
  2. Connexion vers base mySQL
    Par mickmix69 dans le forum Réseau
    Réponses: 0
    Dernier message: 09/08/2013, 14h21
  3. [11g] connexion vers base Postgres
    Par apersonnat dans le forum Connexions aux bases de données
    Réponses: 0
    Dernier message: 31/07/2009, 13h44
  4. Connexion vers base de données externes !
    Par rbsaf_02 dans le forum CRM
    Réponses: 0
    Dernier message: 01/07/2009, 17h11
  5. connexion depuis site internet vers base mysql distante
    Par Carter dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 19/09/2006, 13h24

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