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 :

Manipulations des requêtes


Sujet :

WinDev

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Fiscaliste
    Inscrit en
    Février 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Fiscaliste

    Informations forums :
    Inscription : Février 2014
    Messages : 14
    Points : 0
    Points
    0
    Par défaut Manipulations des requêtes
    Bonsoir tout le monde, j'ai vraiment besoin de votre aide pour la résolution d'un problème sur lequel je bute depuis maintenant une semaine. Je commence par la description du contexte puis j'exposerais le problème, alors je vous en prie soyez indulgent et surtout patient avec moi dans la mesure où je ne suis pas un informaticien développeur de formation, mais plutôt un passionné de cette belle discipline.
    Voilà je suis entrain de mettre sur pied une application de gestion de la TVA (Taxe sur la Valeur Ajoutée) basée sur les ventes et achats. Pour ce faire j'ai entre autres deux fichiers: Ventes et Achats
    Le fichier "Ventes" regroupe les rubriques suivantes : Id_Vte; Date_Vte; Mois_Vte; MtantHT; Mtant_TVA_Collectée et MtantTTC.
    Le fichier "Achats" contient les rubriques suivantes: Id_Achat; Date_Achat; Mois_Achat; MtantHT; Mtant_TVA_Supportée et MtantTTC.
    Le principe de la TVA est très simple et se résume à ce qui suit :
    Pour une période donnée (Mois), il faut calculer un solde de cette taxe qui peut se matérialiser par une TVA à payer (Cas où le total de la TVA collectée sur les ventes est supérieur à la TVA supportée sur les achats) ou au contraire se matérialiser par un crédit de TVA (Cas où la TVA supportée est supérieur à la TVA collectée et dans ce cas ce crédit va se reporter sur le mois suivant). La formule de calcule est : Solde mois = Total TVA collectée - (Total TVA supportée + report de crédit du mois précédent).
    Donc pour déterminer la Le solde de la TVA pour un mois donnée, j'ai crée une requête "Req_Liquidation" basée sur les deux fichiers (Ventes et Achats) et contenant les rubriques : Mois, Total_TVA_Collectée (du fichier "Ventes"); Total_TVA_Supportée (du fichier "Achats") et en faisant la somme de ces ces deux dernières rubriques. De plus j'ai crée une fenêtre "Fen_TVA" avec une table "Table_Liquidation" contenant les colonnes suivantes: Col_Moi;Col_TVA_Collectée; Col_TVA_Supportée; Col_TVA Exigible; Col_Crédit_TVA; Col_Report. Dans la partie initialisation de ma fenêtre "Fen_TVA" j'ai insérer le code suivant censé m'afficher les données dans ma table:
    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
    rSolde est un réel = 0
     
    Sablier(Vrai)
     
    HExécuteRequête(REQ_Liquidation)
     
    POUR TOUT REQ_Liquidation 
    	// Afficher le solde
    	SI REQ_Liquidation.TVACollectée > REQ_Liquidation.TVASupportée + rSolde ALORS
    		// Afficher le solde TVA Exigible : il n'y a pas de report au titre de la période
    		TableAjouteLigne(TABLE_TableLiquidation,REQ_Liquidation.Période,REQ_Liquidation.TVACollectée,REQ_Liquidation.TVASupportée+rSolde,(REQ_Liquidation.TVACollectée-(REQ_Liquidation.TVASupportée+rSolde)),0,0)
    		rSolde = 0
    	SINON
    		TableAjouteLigne(TABLE_TableLiquidation,REQ_Liquidation.Période,REQ_Liquidation.TVACollectée,(REQ_Liquidation.TVASupportée + rSolde),0,((REQ_Liquidation.TVASupportée + rSolde)-REQ_Liquidation.TVACollectée),((REQ_Liquidation.TVASupportée + rSolde)-REQ_Liquidation.TVACollectée))
    		rSolde = ((REQ_Liquidation.TVASupportée + rSolde)-REQ_Liquidation.TVACollectée)
    	FIN
    FIN
    TableTrie(TABLE_TableLiquidation,"COL_Période")
     
    Sablier(Faux)]
    Jusqu'ici tout va bien, les données sont correctement calculées et affichées
    Et c'est là où j'arrive au problème
    Je voudrais récuperer les données ainsi affichées dans la table "Table_Liquidation" par clic sur un bouton "Valider" et les enregistrer dans un fichier que j'ai nommé "Résultat" contenant les rubriques: id_Resultat, Mois, Total_TVA_Collectée, Total_TVA_Supportée; TVA_A_Payer; Crédit_TVA; Report_Crédit. J'ai mis le code suivant dans le code clic du bouton:
    [SI TableSelect(TABLE_TableLiquidation) = -1 ALORS RETOUR
    //1 : &Valider
    //2 : &Ne pas valider
     
    	POUR TOUTE LIGNE SELECTIONNEE nIndice DE TABLE_TableLiquidation
    	ResultatLiq.Période = TABLE_TableLiquidation.COL_Période[nIndice]
    	ResultatLiq.TVAExigible = TABLE_TableLiquidation.COL_TVAExigible[nIndice]
    	ResultatLiq.CréditTVA = TABLE_TableLiquidation.COL_CreditTVA[nIndice]
    	ResultatLiq.ReportCrédit = TABLE_TableLiquidation.COL_ReportCredit[nIndice]
    	HAjoute(ResultatLiq)
     
    		TableSupprime(TABLE_TableLiquidation)
    		HSupprime(DetermTVA)
    		HExécuteRequête(REQ_Liquidation)
    		TableAffiche(TABLE_TableLiquidation)
    	FIN
    Ma table réagit efface la ligne sélectionnée, l'enregistrement dans le fichier résultat se passe bien, mais le problème est que quant je ferme la fenêtre "Fen_TVA" et que le la réouvre la ligne réapparait de nouveau alors que je voudrais qu'une fois la validation effectuée par clic sur le bouton "Valider" la ligne s'efface et ne réapparait plus, même après fermeture et réouverture de la fenêtre.
    Voilà mon problème se résume à ça. Je vous saurais gré de l'aide vous voudrez bien m'apporter pour la résolution de ce problème.
    Merci.

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Fiscaliste
    Inscrit en
    Février 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Fiscaliste

    Informations forums :
    Inscription : Février 2014
    Messages : 14
    Points : 0
    Points
    0
    Par défaut
    Apparemment mon cas est désespéré puisque personne ne veut m'aider.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Si je comprends bien, c'est la ligne 36 qui "ne fonctionne pas".
    Ici tu tentes de supprimer un enregistrement de "DetermTVA", mais lequel ? A aucun moment tu ne fais de recherche sur ce fichier. Bref tu supprimes un enregistrement "au hasard".
    Il faut que tu pointes sur l'enregistrement à supprimer, par exemple avec un hLitRecherche().
    Et accessoirement il faut tester les retours des fonctions, ca permet de savoir ce qui se passe quand il y a un problème...

    Citation Envoyé par Jmeily Voir le message
    Apparemment mon cas est désespéré puisque personne ne veut m'aider.
    Disons que pas grand mode bosse le week-end...

    Tatayo.

  4. #4
    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
    Tu supprimes en ligne 35, la ligne de ta table, donc normal que à l'affichage, tu ne l'aies plus.
    puis en ligne 36 avec Hsupprime(determTVA) tu supprimes une donnée (comme dit Tatayo, on ne sait pas quoi); à quoi correspond ce fichier ?

    Tu ajoutes les informations validées dans un fichier "ResultatLiq"

    Ton problème vient peut être de savoir de quel fichier tu veux supprimer les données ? ne serait-ce pas le fichier achats ou vente ?
    dans ce cas, c'est sur un de ces ficheirs, qu'il faut faire la recherche et faire la suppression ou peut être plutot mettre à jour un témoin pour ne pas perdre les informations achats/ventes, mais que la TVA a déjà été calculée.

    Je pense que ta table est alimentée par programmation et non pas reliée à un fichier, donc que tu ajoutes, supprime, modifie, ce n'est que de l'affichage à un instant t; Ensuite, quand tu recharges, il n'y a eu aucun impact puisque tu ne supprimes, modifie dans aucun fichier.

    Bon dev
    Gancau

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Fiscaliste
    Inscrit en
    Février 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Fiscaliste

    Informations forums :
    Inscription : Février 2014
    Messages : 14
    Points : 0
    Points
    0
    Par défaut
    Bonjour et merci sincèrement pour vos réponses.
    Dans le but d'être claire et précis, je vais essayer dans ce qui suit de vous expliquer autant se faire que peut, comment j'ai procéder.
    Le fichier "DetermTVA" reprend certaines données du fichier Commande. Ce fichier contient les rubriques : Id_DetermTVA, Période, TVACollectée,TVASupportée.
    J'ai remplacé les fichiers Ventes et Achats par un Seul et unique fichier, le Fichier "COMMANDE"
    J'ai 2 fenêtres : Saisies_Achats et Saisies_Ventes. Dans le code de validation des données j'ai inséré le code suivant:
    - Boutons de validation des fenêtres Saisie_Ventes et Saisies Achats liées au fichier "COMMANDE"
    FENETRE Saisie_Ventes
    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
    // S'il s'agit d'un nouvel enregistrement
    SI Vente..NouvelEnregistrement ALORS
    	SI VerifSaisies() = Vrai ALORS
    		// Ajout
    		   HAjoute(Commande)
    	SINON
                               // Modifie
    		 HModifie(Commande)	
    	FIN
    FIN
    // Ajout DetermTVA
    DetermTVA.Période = Commande.Période
    DetermTVA.TVACollectée = Commande.Total_TVA_Collect
    DetermTVA.TVASupportée = Commande.Total_TVA_Supportée
     
    FIN
    HAjoute(DetermTVA)
    J'ai fait de même avec la fenêtre Saisie_Achat dans le code de son bouton de validation.
    Donc j'ai crée une requête "Req_Liquidation" à partir des enregistrement du fichier DetermTVA. Cette requête contient les rubriques suivantes du fichier "DetermTVA" : Période, Total_TVA_Collectée, Total_TVA_Supportée. Donc pour déterminer la Le solde de la TVA pour un mois donnée la requête me fait la somme de ces ces deux dernières rubriques. De plus j'ai crée une fenêtre "Fen_TVA" avec une table "Table_Liquidation" contenant les colonnes suivantes: Col_Moi;Col_TVA_Collectée; Col_TVA_Supportée; Col_TVA Exigible; Col_Crédit_TVA; Col_Report. Dans la partie initialisation de ma fenêtre "Fen_TVA" j'ai insérer le code suivant censé m'afficher les données dans ma table:

    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
    rSolde est un réel = 0
     
    Sablier(Vrai)
     
    HExécuteRequête(REQ_Liquidation)
     
    POUR TOUT REQ_Liquidation 
    	// Afficher le solde
    	SI REQ_Liquidation.TVACollectée > REQ_Liquidation.TVASupportée + rSolde ALORS
    		// Afficher le solde TVA Exigible : il n'y a pas de report au titre de la période
    		TableAjouteLigne(TABLE_TableLiquidation,REQ_Liquidation.Période,REQ_Liquidation.TVACollectée,REQ_Liquidation.TVASupportée+rSolde,(REQ_Liquidation.TVACollectée-(REQ_Liquidation.TVASupportée+rSolde)),0,0)
    		rSolde = 0
    	SINON
    		TableAjouteLigne(TABLE_TableLiquidation,REQ_Liquidation.Période,REQ_Liquidation.TVACollectée,(REQ_Liquidation.TVASupportée + rSolde),0,((REQ_Liquidation.TVASupportée + rSolde)-REQ_Liquidation.TVACollectée),((REQ_Liquidation.TVASupportée + rSolde)-REQ_Liquidation.TVACollectée))
    		rSolde = ((REQ_Liquidation.TVASupportée + rSolde)-REQ_Liquidation.TVACollectée)
    	FIN
    FIN
    TableTrie(TABLE_TableLiquidation,"COL_Période")
     
    Sablier(Faux)]
    Jusqu'ici tout va bien, les données sont correctement calculées et affichées
    Et c'est là où j'arrive au problème
    Je voudrais récupérer les données ainsi affichées dans la table "Table_Liquidation" par clic sur un bouton "Valider" et les enregistrer dans un fichier que j'ai nommé "Résultat" contenant les rubriques: id_Resultat, Mois, Total_TVA_Collectée, Total_TVA_Supportée; TVA_A_Payer; Crédit_TVA; Report_Crédit. J'ai mis le code suivant dans le code clic du bouton:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    POUR TOUTE LIGNE SELECTIONNEE nIndice DE TABLE_TableLiquidation
    	ResultatLiq.Période = TABLE_TableLiquidation.COL_Période[nIndice]
    	ResultatLiq.TVAExigible = TABLE_TableLiquidation.COL_TVAExigible[nIndice]
    	ResultatLiq.CréditTVA = TABLE_TableLiquidation.COL_CreditTVA[nIndice]
    	ResultatLiq.ReportCrédit = TABLE_TableLiquidation.COL_ReportCredit[nIndice]
    	HAjoute(ResultatLiq)
     
    		TableSupprime(TABLE_TableLiquidation)
    		HSupprime(DetermTVA)
    		HExécuteRequête(REQ_Liquidation)
    		TableAffiche(TABLE_TableLiquidation)
    	FIN]
    Ma table réagit efface la ligne sélectionnée, l'enregistrement dans le fichier résultat se passe bien, mais le problème est que quant je ferme la fenêtre "Fen_TVA" et que le la réouvre la ligne réapparait de nouveau alors que je voudrais qu'une fois la validation effectuée par clic sur le bouton "Valider" la ligne s'efface et ne réapparait plus, même après fermeture et réouverture de la fenêtre.
    Ou bien autre solution prévoir une colonne valider dans la table, qui sera marquée comme validée une fois que je clic sur le bouton valider.

    Voilà, j'ai été un peu long mais je pense que c'est nécessaire pour pouvoir compter sur votre aide. Je vous saurais gré de l'aide vous voudrez bien m'apporter pour la résolution de ce problème.
    Merci.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Je réitère ce que je disais: tu supprimes un enregistrement de "DetermTVA" sans pointer sur un enregistrement particulier. Donc tu supprimes l'enregistrement courant, sans savoir lequel est concerné. Comme en plus c'est dans une boucle, tu peux très bien supprimer des enregistrements qui n'ont aucun rapport avec le traitement courant.
    Il faut que tu lances en premier une rechercher sur ce fichier avant de supprimer un enregistrement.
    Et il faut tester le retour des fonctions H, et afficher l'erreur le cas échéant. Ainsi tu auras un début de piste en cas de dysfonctionnement.
    Ici si HSupprime échoue, tu ne le sais pas, et donc tu ne sais pas ce qui ne va pas.

    Tatayo.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Fiscaliste
    Inscrit en
    Février 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Fiscaliste

    Informations forums :
    Inscription : Février 2014
    Messages : 14
    Points : 0
    Points
    0
    Par défaut
    Merci Tatayo mais je vous en prie n'oubliez pas que je suis un débutant et ma pratique est assez limitée pour ne pas dire quasi nulle. Alors si vous pouvez m'envoyer la partie du code que vous me suggerée et me dire où l'insérer exactement ça serait gentil de votre part.
    En tout merci pour votre réactivité. A vous lire bientôt.

  8. #8
    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
    Il t'a dit que c'était en ligne 36 que tu faisais un Hsupprime, il te propose de tester le retour de cette fonction et signale au passage que tu supprimes l'enregistrement courant du fichier, et pas forcemment celui que tu veux.

    Quand tu écris que cela se passe bien, la table réagit, l'enregistrement est supprimé.
    je te réponds : non !
    La ligne de la table est supprimée. (à mon avis ce n'est qu'une suppression d'affichage, pas de données réelles).


    Je réitère mes questions :
    1- comment as-tu créé ta table ? est-ce une table avec une liaison sur fichier ou simplement remplie et gérée par programmation ?
    2- Pourquoi veux-tu supprimer les enregistrements ? est-ce à titre définitif et concrètement où veux-tu les supprimer ?

    Bon Dev
    Gancau

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Fiscaliste
    Inscrit en
    Février 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Fiscaliste

    Informations forums :
    Inscription : Février 2014
    Messages : 14
    Points : 0
    Points
    0
    Par défaut
    Bonjour
    Pour répondre à tes question:
    1/ Ma table est une table mémoire remplie et gérée par programmation. Elle n'est liée à aucun ficher.
    2/ Je supprime parcequ'en définitive ce qui m'intéresse ce sont les soldes que (TVA exigible, Crédit TVA, Report) que je peux obtenir qu'en faisant la somme, par requête somme, des rubriques TVA collectée, TVA supportée. Je supprime donc et en même temps je remplie un autre fichier à partir de ma table.
    Je vous remercie pour vos suggestions.

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Tu supprimes, ok, mais quel enregistrement de DTermTVA ?
    Parce qu'en voyant ton code, c'est "n'importe lequel".
    Donc la seule suggestion que je peux te donner, c'est toujours la même: avant de supprimer quoi que ce soit dans ton fichier, il faut commencer par pointer sur le bon enregistrement.
    Si tu ne sais pas faire => auto-formation.

    Tatayo.

  11. #11
    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

    Si ta table n'est reliée à aucun fichier, le fait de supprimer une ligne dans celle-ci n'a aucune incidence sur les traitements futurs.
    Donc il faut que tu supprimes du fichier qui te permet de récupérer les données de cette table.
    Ta table est alimentée par une requête : req_liquidation.
    Question : ta requête est basée du coup sur quel fichier ?

    Bon dev
    Gancau

Discussions similaires

  1. [AC-2007] Manipuler une requête et ajouter des données
    Par ca--rd dans le forum VBA Access
    Réponses: 1
    Dernier message: 15/05/2013, 18h43
  2. Réponses: 4
    Dernier message: 09/06/2007, 23h49
  3. Manipuler des dates...
    Par Ti Jen-tsie dans le forum Langage
    Réponses: 4
    Dernier message: 26/06/2003, 11h46
  4. Manipulation des handle contexte
    Par rockbiker dans le forum DirectX
    Réponses: 1
    Dernier message: 09/05/2003, 18h51
  5. Fonctions de manipulation des chaines et des dates
    Par Fares BELHAOUAS dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2002, 22h43

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