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 via ADODB


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Par défaut Connexion via ADODB
    Bonjour à tous

    Je fais des analyses de sondage avec graphique et tableau sous Excel.
    Mon problème se trouve au niveau de la base de données à laquelle je me connecte via ADODB.

    Au départ, lorsque ma base était stockée sous Access, c'est une base assez lourde environ 300 000 lignes (je sais c'est horrible mais Access est un standard où je suis), lors de l'exécution de requête il était très long, normal vous me direz.
    Donc j'ai convaincu mon chef de passer à Oracle mais en fait ça va pas plus vite. L'exécution est très rapide mais après quand je parcours mon résultat avec une boucle : sur le premier Not recordset.EOF (conditin de la boucle) il passe presque 10 secondes.

    Je voulais savoir ce qui était possible pour réduire considérablement ce temps ou à quoi c'était du.

    Bonne journée

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Peux tu nous donner le code que tu utilises pour la connexion et charger le recordset.

  3. #3
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Par défaut
    J'utilise la même syntaxe pour les deux

    POur Oracle :

    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
       Dim conn As ADODB.Connection
        Set conn = New ADODB.Connection
        Dim cmd As ADODB.Command
        Set cmd = New ADODB.Command
        Dim rst As ADODB.Recordset
        Set rst = New ADODB.Recordset
        'Connexion à la base
        dbPath = serveur
        conn.Open "Provider = MSDAORA;" & _
                "data source=" & dbPath & ";user ID = id; Password = motDePass"
        Set cmd.ActiveConnection = conn
        'Creation de la requete : detail de la variable
        With cmd
            .CommandText = "SELECT * FROM SHS_MAIN ORDER BY NUMQ"
            .CommandType = adCmdText
            .Execute
        End With
        'Ouverture du recordset
        Set rst.ActiveConnection = conn
        rst.Open cmd
        Dim compt As Long
        compt = 0
        nbCol = rst.Fields.Count
        ReDim tableauMain(317609, nbCol)
        Do While Not rst.EOF
            compt = compt + 1
            For i = 1 To nbCol
                tableauMain(compt, i) = rst.Fields(i - 1)
            Next i
            rst.MoveNext
        Loop
        MsgBox compt
     
    Pour Access :
     
       Dim conn As ADODB.Connection
        Set conn = New ADODB.Connection
        Dim cmd As ADODB.Command
        Set cmd = New ADODB.Command
        Dim rst As ADODB.Recordset
        Set rst = New ADODB.Recordset
        'Connexion à la base
        Dim dbPath As String
        dbPath = "C:\Documents and Settings\CUOR\Mes documents\Etude\Temp\shs.mdb"
        conn.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _
                "data source=" & dbPath & ";"
        'Creation de la requete : detail de la variable
        Set cmd.ActiveConnection = conn
        With cmd
            .CommandText = "SELECT * FROM SHSMain ORDER BY NUMQ"
            .CommandType = adCmdText
            .Execute
        End With
        'Ouverture du recordset
        Set rst.ActiveConnection = conn
        rst.Open cmd
        Dim compt As Long
        compt = 0
        nbCol = rst.Fields.Count
        ReDim tableauMain(317609, nbCol)
        Do While Not rst.EOF
            compt = compt + 1
            For i = 1 To nbCol
                tableauMain(compt, i) = rst.Fields(i - 1)
            Next i
            rst.MoveNext
        Loop
        MsgBox compt

Discussions similaires

  1. Problème connexion Excel csv via ADODB
    Par Narez dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 25/09/2013, 15h25
  2. [Oracle] Connexion à Oracle via adodb
    Par mikabail dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 18/07/2006, 15h12
  3. connexion via asp ou php ?
    Par cege dans le forum 4D
    Réponses: 5
    Dernier message: 25/01/2006, 08h43
  4. pb de connexion via Kylix2
    Par nadine.mauch dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 22/09/2003, 09h29
  5. [CR 9] [ASPX][C#]connexion via code
    Par nannous dans le forum Connectivité
    Réponses: 3
    Dernier message: 20/08/2003, 15h12

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