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 :

Etat composite avec source sur requête [WD17]


Sujet :

WinDev

  1. #1
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 615
    Points : 841
    Points
    841
    Par défaut Etat composite avec source sur requête
    Bonjour
    j'ai créé 3 états.

    J'ai créé une procédure qui permet d'imprimer ces 3 etats à la suite les uns des autres.

    Pour ce faire j'ai 2 requêtes et un fihcier hyperfile. la première requête est la source de données du premier état, la seconde, celle du second etat et le fichier HF est remplit pour le troisième etat.

    Ma procédure contient :
    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
    HFerme(Donnees3)
    HCréation(Donnees3)
    HOuvre(Donnees3)
     
    SI PAS HExécuteRequête(REQ_Donnees_1,hRequêteDéfaut,gnCdeEnCours) ALORS
    	Erreur("La requête n'a pas été executée partie1.")
    	RETOUR
    FIN
    SI HNbEnr(REQ_Donnees_1) = 0 ALORS
    	Erreur("La requête n'a pas renvoyé de résultat sur la partie 1.")
    	RETOUR
    FIN
    SI PAS HExécuteRequête(REQ_Donnees_2,hRequêteDéfaut,gnCdeEnCours) ALORS
    	Erreur("La requête n'a pas été executée partie2.")
    	RETOUR
    FIN
    SI HNbEnr(REQ_Donnees_2) = 0 ALORS
    	Erreur("La requête n'a pas renvoyé de résultat sur la partie 2.")
    	RETOUR
    FIN
    POUR TOUT REQ_Donnees_2 SUR ID2	
    ...
                 Donnees3.Libelle = REQ_Donnees_2.libelle
    	HAjoute(Donnees3)
    ...
     
    FIN
     
    //partie impression des états
    iAperçu(iPage, "Aperçu écran", Vrai)
    iImprimeEtat(ETAT_Partie1)
    iAperçu(iPage, "Aperçu écran", Vrai)
    iImprimeEtat(ETAT_Partie2)
    iAperçu(iPage, "Aperçu écran", Vrai)
    iImprimeEtat(Etat_Donnees3)
    iFinImprime()

    pour vérifier qu'il n'y a pas de souci à la fin de la procédure je la relance pour vérifier que mes requêtes passent toujours
    Et c'est ok
    Ensuite, je créé un état composite qui est basé sur 3 sous états chacun des sous états étant ceux décrits ci dessous.
    je relance la même procédure en ne modifiant que la partie impression état
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    iAperçu(iPage, "Aperçu écran", Vrai)
    iImprimeEtat(ETAT_testComposite)
    iFinImprime()
    La première impression se fait bien, si relance dans la foulée ma procédure alors je n'ai pas de résultat dans ma requête.

    La seule différence entre les 2 est que d'un côté j'ai 3 états différents et de l'autre un état composite basé sur ses 3 états.
    Je ne veux pas faire 3 états différents pour garder un seul fichier en sortie (sans avoir à ajouter de fusion) et ne pas recalculer par mes propres moyens les numéros de page et nombre de pages

    Merci de me dire si vous avez rencontré le même problème et aussi si vous l'avez résolu...

    Gancau

    Note :
    J'ai testé en WD19 : idem. j'ai créé un mini projet avec 2 fichiers de données et 2 requêtes, un état composite basé sur 2 états déjà existants, le problème est identique.
    J'ai envoyé un mail au support technique gratuit.............................

  2. #2
    R&B
    R&B est déconnecté
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Points : 1 263
    Points
    1 263
    Par défaut
    Bonjour

    Supprimez de votre état composite le dernier état pour voir...
    En effet, celui-ci nécessite un transfert de données lues dans le second état apparemment.

    En effet, si les requêtes sont libérée à la fin de chaque sous état, les deux premiers vont passer avec les requêtes et le dernier ne pourra passer, son fichier étant vide.

    Mais franchement : "l'état plante" ne signifie pas grand chose.
    Je vous invite à procéder à votre construction par étape afin de détecter ce qui pose problème.

  3. #3
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 615
    Points : 841
    Points
    841
    Par défaut
    Bonjour
    Je vous reprends
    Mais franchement : "l'état plante" ne signifie pas grand chose.
    L'état ne plante pas.
    Comme je l'ai indiqué, après avoir imprimé l'état composite, les requêtes ne renvoient plus aucun résultat. en gros hnbenr(REQ_Donnees_1) = 0 et hnbenr(REQ_Donnees_2) = 0
    Je rajoute que même si je crée un 3ème requête dans l'éditeur à partir du moment où l'état composite a été imprimé, il me dit systématiquement qu'il n'y a pas de données dans les requêtes.

    Pour identifier le problème, j'ai créé un projet à vide en WD19, mes états ne comportent aucun code, je ne fais que lancer l'impression des états basés sur des requêtes qui ne comportent que des select.
    je ne l'ai fait qu'avec 2 requetes.

    REQ_Fic2_CommencePar_P :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT 
    	fic2.nom AS nom,	
    	fic2.cp AS cp
    FROM 
    	fic2
    WHERE 
    	fic2.nom LIKE 'P%'
    REQ_test_0 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT 
    	test.libelle AS libelle,	
    	test.type AS type
    FROM 
    	test
    WHERE 
    	test.type = 0
    j'ai créé 2 états fiches basés chacun sur une requête. aucun calcul, aucune rupture, rien.

    Puis j'ai créé un état composite qui contient les 2 états cités ci dessus le premier étant "ETAT_Fic2_CommPar_P", le second "ETAT_Test_Type_0". Aucun code, rien.

    j'ai un bouton "BTN_Affiche_Etat_Composite" qui me lance l'impression de mon état composite :
    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
    SI PAS HExécuteRequête(REQ_Fic2_CommencePar_P,hRequêteDéfaut) ALORS
    	Erreur("La requête n'a pas été executée pour commence par P.")
    	RETOUR
    FIN
    SI HNbEnr(REQ_Fic2_CommencePar_P) = 0 ALORS
    	Erreur("La requête n'a pas renvoyé de résultat sur la partie commence par P.")
    	RETOUR
    FIN
    SI PAS HExécuteRequête(REQ_test_0,hRequêteDéfaut) ALORS
    	Erreur("La requête n'a pas été executée pour test type = 0.")
    	RETOUR
    FIN
    SI HNbEnr(REQ_test_0) = 0 ALORS
    	Erreur("La requête n'a pas renvoyé de résultat sur la partie test type = 0.")
    	RETOUR
    FIN
     
     
    iAperçu(iPage, "Aperçu écran", Vrai)
    iImprimeEtat(ETAT_Composite2)
     
    iFinImprime()
     
    HLibèreRequête(REQ_Fic2_CommencePar_P)
    HLibèreRequête(REQ_test_0)
    si je fais un GO du projet, je clique sur le bouton "BTN_Affiche_Etat_Composite",
    HNbEnr(REQ_Fic2_CommencePar_P) = 3 et HNbEnr(REQ_test_0) = 5
    Mon état composite apparaît avec les données.
    Je ferme mon état
    Je clique à nouveau sur le bouton "BTN_Affiche_Etat_Composite" et là j'ai
    HNbEnr(REQ_Fic2_CommencePar_P) = 0

    Il n'y a pas de code supplémentaire.

    Par contre, si je lance les états sans passer par l'état composite avec le même code qui j'ai placé dans le bouton "BTN_Affiche_Etat" :
    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
    SI PAS HExécuteRequête(REQ_Fic2_CommencePar_P,hRequêteDéfaut) ALORS
    	Erreur("La requête n'a pas été executée pour commence par P.")
    	RETOUR
    FIN
    SI HNbEnr(REQ_Fic2_CommencePar_P) = 0 ALORS
    	Erreur("La requête n'a pas renvoyé de résultat sur la partie commence par P.")
    	RETOUR
    FIN
    SI PAS HExécuteRequête(REQ_test_0,hRequêteDéfaut) ALORS
    	Erreur("La requête n'a pas été executée pour test type = 0.")
    	RETOUR
    FIN
    SI HNbEnr(REQ_test_0) = 0 ALORS
    	Erreur("La requête n'a pas renvoyé de résultat sur la partie test type = 0.")
    	RETOUR
    FIN
     
     
    iAperçu(iPage, "Aperçu écran", Vrai)
    iImprimeEtat(ETAT_Test_Type_0)
     
    iAperçu(iPage, "Aperçu écran", Vrai)
    iImprimeEtat(ETAT_Fic2_CommPar_P)
     
    iFinImprime()
     
    HLibèreRequête(REQ_Fic2_CommencePar_P)
    HLibèreRequête(REQ_test_0)
    je ferme mon application, je fais un GO du projet, je clique sur "BTN_Affiche_Etat"
    Alors
    HNbEnr(REQ_Fic2_CommencePar_P) = 3 et HNbEnr(REQ_test_0) = 5
    Mes 2 états s'affichent en suivant.
    je clique à nouveau sur le bouton "BTN_Affiche_Etat"
    et le résultat est :HNbEnr(REQ_Fic2_CommencePar_P) = 3 et HNbEnr(REQ_test_0) = 5
    Mes 2 états s'affichent à nouveau (logique puisqu'il y a des enregistrements)


    Je voudrais juste savoir ce que je ne ferme pas correctement. Pourquoi,dès qu'il s'agit de l'état composite, HnbEnr = 0 ???????

    Y a -t-il une étape dans les états composites que je n'ai pas effectué et qui me bloque tout accès aux requêtes ?

    Merci d'avance
    Gancau

  4. #4
    R&B
    R&B est déconnecté
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Points : 1 263
    Points
    1 263
    Par défaut
    un test en wd19 et n'ai rencontré de problèmes.

    Deux Etats simples générés depuis deux requêtes simple.
    un troisième état composite des deux premier
    un bouton qui lance les requête et évalue le contenu avant de lancer l'état composite
    -> aucun problème, on peut cliquer le bouton et le re cliquer indéfiniement


    Test avec des valeur en paramètre des requêtes : ras

    note : l'impression est de la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SI PAS HExécuteRequête(REQ_F1,hRequêteDéfaut,"102") ALORS
    	RETOUR
    FIN
    SI PAS HExécuteRequête(REQ_F2,hRequêteDéfaut,"202") ALORS
    	RETOUR
    FIN
    SI HNbEnr(REQ_F1)=0 ALORS RETOUR
    SI HNbEnr(REQ_F2)=0 ALORS RETOUR
    iAperçu(iapZoom100)
    iImprimeEtat(ETA_Fx)
    //iFinImprime() inutile
    HLibèreRequête(REQ_F1)
    HLibèreRequête(REQ_F2)
    j'ai pas le moyen de tester une version 17 dans un délai convenable, désolé

  5. #5
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 615
    Points : 841
    Points
    841
    Par défaut
    Merci pour tes réponses.

    Merci, grand merci !!!!
    Tu as trouvé


    Effectivement tu as mis en commentaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //ifinimprime() inutile
    et c'est bien là toute la différence.
    Effectivement, l'état n'étant pas cré par programmation, cette ligne est inutile.
    Je vais pouvoir me remettre en WD17, et tester sur mon application réelle

    Vraiment MERCI

    Gancau

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

Discussions similaires

  1. Menu deroulant avec source sur feuille differente.
    Par zeralium dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/04/2008, 13h54
  2. Etat avec source VBA
    Par Sam 069 dans le forum Access
    Réponses: 3
    Dernier message: 17/07/2006, 13h05
  3. Requête avec sélection sur MAX et Rupture par Service
    Par Kmiecik Sigismond dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/04/2006, 14h00
  4. pseudo et mot de passe sur form avec source de données SQL
    Par bobdylan dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 09/02/2006, 09h19
  5. Etat basé sur requête à champs variables
    Par hmonnet dans le forum Access
    Réponses: 2
    Dernier message: 10/11/2005, 08h19

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