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

Macro Discussion :

macros utilisant des boucles imbriquées et sql :


Sujet :

Macro

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 103
    Par défaut macros utilisant des boucles imbriquées et sql :
    Bonjour!!

    j'utilise une base de données avec plusieurs tables! pour réaliser certains calculs de parèmètres statistques j'ai réalisé des macros utilisant des boucles imbriquées ( comme indices de parcours des tables)
    je me suis rendu compte en faisant un check sur ces tables que, certains attributs ne prennent pas des valeurs successives:
    je m'explique: attribut1 (1,2,3,8,25,....) et donc la valeur de l'indice exemple "j" de parcours ne correspond pas à la valeur de l'attribut:

    première solution changer les valeurs de l'attribut sous forme de suite 1,2,3,...

    mais ce travail est très lourd sachant que j'ai beaucoup des tables énormes

    Si quelqu'un a une illumination ça sera cool

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Par défaut
    Tu ne peux gérer un autre compteur (en plus de ceux de tes boucles, j'imagine que tu utilises les valeurs de ces compteurs dans tes tables) qui ne sera pas impacté par les tests et qui prendra les bonnes valeurs?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 103
    Par défaut
    Ces indices de parcours servent de lien pour tester des attributs tables:


    %do d=1 %to &nbr_desc;

    proc sql noprint;
    select count(distinct Idproduit) into: nbr_prod
    from &data
    where iddescripteur=&d;
    quit; ......................................................

  4. #4
    Membre Expert

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Par défaut
    Je ne vois pas très bien le problème. Est ce que c'est possible d'expliquer un peut plus.
    Merci

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 103
    Par défaut
    DONNEES( ATT1,ATT2,ATT,ATT4)

    att1........att2 att3 att4
    1........1
    1........2
    1........4
    1........5
    1........6
    1 ........7
    2........1
    2........2
    2........3
    2........4
    2........5
    2........6
    2........7
    4 ........1
    4........2
    4........3
    . .
    . .
    . .

    je donne un apperçu sur la table sur laquelle s'effectue les calculs. je dois effectuer le calcul sur chaque bloc de valeurs de att1( quand att1 =1,2,4,....).
    pour chaque bloc att1: les autres boucles imbriquées se font alors pour traiter les valeurs d'attributs 2,3,4,5

    le HIC est que dès que j'arrive à la valeur de indice j=3 donc ne concorde pas car il n'y a pas de valeur 3 pour att1:

    %do j=1 %to &nbr_desc;

    proc sql noprint;
    select count(distinct att2) into: nbr_prod
    from &data
    where att1=&j;
    quit;
    ..............................................etc

    et la tt les résultats sont faux!!!!!!!!!!!!!!
    j'espère que j'ai expliqué mon pbm

  6. #6
    Membre Expert

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Par défaut
    Je te propose de créer un vecteur qui contient les valeurs (attr1) distinct de table.
    ta boucle ne change pas.

    j'imagine que le i doit être l'indice de la boucle au dessus (prends les valeurs de la colonne attr1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    proc sql;
    select distinct(att2) into :var separated by ' '
    from &data
    where att1=&i;
     
    %do j=1 %to &nbr_desc;
     
    proc sql noprint;
    select count(distinct att2) into: nbr_prod
    from &data
    where att1=%scan(&var,&j,' ');
    quit;

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Avril 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 233
    Par défaut
    Tu peux préciser quels sont les calculs que tu fais ? Parce que pour différents calculs on peut avoir des différentes solutions.
    Par exemple, si tes calculs sont assez simples (i.e. réalisables avec des fonctions d'agrégation standards), tu n'a qu'à faire une requête SQL avec des group by. Si les calculs sont un peu plus compliqués, tu peut trier ta table, faire une étape data avec plein de vérifications pour détecter le passage d'un segment à l'autre (par exemple, la modification de valeur de att1) pour lancer tes calculs et - éventuellement - les sortir dans une table.
    Bref, un peu plus d'information, stp.

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

Discussions similaires

  1. [XL-2003] Positionnement de plusieurs If dans des boucles imbriquées
    Par kokoVBA dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 30/07/2009, 15h41
  2. [XL-2003] comment ecrire en vba des boucles imbriquées?
    Par doudou8mc dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/07/2009, 15h15
  3. utiliser des espaces dans requêtes SQL, dans du VBA
    Par willy-78milles dans le forum VBA Access
    Réponses: 13
    Dernier message: 26/03/2009, 10h31
  4. Utilisation des boucles for
    Par _Michel dans le forum Débuter
    Réponses: 6
    Dernier message: 23/09/2008, 11h49
  5. problème de syntaxe dans des boucles imbriquées
    Par deglingo37 dans le forum Access
    Réponses: 2
    Dernier message: 01/09/2006, 14h46

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