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

WinDev Discussion :

Problème avec corps de l'état avec fichiers de données différents [WD18]


Sujet :

WinDev

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 256
    Points : 85
    Points
    85
    Par défaut Problème avec corps de l'état avec fichiers de données différents
    Bonjour à tous !

    Je galère avec la conception de mon état, c'est à dire :
    Dans le corps de celui-ci je dois intégrer une section que je vais appeler "Ventilation" et une autre que je vais appeler "Règlement".
    Je dois les remplir via 2 fichiers de données bien différents (jusqu'ici pas de problème), mon problème est que si ma section "Ventilation" ne contient que 2 données et que ma section "Règlement" en contient 3 (c'est un exemple) et bien je vais avoir 3 ligne de ventilation au lieu de 2 avec en affichage la dernière ligne traité (cad la ligne 2).

    Je sais pas si pu être très compréhensible donc n'hésitez pas à me demander plus de renseignements.

    Je vous remercie d'avance à tous et je vous joins un extrait de mon code.


    1) A l'ouverture de l'état
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    // SECTION VENTILATION
    gsdReq*** est une Source de Données
    HExécuteRequêteSQL(gsdReq***,hRequêteDéfaut,"SELECT * FROM ***, ***  WHERE *** = *** AND ***_DATE = '" + gsDateRef + "'")
    HLitPremier(gsdReq***)
     
    // SECTION REGLEMENT
    gsdReq*** est une Source de Données
    HExécuteRequêteSQL(gsdReq***hRequêteDéfaut,"SELECT * FROM ***, *** WHERE *** = *** AND ***_DATE = '" + gsDateRef + "'")
    HLitPremier(gsdReq***)
    2) Dans le corps (Avant impression)
    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
     
    SI gsdReq***.*** <> "" ALORS
    	RUB_CA_*** = gsdReq***.*** + "%"
    	RUB_CA_*** = gsdReq***.***
    SINON
    	RUB_CA_*** = ""
    	RUB_CA_*** = ""
    FIN
    HLitSuivant(gsdReq***)
     
    SELON gsdReq***.***
    	CAS 1 		// CARTE BLEUE
    		RUB_*** = "CARTE BLEUE"
    		RUB_***_QTE = gsdReq***.***_QTE
    		RUB_***_TTC = gsdReq***.***_TTC
    	CAS 2		// ESPECE
    		RUB_*** = "ESPECE"
    		RUB_***_QTE = gsdReq***.***_QTE
    		RUB_***_TTC = gsdReq***.***_TTC
    	CAS 3		// CHEQUE
    		RUB_*** = "CHEQUE"
    		RUB_***_QTE = gsdReq***.***_QTE
    		RUB_***_TTC = gsdReq***.***_TTC
    	CAS 4		// BON D'ACHAT
    		RUB_*** = "BON D'ACHAT"
    		RUB_***_QTE = gsdReq***.***_QTE
    		RUB_***_TTC = gsdReq***.***_TTC
    	CAS 5		// TICKET RESTO
    		RUB_*** = "TICKET RESTO"
    		RUB_***_QTE = gsdReq***.***_QTE
    		RUB_***_TTC = gsdReq***.***_TTC
    	CAS 6		// REMISE
    		RUB_*** = "REMISE"
    		RUB_***_QTE = gsdReq***.***_QTE
    		RUB_***_TTC = gsdReq***.***_TTC
    FIN
    HLitSuivant(gsdReq***)

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Freelance
    Inscrit en
    Juin 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : Juin 2009
    Messages : 221
    Points : 371
    Points
    371
    Par défaut
    Si les deux requêtes sont bien indépendantes car déclarées en tant que deux sources différentes, puis ensuite avec des parcours indépendants, il ne devrait pas y avoir de problèmes et on peut bien avoir trois lignes dans l'une et deux dans l'autre. Tu pouvais aussi déclarer les requêtes avant d'appeller l'état. L'etat est déclaré avec qu'elle source de données dans ses propriétés ?
    La connaissance s'accroît quand on la partage.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 256
    Points : 85
    Points
    85
    Par défaut
    Merci pour ta réponse Leonidas34 !

    J'ai trouvé une autre solution qui fonctionne très bien, je vais la noter pour ceux qui se trouveront un jour dans le même cas que moi (pour reprendre ta citation : "La connaissance s'accroît quand on la partage", en voilà donc un extrait) :

    1) Dans l'ouverture de l'état :

    // Je créé une variable globale qui me servira de compteur
    i est entier

    // Je créé le texte de mes requêtes : (celle-ci peut très bien être créée via l'assistant de requête)
    gsdReq1 est une Source de Données
    HExécuteRequêteSQL(gsdReq1,hRequêteDéfaut,"SELECT * FROM ***, *** WHERE *** = *** AND ***_DATE = '" + gsDateRef + "'")
    HLitPremier(gsdReq1)

    2) Dans la lecture des données de l'état
    // Fin du fichier atteinte ? (S'il existe plusieurs requêtes je les additionne, ceci me permettra d'indiquer la fin de ma lecture grâce à la variable qui est incrémentée dans le corps de l'état)
    SI i = (HNbEnr(gsdReq1) + HNbEnr(gsdReqN)) ALORS
    // Arrêt de l'impression du bloc Corps
    RENVOYER Faux
    SINON
    // Impression du bloc Corps et exécution de ses traitements
    RENVOYER Vrai
    FIN

    3) Avant impression dans le corps de l'état
    // J'incrémente ma variable compteur qui lu en continu dans l'étape 2
    i++

    // Je créé mon traitement d'affectation de mes données dans les champs de type rubrique.
    // Pour ne pas me trouver hors limite de lecture (si cela se produit l'affichage des données dans les champs récupérera le dernier enregistrement qui a été et ceci jusqu'à la fin de lecture des données.
    si i < HNbEnr(gsdReq1) + 1 alors
    RUB1 = gsdReq1.Nom
    sinon
    RUB1 = ""
    fin
    Hlitsuivant(gsdReq1)

    etc.

    C'est exemple me permet d'alimenter plusieurs tableaux dans le corps de mon état et cela fonctionne très bien !

    Espérant que cette solution pourra aider d'autres personnes comme moi.

    En attendant bonne journée à tous !

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

Discussions similaires

  1. [AC-2003] créer un état avec beaucoup de sous états
    Par nounous54 dans le forum IHM
    Réponses: 5
    Dernier message: 11/12/2013, 11h49
  2. [WD14] Problème de réalisation d'un état pour imprimer des données
    Par noviceman1 dans le forum WinDev
    Réponses: 4
    Dernier message: 18/01/2012, 02h56
  3. Problème d'export d'un état avec sous-états
    Par gazella dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 20/08/2009, 13h58
  4. Problème avec le registre d'état avec inpout32.dll
    Par tims12 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 15/08/2009, 14h53
  5. Réponses: 6
    Dernier message: 17/11/2005, 14h39

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