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 :

Requete SQL simultanée


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 45
    Par défaut Requete SQL simultanée
    Bonjour à tous,

    Je développe actuellement un outil sur excel permettant de récupérer des données d'un HyperHistorian de le but de suivre l'exploitation d'une usine.
    Logiquement j'ai beaucoup de donnée a récupérer et sur des grandes périodes, 1 ans.
    Mon problème est le suivant :
    J'ai 172 signaux a récupérer et exel attend de récupérer le résultat de ma première requête avant de lancer la deuxième.
    Est'il possible de faire des requêtes sql simultanées ? Le serveur sql est dimensionné pour...

    Actuellement j'utilise les recordset, y a-t-il un équivalent de DoCmd.RunSQL ?

    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
    Dim cnn As ADODB.Connection
    Dim rss As ADODB.Recordset
     
    Set cnn = New ADODB.Connection
    Set rss = New ADODB.Recordset
    cnn.ConnectionString = "PROVIDER=SQLOLEDB;user id="";data source="",50012;password="";imex=1;"
     
    'Je définis cela pour eviter des requetes timeout
    cnn.ConnectionTimeout = 3000000
    cnn.Open
    cnn.CommandTimeout = 360
     
    while.....
       rss.Open strLire, cnn
     
       rss.close
    wend
     
    cnn.close
    Merci a vous

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Si la question n'est pas bien clairement exprimée.
    Si ce qui t'intéresses c'est le résultat de la requête numéro 2 oui;
    Si la requête numéro 2 est un assujetti aux résultats dans Excel alors non.
    sql="select tabe1.champs1,rq1.champs2 from table1 inner joint (select * from table2) as rq1 on rq1.id= tableau.id

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 45
    Par défaut
    Je ne comprend pas bien t réponse.
    Par exemple, j'ai une température et une tension supervisées,

    Au lieu de faire:

    -->requête température
    -->J'attend le résultat --> je le colle
    -->requête tension
    J'attend le résultat --> je le colle

    J'aimerai faire:

    -->requête température
    -->requête tension
    -->J'attend le résultat --> je le colle

    En faite je ne veux pas attendre le résultat de ma première requête pour en lancer d'autre... Tout ces infos sont dans la même base de donnée.
    Je peux utiliser plusieur recordset? et faire :

    -->RSS1
    -->RSS2
    -->J'attend le résultat --> je le colle

    J'espére que c'est plus claire

  4. #4
    Invité
    Invité(e)
    Par défaut
    Ce que j'essai de t'expliquer, c'est que tu peux imbriquer tes requête sql dans le même script et récupérer le résulta final directement!

    sql="select requêtes1.cham1 from (select * from table2) as requêtes1" !
    Pas besoin de 2 recordset!

    sql="select température.champx, tension.champy from température inner joint tension on tension.identifiant = température.identifiant"
    Dernière modification par Invité ; 30/12/2015 à 18h40.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 45
    Par défaut
    Je m'excuse mais je ne comprend pas !
    Ma requête est plus complexe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    strLire = "SELECT TIMESTAMP , TIME_AVG_VALUE FROM OPENQUERY(HH2, 'SELECT * FROM RE_S_BARD.RealTimeData.HDA_ReducedANALOG('date_debut','date_fin',granularite,'signal');')order by TIMESTAMP asc;"
    Mes signaux sont:

    BAT/W/U (pour la tension)
    BAT/W/T (pour la température)

    Ces données sont stockées sans lien entre elle.
    Voila Par exemple j'aimerai faire qu'une seule requête avec ces deux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    strLire = "SELECT TIMESTAMP , TIME_AVG_VALUE FROM OPENQUERY(HH2, 'SELECT * FROM RE_S_BARD.RealTimeData.HDA_ReducedANALOG('date_debut','date_fin',granularite,'BAT/W/U');')order by TIMESTAMP asc;"
    strLire = "SELECT TIMESTAMP , TIME_AVG_VALUE FROM OPENQUERY(HH2, 'SELECT * FROM RE_S_BARD.RealTimeData.HDA_ReducedANALOG('date_debut','date_fin',granularite,'BAT/W/T');')order by TIMESTAMP asc;"
    Ensuite j'ai une autre question:
    La fonction HDA_ANALOg me permet de faire des moyenne 10 min des points secondes de mon serveur. Je suis obligé de decouper mes requetes mois par mois pour ne pas avoir de timeout connexion, car les requêtes sont lourdes a traiter. Du coup je me demande si ta technique est considéré comme une requête ou comme comme 2 requête ?
    Je sais pas si tu comprend ce que j'essaie de dire?

  6. #6
    Membre très actif Avatar de XLRATOR
    Homme Profil pro
    Comptable Analyste
    Inscrit en
    Août 2012
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable Analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 226
    Par défaut UNION ALL
    Bonjour et Bonne Année 2016,
    Sous reserve que je vous comprenne mal, un simple UNION ALL suffirait pour ce faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    strLire = _ 
    "SELECT TIMESTAMP , TIME_AVG_VALUE FROM OPENQUERY(HH2, 'SELECT * FROM RE_S_BARD.RealTimeData.HDA_ReducedANALOG('date_debut','date_fin',granularite,'BAT/W/U');')
    UNION ALL 
    SELECT TIMESTAMP , TIME_AVG_VALUE FROM OPENQUERY(HH2, 'SELECT * FROM RE_S_BARD.RealTimeData.HDA_ReducedANALOG('date_debut','date_fin',granularite,'BAT/W/T');')
    ORDER BY TIMESTAMP asc;"
    Bien Cordialement.
    Entre la canne à pèche et le poisson c'est certainement la canne que je choisirais, puis apprendrais à m'en servir.
    Si on vous souffle une solution au complet c'est que vous n'auriez rien compris du problème.
    Consultez la , de forte chances que votre problème y figure et c'est plus vite que de poser une question et en attendre la réponse.
    FAQ Excel: http://excel.developpez.com/faq/

Discussions similaires

  1. Réponses: 9
    Dernier message: 20/08/2013, 19h59
  2. Problème Requete SQL et QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/01/2004, 09h31
  3. requete sql
    Par autumn319 dans le forum ASP
    Réponses: 22
    Dernier message: 10/09/2003, 16h46
  4. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43

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