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

VB.NET Discussion :

requête paramétrée dans boucle imbriquée


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Par défaut requête paramétrée dans boucle imbriquée
    Voilà je suis archi débutant en vbnet. Et je patine assez sérieusement sur mon problème. J'aurais grandement besoin d'aide pour m'aider à orienter mes recherches (mots clés pour recherche google, propositions etc).

    Je vous présente mon problème.

    Le contexte fonctionnel

    Je travaille sur une base de données. J’ai une information que je dois déduire à partir des infos que je possède dans la base.
    En gros j’ai un agent qui peut avoir plusieurs UV. Une formation est composée d’UV.

    J’ai deux tables : une table Agent avec les UV possédées par agent. Et une table formation avec les UV nécessaires pour valider une formation. La structure des données de cette table est la suivante.

    Ex :
    COL1 COL2
    Formation 1 UV1
    Formation 1 UV2
    Formation 1 UV3
    Formation 1 UV4

    Ce qui signifie que pour avoir la Formation1 je dois avoir les UV 1/2/3/4.

    Problème : je dois renseigner les formations détenues par agent alors que je n’ai dans ma base de données que les UV par agents.

    J’ai une table où j’ai pour chaque agent les UV détenues. J’ai donc dans cette table autant de ligne que d’UV détenu pour un agent.

    EX :

    COL1 COL2
    Agent 1 UV1
    Agent 1 UV2
    Agent 1 UV3
    Agent 1 UV4
    Agent 1 UV5
    Agent 1 UV6
    Agent 2 UV30
    Agent 2 UV41
    Etc …



    Ma problématique :

    Je dois « balayer » pour chaque agent de la table, ses UV détenues. Afin de déterminer si toutes les UV d’une formation sont détenues auquel cas j’insère une ligne dans une autre table avec l’agent et la formation détenue.

    Ex
    COL1 COL2
    Agent 1 Formation1
    Agent 2 Formation2
    Agent 2 Formation3



    Mon algo



    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
    For Each Agent   -- je balaye chaque agent de la table agent
     
    Agent =i
     
    	For each Referentiel_Formation – pour chaque agent je teste chaque formation
     
    	NB_UV_DETENUE=Je compte le nombre d’uv pour la formation testée que l’agent possède
            NB_UV_NECESSAIRE=Je compte le nombre d’uv necessaire pour valider une formation
     
                IF NB_UV_DETENUE=NB_UV_NECESSAIRE
                THEN INSERT INTO TABLE3 VALUEs (agent, code_formation);
                ELSE ''
                END IF
     
    	End For
     
    End For




    Mon code :

    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
     
     
    '### cette requête permet d'extraire chaque agent. permet de balayer les '###agents
     
    dim sSql as string = "select cle_pers from dbo.HISTO group by cle_pers order by cle_pers"
     
    '### cette requête permet d'extraire toutes les formations. permet de balayer chaque formation possible
     
    dim sSql2 as string = "select code_formation from formation group by code_formation order by code_formation"
     
     
     
    dim DT as DataTable = GLOBAL.RecupDatas("ODS",OBJ.Environnement(),sSql)
     
    dim DT2 as DataTable = GLOBAL.RecupDatas("ODS",OBJ.Environnement(),sSql2)
     
     
     
     
    FOR i as integer =0  to DT.rows.count - 1
     
           FOR j as integer =0  to DT2.rows.count - 1
     
     
           NEXT
     
     
     
    NEXT
    J'ai trop peu de connaissance en VBNET pour terminer ce code....

    A l'aide ! Qu'en pensez vous ? Pourriez vous me corriger la syntaxe pour les deux FOR NEXT imbriqué ? Comment récupérer le code_agent et le code_formation ? et l'introduire dans une requête dynamique ?

    merci

  2. #2
    Membre chevronné

    Avatar de Deepin
    Homme Profil pro
    Ingénieur - Chef de projet Modélisation/Simulation
    Inscrit en
    Avril 2004
    Messages
    3 164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afrique Du Sud

    Informations professionnelles :
    Activité : Ingénieur - Chef de projet Modélisation/Simulation
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 164
    Par défaut
    Le cours VB.NET ne t'aide pas?

  3. #3
    Membre averti
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Par défaut
    Citation Envoyé par buns Voir le message
    Le cours VB.NET ne t'aide pas?
    Bein il m'aidera certainement quand j'aurais fini de le bosser dans un mois ou deux ....

  4. #4
    Membre averti
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Par défaut
    Dans mes For next imbriquée je souhaiterais jouer mes requêtes pour tester les nombres d'UV mais je trouve rien sur la syntaxe à utiliser d'autant que je dois faire référence à des variables initialiser dans les for next imbriqués .....

  5. #5
    Membre averti
    Inscrit en
    Février 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 47
    Par défaut
    Voici mon code mise a jour.
    J'aimerais pouvoir monter une requête paramétrée dans une boucle imbriquée mais je n'y arrive pas.

    Quelqu'un pourrait il m'aider ?


    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
    Dim num_agent as integer=0
    Dim num_formation as integer=0
    DIM NB_UV_DETENU as integer=0
    DIM NB_UV_A_DETENIR as integer=0
     
    '### cette requête permet d'extraire chaque agent. permet de balayer les '###agents
    dim sSql as string = "select cle_pers from dbo.POMP_FHISTO group by cle_pers order by cle_pers"
     
    '### cette requête permet d'extraire toutes les formations. permet de balayer chaque formation possible
    dim sSql2 as string = "select CP_FM from ForP_UVparFM group by CP_FM order by CP_FM"
     
    '### cette requête permet de compter le nombre d’UV détenu par l’agent 
    '### Pour la formation balayée dans le second next for
    dim sSql3 as string = "select count (cp_typestage) from pomp_fhisto where cle_pers=’num_agent’ and typeStage in (select cp_uv from forp_uvparfm where cp_fm=’num_formation’)"
     
    '### cette requête permet de compter le nombre d’UV que doit détenir l’agent pour avoir la formation balayée dans le second next for
    dim sSql4 as string = "select count(*) from forp_uvparfm
    where cp_fm=’num_formation’ order by code_formation"
     
    dim DT  as DataTable = GLOBAL.RecupDatas("ODS",OBJ.Environnement(),sSql)
    dim DT2 as DataTable = GLOBAL.RecupDatas("ODS",OBJ.Environnement(),sSql2)
    dim DT3 as DataTable = GLOBAL.RecupDatas("ODS",OBJ.Environnement(),sSql3)
    dim DT4 as DataTable = GLOBAL.RecupDatas("ODS",OBJ.Environnement(),sSql4)
     
    FOR i as integer =0  to DT.rows.count - 1
    code_agent = DT.rows(i).item(CLE_PERS)
     
           FOR j as integer =0  to DT2.rows.count – 1
    	code_formation= DT2.rows(j).item(0)
    	 NB_UV_DETENU = cint(DT3.rows(0).item(0))
    	 NB_UV_A_DETENIR = cint(DT4.rows(0).item(0))
     
    	IF NB_UV_A_DETENIR=NB_UV_DETENU then
    	Insert into agent_formation
    	(code_agent, code_formation)
    	Values
    	(‘code_agent’, ‘code_formation’)
    	End IF
     
     
           NEXT
     
     
     
    NEXT

  6. #6
    Rédacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Billets dans le blog
    121
    Par défaut
    Tu devrais d'abord commencer par lire l'article sur les requetes paramétré

    @++
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

Discussions similaires

  1. résultat requête paramétrée dans un datagridview
    Par grinder59 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 17/09/2008, 09h27
  2. PB : Requête Paramétrée dans boucle For
    Par papy75 dans le forum Accès aux données
    Réponses: 5
    Dernier message: 08/05/2008, 11h35
  3. Réponses: 4
    Dernier message: 30/03/2008, 21h56
  4. Appeler une requête paramétrée dans un sub
    Par Celephais dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/11/2007, 11h49
  5. Requête paramétrée dans un table Adapter avec ACCESS
    Par capitaine dans le forum ASP.NET
    Réponses: 3
    Dernier message: 10/09/2007, 09h48

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