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 :

infos complémentaire requete vba


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 213
    Par défaut infos complémentaire requete vba
    Salut à tous,

    en fait je me demandais quelle est la solution la plus rapide pour faire des requêtes sur oracle via access :

    - attacher les tables puis faire des requêtes avec l'assistant access
    - ouvrir un objet odbc et faire la requête dand le VBE

    Dans mon cas c'est la première méthode...mais je trouve ca super lent et ca plante une fois sur 2 du fait du nombre d'enregistrements.

    A votre avis ça vaut le coup de faire les requêtes via VBA ?

    Merci de votre aide !

    PS : suis sous access 2003

  2. #2
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonsoir,

    A mon avis oui car il s'agit d'une requête exécutée par le serveur Oracle.
    Sinon, sans code vb, tu peux créer une requête SQL Directe (odbc).
    Tu crées une nouvelle requête.
    Tu fermes la boîte de dialogue pour ajouter les tables.
    Menu principal : Requête->Spécifique SQL->SQL Direct
    Tu ouvres la fenêtre propriétés de la requête et tu définis la chaîne de connexion ODBC.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ODBC;DSN=Ma source de données odbc;UID=Utilisateur;PWD=mot de passe
    Ensuite il suffit de coller le code SQL Oracle de la requête.

    A+

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 415
    Par défaut
    Je travaille avec un base access 2002 et Oracle 9i et voilà ce que j'ai consaté. Ma plus grosse table comporte 400000 enr.

    Faire les requêtes avec l'assistant de requête est très bien mais parfois les requêtes sont très lentes surtout si il y a beaucoup de jointure.

    Avec une autre des mes bases j'ai constaté que d'utiliser du SQL dans un chaine et de faire une execution était plus rapide (rapport 1 à 10 environ mais là, je sais que j'ai un pb sur mon réseau) surtout sur les insert.

    La méthode la plus efficasse c'est d'écrire les requêtes en Oracle, d'en faire des vues et d'utliser ces vues comme des tables liées quitte à filtrer le résultat en Access après.

    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.

  4. #4
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 213
    Par défaut
    Merci pour vos réponses rapides !

    je savais pas du tout qu'on pouvait ecrire du code sql comme ca directement j'vais faire des tests demain au boulot ! je vous tiens au courant !

    a++

  5. #5
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 213
    Par défaut
    Bon effectivement c'est carrément plus rapide avec les requêtes spécifiques
    Petite question : si j'enregistre cette requête spécifique est-ce que j'pourrai l'utiliser dans une connexion ADO du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        Dim cnx As New ADODB.Connection
        Dim rsts As New ADODB.Recordset
        Dim CnxStr As String
     
        CnxStr = "dsn=XXXX;uid=XXX;pwd=XXX"
        cnx.Open CnxStr
     
        rsts.Open "marequetedirecte", cnx

    Bon j'ai essayé une erreur au niveau d'Oracle "Invalid SQL statement" survient alors que si je tape la requête directement ça marche parfaitement...

    Bon c'est pas méchant mais c'est juste plus propre et plus facile à relire je trouve si c'était possible...si vous avez une idée

    merci pour vos futures réponses
    Sai

  6. #6
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonsoir,

    Non, la requête SQL Direct est un objet MS-Access.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rsts.Open "marequetedirecte", cnx
    ne fonctionne pas car "marequetedirecte" n'est pas un objet Oracle.

    Essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Dim cnx As New ADODB.Connection
        Dim rsts As New ADODB.Recordset
        Dim CnxStr As String
        Dim strSQL As String
     
        '  récupère code SQL de la requête (objet sauvé dans Access)
        strSQL = CurrentDb.QueryDefs("marequetedirecte").SQL
     
        CnxStr = "dsn=XXXX;uid=XXX;pwd=XXX"
        cnx.Open CnxStr
     
        rsts.Open strSQL , cnx, , , adCmdText
    A+

  7. #7
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 213
    Par défaut
    Trop fort
    je cherche depuis cet aprem !!!

    Merci en tout cas ! résoluuuuuuu

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

Discussions similaires

  1. Requete VBA et champ memo
    Par bestall666 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 12/02/2007, 15h55
  2. requete VBA = requete déjà créer dans l'interface access
    Par jeje22 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 15/09/2006, 16h43
  3. probleme de requetes VBA/ACESS. erreur execution 3251
    Par schwinny dans le forum Access
    Réponses: 9
    Dernier message: 05/07/2006, 11h11
  4. [VB]infos complémentaires pour l'impression d'une page excel avec vb
    Par Jacen dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 25/04/2006, 16h57

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