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

Requêtes et SQL. Discussion :

Utiliser un recorset comme source dans un autre recordset


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Points : 28
    Points
    28
    Par défaut Utiliser un recorset comme source dans un autre recordset
    Bonjour,

    je voudrais me servir d'un recordset comme sources de données dans un autre recordset. Le probleme c'est que je n'y arrive pas...

    je vous donne mon code (simplifié off course):

    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 db as database
    dim G1 as recordset
    dim G2 as recorset
    dim rs as recordset
     
    dim sql as string
    dim sql2 as string
    dim sql3 as string
     
    Sql = "SELECT * From matable WHERE ..."
    sql1 = "SELECT * From matable WHERE ..."
    sql2 = "SELECT * FROM G1, G2 WHERE..."
     
    set db = currentdb()
    set G1 = db.openrecordset(sql)
    set G2 = db.openrecorset(sql1)
    set rs = db.openrecordset(sql2)
    ....
    le probleme c'est que le calcul de rs ne fonctionne pas...

    merci de votre aide.

    cordialement

    franck

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 643
    Points : 34 351
    Points
    34 351
    Par défaut
    Bonjour,

    ca ne fonctionne (malheureusement) pas comme cela.
    G1 et G2 n'existent pas en dehors de ton code VBA pour l'instant.

    quelques lectures sur les syntaxes SQL :
    http://sqlpro.developpez.com/cours/s...usrequetes/#L1

  3. #3
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut jpcheck et strike57,

    comme te précise jpcheck ca marche pas comme ca mais il est probable que cela te suffit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sql = "SELECT * From matable WHERE ...condition1..."
    sql1 = "SELECT * From matable WHERE ...condition2..."
    sql2 = "SELECT * FROM matable WHERE (...condition1...) AND (...condition2...)"

  4. #4
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 591
    Points
    3 591
    Billets dans le blog
    8
    Par défaut
    Salut
    Je pense qu'il veut plutôt réaliser une sous requête de cette manière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select rq1.champ1, rq1.champ2, rq2.champ1, rq2.champ2
    from (select table1.champ1, table1.champ2 from table1 where....) as rq1, 
     (select table2.champ1, table2.champ2 from table1 where....) as rq2
    where .....

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    Bonjour,

    effectivement ca marche en faisant des sous requetes.

    Par contre cela rame plus que lorsque je crée mes requete sous access et que je les appel via "Set rs = "

    je pensait faire mes requetes sous SQL pour rendre leur traitement plus rapide... (avec la solution des sous requetes environ 3 min de traitement, sous acces environ 1min30)

    quelqu'un a une idée pour rendre la chose plus rapide ?

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 643
    Points : 34 351
    Points
    34 351
    Par défaut
    Salut,
    ce que je recommande souvent, c'est de créer des tables tampons, dans lesquelles tu déverses le contenu des sous requêtes.

    Ca donnera plus de traitements, mais des traitements sur des tables en local iront toujours plus vite que des requêtes "à tiroirs"

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    ouais,

    j'avais bien pensé aux table intemediaires, mais je joue avec un recordset de presque 200 milliards de lignes...

    avec apres chaque traitement d'une ligne un recalcul total du recorset... (dieu merci a chaque fois le nombre de lignes restante chute...)

    donc par les table cela risque d'etre encore plus long.

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 643
    Points : 34 351
    Points
    34 351
    Par défaut
    200 milliards de lignes ?

    et tu utilises Access pour travailler ?

    demande à passer sous SQL server avec des vues qui diminuent déjà ce nombre de lignesbien trop grand pour être géré dans des temps corrects sous Access

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    le context exact, c'est que je devellope une apli acces qui fonctionnera un temps assez court (1 a 2 mois) le temps qu'elle soit traduite et migrée sous AS 400 pour etre intègrée dans un ERP local.

    donc par la suite cela devrais s'arranger sur les temps de traitements.

    en attendant, le plus rapide cela sera, le mieux ce sera.

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/04/2013, 16h42
  2. utiliser une liste comme colonne dans une autre liste
    Par ahmedmido dans le forum SharePoint
    Réponses: 1
    Dernier message: 15/07/2008, 09h42
  3. utiliser une variable se trouvant dans un autre .c
    Par richard_sraing dans le forum C
    Réponses: 2
    Dernier message: 18/03/2006, 11h59
  4. Réponses: 4
    Dernier message: 08/11/2005, 15h10
  5. Utilisation d'une Variable(Vb) dans d'autre language
    Par cach dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/02/2005, 12h00

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