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 :

Impression aussitot d'un enregistrement


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2016
    Messages : 54
    Points : 17
    Points
    17
    Par défaut Impression aussitot d'un enregistrement
    Bonjour !
    Je viens vers vous pour un problème qui m’empêche de finir mon projet.
    J'ai une table Client avec les champs IDAgent (Id Automatique), NumAgent, NomAgent etc..... et un etat E_InfoAgent. Je voudrai après la saisie de l'agent en cliquant sur le bouton valider qu'il enregistre l'agent dans la base de données et après qu'il me fasse apparaître à l’écran la page Etat E_InfoAgent juste de l'agent qui vient d’être enregistré pour imprimer.
    Voici le code du bouton valider:

    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
    SI SAI_NumAg="" OU SAI_NomAg="" OU SAI_PrenAg="" OU SAI_TelAg="" OU SAI_AdrsAg="" OU SAI_PieceAg="" OU SAI_NumPieceAg="" OU SAI_DateExp="" ALORS
     
    	Info("Les champs sont vides. Veuillez les remplir SVP !")
     
    SINON 
     
    	EcranVersFichier(FEN_EnregAgent)
     
    	HAjoute(AGENT)
     
    	RAZ()
     
    	Info("Enregistrement effectuée avec succès")
     
    	ExécuteTraitement(FEN_FEN_EnregAgent,trtPriseFocus)
     
    	HLitRecherche(AGENT,NomAg,SAI_NomAg)
     
    	SI HTrouve(AGENT) ALORS
     
    		SI OuiNon("Souhaitez-vous imprimer cet agent  ?") = Oui ALORS
     
    			iAperçu(i100)
    			iImprimeEtat(E_InfoAgent)
     
    		FIN
     
    	FIN
     
     
    FIN
    Merci en avance pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    3 choses :
    - ton code doit être compris dans la balise [CODE], c'est le bouton avec le #, ton code deviendra plus lisible
    - quel est précisément le problème rencontré?
    - je ne vois pas de test qui assure l'unicité sur le nom de l'agent, ce n'est pas gênant? Par exemple, est-ce que je peux avoir 2 agents avec le nom de Toto?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2016
    Messages : 54
    Points : 17
    Points
    17
    Par défaut
    1-
    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  SAI_NumAg="" OU SAI_NomAg="" ou SAI_PrenAg="" OU SAI_TelAg="" OU SAI_AdrsAg="" OU SAI_PieceAg="" OU SAI_NumPieceAg="" OU SAI_DateExp="" ALORS
     
    Info("Les champs sont vides. Veuillez les remplir SVP !")
     
    SINON 
     
    EcranVersFichier(FEN_EnregAgent)
     
    HAjoute(AGENT)
     
    RAZ()
     
    Info("Enregistrement effectuée avec succès")
     
    ExécuteTraitement(FEN_FEN_EnregAgent,trtPriseFocus)
     
    HLitRecherche(AGENT,NumAg,SAI_NumAg)
     
    SI HTrouve(AGENT) ALORS
     
    SI OuiNon("Souhaitez-vous imprimer cet agent ?") = Oui ALORS
     
    iAperçu(i100)
    iImprimeEtat(E_InfoAgent)
     
    FIN
     
    FIN
    2- Pb rencontré apres de validation il fait apparaitre toute la liste des agents alors je veux juste celui de je viens de validé

    3- Oui on peut avoir deux agents avec le meme Nom

  4. #4
    Membre du Club Avatar de ptahsokaris
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 36
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    Pense à l'indentation pour les prochaines fois, c'est bien plus lisible pour les autres et même pour toi.

    Déjà, tu fais un RAZ() avant d'effectuer ta recherche dans le fichier AGENT avec le champ de saisie SAI_NumAg.
    Donc, à mon avis, ton champ de saisie est remis à vide donc tu ne te positionnes sur aucun Agent.

    Hormis ce problème, le problème peut également venir de ton code d'impression de l'état.
    "Une fois, à une exécution, je m'approche d'une fille. Pour rigoler, je lui fais : « Vous êtes de la famille du pendu ? »... C'était sa sœur. Bonjour l'approche !"

  5. #5
    Membre du Club Avatar de ptahsokaris
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 36
    Points : 56
    Points
    56
    Par défaut
    Ensuite d'un point de vu purement utilisateur... J'indiquerais quand même quels champs n'ont pas été remplis ou bien lesquels sont obligatoires, voir même avec un repositionnement dans un des champs vides avec la fonction RepriseSaisie().

    De plus, n'as-tu pas besoin de réinitialiser les rubriques de ton fichier AGENT avant de faire l'ajout ? C'est généralement plus prudent d'utiliser systématiquement le HRaz() avant tout ajout, sauf exception bien sûr.
    "Une fois, à une exécution, je m'approche d'une fille. Pour rigoler, je lui fais : « Vous êtes de la famille du pendu ? »... C'était sa sœur. Bonjour l'approche !"

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2016
    Messages : 54
    Points : 17
    Points
    17
    Par défaut
    Merci beaucoup pour les conseils je vais penser à insérer RepriseSaisie() et HRaz()

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par GAJES Voir le message
    Merci beaucoup pour les conseils je vais penser à insérer RepriseSaisie() et HRaz()
    Pense aussi à remplacer le test
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SI  SansEspace(SAI_NumAg)=""
    à faire sur les autres champs de saisie

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2016
    Messages : 54
    Points : 17
    Points
    17
    Par défaut
    Merci beaucoup j'ai apporté ces modifications mais malheureusement mon problème n'est pas résolu car en validant elle fait toujours apparaître le liste des agents à imprimer au lieu juste de la page de celui que je viens d'ajouter.

  9. #9
    Membre du Club Avatar de ptahsokaris
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 36
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par GAJES Voir le message
    Merci beaucoup j'ai apporté ces modifications mais malheureusement mon problème n'est pas résolu car en validant elle fait toujours apparaître le liste des agents à imprimer au lieu juste de la page de celui que je viens d'ajouter.
    Du coup comment est construit ton état d'impression ? Cela vient sans doute de celui-ci
    "Une fois, à une exécution, je m'approche d'une fille. Pour rigoler, je lui fais : « Vous êtes de la famille du pendu ? »... C'était sa sœur. Bonjour l'approche !"

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par GAJES Voir le message
    Merci beaucoup j'ai apporté ces modifications mais malheureusement mon problème n'est pas résolu car en validant elle fait toujours apparaître le liste des agents à imprimer au lieu juste de la page de celui que je viens d'ajouter.
    2 solutions triviales à ton problème :
    - tu ajoutes en paramètre d'entrée de ton état le numéro id du nouvel enregistrement, puis ensuite, dans le code de ton état, tu appliques le filtre par rapport au numéro id
    - comme tu dois lancer l'impression de suite après l'enregistrement, tu peux mettre en paramètres d'entrée de ton état les différents champs de saisis, la particularité de cette méthode, c'est l'absence de faire appel à une base de données, j'ignore si cette méthode est convenable pour toi

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2016
    Messages : 54
    Points : 17
    Points
    17
    Par défaut
    Mon état est construit en programmation.
    Pour tes 2 solutions je privilégie la 1ere :
    " tu ajoutes en paramètre d'entrée de ton état le numéro id du nouvel enregistrement, puis ensuite, dans le code de ton état, tu appliques le filtre par rapport au numéro id"
    mais je ne comprend pas trop bien comment paramétrer d'entrée mon état par le N° Id du nouvel enregistrement et le filtre se fera par le Where ?

  12. #12
    Invité
    Invité(e)
    Par défaut
    Personnellement, je construits également mes états par programmation.

    Dans le code de ton état, dans l'événement "ouverture" de ton état, tu devrais avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PROCEDURE E_InfoAgent()
    Tu remplaceras cette ligne par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PROCEDURE E_InfoAgent(Param_Etat_idAgent est un entier)
    Ton état se servira ainsi d'un paramètre (exactement comme pour ouvrir un écran / faire appel à une fonction / procédure).

    En faisant ainsi, tu devras alors remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iImprimeEtat(E_InfoAgent)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iImprimeEtat(E_InfoAgent, nidAgent)
    où nidAgent contiendra l'id du nouvel enregistrement.

    Dans l'événement "ouverture" de ton état, dans ta requête de sélection, tu devras ajouter un WHERE en te servant du paramètre d'entrée.

  13. #13
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 054
    Points : 9 394
    Points
    9 394
    Par défaut
    Ton état , tu l'as créé par : Nouveau // Etat // Tableau.
    Crée un autre type d'état, en passant par Nouveau //Etat //Fiche.
    Sur l'écran suivant de l'assistant, Windev te propose de faire une sélection (borne mini / borne Maxi) ; tu actives cette option.
    Ainsi, tu appelleras ton état par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    iImprimeEtat Etat_fiche ( SAI_Id_Agent, SAI_Id_Agent)
    ou un truc comme ça, et tu auras uniquement la fiche de l'agent voulu.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2016
    Messages : 54
    Points : 17
    Points
    17
    Par défaut
    Voici le code de mon état modifié:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    PROCEDURE E_InfoAgent(gnParam_Etat_nIDAgentr est un entier)
     
    Agent est une Source de Données
    gsRequete est une chaîne
     
    gsRequete= " Select * from Agent where IDAgent is not null ORDER by IDAgent DESC"  
     
    HExécuteRequêteSQL(Agent,hRequêteDéfaut,gsRequete)
     
    HLitDernier(Agent)
     
     
    RENVOYER PAS HEnDehors(Agent)
    Et voici le code de l'impression du bouton valider

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iImprimeEtat(E_InfoAgent,nIDAgent)
    Sauf que lors de l’exécution il n'effectue pas l’opération et me demande de débugger la ligne du code Imprimer


    Pour la création de l'etat en fiche je ne vois pas l'option sur l'assistant évoqué pour info je suis sur Windev 17

    Merci !

  15. #15
    Membre du Club Avatar de ptahsokaris
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 36
    Points : 56
    Points
    56
    Par défaut
    Ta requête n'est pas bonne, là tu sélectionnes tous les agents qui ont un IDAgent non nul. Il faut que dans ton WHERE tu mettes la condition que ton IDAgent doit être celui que tu passes en paramètre de ton état. Ensuite exécuter ta requête et lire ton seul enregistrement (si l'Id agent passé en paramètre existe).
    "Une fois, à une exécution, je m'approche d'une fille. Pour rigoler, je lui fais : « Vous êtes de la famille du pendu ? »... C'était sa sœur. Bonjour l'approche !"

  16. #16
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 054
    Points : 9 394
    Points
    9 394
    Par défaut
    1. Dans Windev17 , si tu crées un état d'édition de type Fiche, qui s'appuie sur le parcours d'un fichier, il y a une option à cliquer pour dire 'Parcours Borné'. J'ai vérifié, cette option existe dans Windev 17.

    2. Bien entendu, ça peut aussi se faire par programmation, mais il faut avoir quelques bases de programmation.

    Ici , Ta procédure commence par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PROCEDURE E_InfoAgent(gnParam_Etat_nIDAgentr est un entier)
    Et à aucun moment, tu n'utilises gnParam_Etat_nIDAgentr par la suite. Si tu as quelques notions de programmation, tu vois bien que ça ne peut pas marcher.
    Et si au contraire, ça ne te paraît pas évident, alors il faut absolument lire quelques tutoriels sur les bases de la programmation.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

Discussions similaires

  1. [WD17] Impression d'un seul enregistrement
    Par new_dreams dans le forum WinDev
    Réponses: 4
    Dernier message: 11/02/2013, 16h16
  2. Réponses: 3
    Dernier message: 13/12/2005, 15h49
  3. Mise à jour enregistrements après impression
    Par alalau dans le forum Access
    Réponses: 2
    Dernier message: 17/12/2004, 16h13
  4. Réponses: 7
    Dernier message: 06/10/2004, 22h13

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