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

Bases de données Delphi Discussion :

Problème avec QRExpr.


Sujet :

Bases de données Delphi

  1. #21
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par SirDarken Voir le message
    Petit problème a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Imprime.tot_com.Caption:= FormatFloat('0.00',ReducMontant);
    m'affiche 0,00 alors que dans le code je remet le montant à 0 en debut de boucle ( sur chaque représentant ), donc je doute que ca vienne de là.
    revise la syntaxe de FormatFloat. De toute façon je préfére Format('%0.00f',[Reducmontant]);

    Citation Envoyé par SirDarken Voir le message
    Petit problème b :
    Pour mes calculs de moyennes je passe par un SUM ou AVERAGE des lignes en questions, comment je peux retirer mon reducmontant à ces derniers.
    Est-ce que SUM(etat_ligne.MtComm-ReducMontant) vas être bon ou pas.
    NON , il faudra passer par une expression plu complexe (toujours le if) ou par un evenement beforeprint qui fera le calcul et modifiera Value

    [QUOTE=SirDarken;3283460]
    (D'ailleurs j'ai tjrs pas compris pourquoi la même instruction donne des résultats différents, car SUM(etat_ligne.Prix) donne le prix de la ligne en cours mais c'est aussi la même instruction au calcul final, a moins que Delphi de lui même fasse :
    [\QUOTE]
    ce n'est pas delphi , c'est quickreport , considère que , si l'expression est réinitialisé (resetafterprint) , chaque expression même identique est une variable différente (je simplifie)

    Citation Envoyé par SirDarken Voir le message
    Editer j'ai commencer à regarder pour mes calculs de moyennes.
    La première solution ne marche pas ( ajouter ReducMontant dans l'expression), j'ai donc opté pour modifier la valeur par un évenement
    zut trop tard je n'avais pas lu jusqu'au bout

    Citation Envoyé par SirDarken Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure Timprime.QRExpr7Print(sender: TObject; var Value: String);
    begin
            ComMoyVal:=Value;
            cmv:= StrToFloat(ComMoyVal)+ReducMontant;
            Value:=FormatFloat('0.00',cmv);
    end;
    Seulement la ligne en rouge me provoque des erreurs à la compilation.
    ComMoyVal ? est un string ? à quoi sert-il ?
    cmv est un Float ou un integer ou ?
    Cmv:=Round(StrToFloat(Value)+ReducMontant); ?
    le + me parait bizarre c'est pas plutôt - ?

    [EDIT]
    Fait bien attention aux types des Variables ReducMontant est un float ? ou un entier ?, signé ou non (si tu as peur d'un débordement utilise Cardinal)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  2. #22
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    ComMoyVal ? est un string ? à quoi sert-il ?
    cmv est un Float ou un integer ou ?
    Cmv:=Round(StrToFloat(Value)+ReducMontant); ?
    le + me parait bizarre c'est pas plutôt - ?

    [EDIT]
    Fait bien attention aux types des Variables ReducMontant est un float ? ou un entier ?, signé ou non (si tu as peur d'un débordement utilise Cardinal)
    ComMoyVal est un string je m'en sert pour recuperer la Value.
    cmv est un integer, et oui c'est un - pas un plus ^^"
    ReducMontant est un integer aussi.
    Enfin je regarderai plus tard là j'ai une formation à faire ( ce qui me coupe souvent dans mes recherches T_T )
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  3. #23
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    puisque cmv est un integer il faut "arrondir" le formatflaot par TRUNC ou ROUND
    et tu ne peut pas faire Value:=FormatFloat('0.00',cmv); puisque cmv n'est pas un float mais Value:=InttoStr(cmv) ou Value:=Format('%-0d',[cmv]);
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #24
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Je commence à mieux comprendre, seul souci c'est que je ne peut pas tronquer ma value, vu que j'ai des chiffre aprés la virgule et que je doit les conserver.

    J'ai tenté de crée une variable de type Float, mais ca me fait une erreur.
    Ni a t'il pas un moyen de faire des opérations simples sur des nombre à virgule ?

    Enfin le pire dans tout ca c'est que en plus on c'est pas compris avec le client ( quand l'idée de devoir faire un devis pour la refonte de l'impression lui à était soumise ) il y as une histoire que je doit faire la reduction que si la vente contient un article précis ( Forfait ZPREPRA ), enfin je me rend compte que le monde du travail c'est bien plus compliqué qu'en cours lol.

    Ma procédure pour le calcul de moyenne ne passe vraiment pas, j'ai tenté diverse chose et j'en suis à cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure Timprime.QRExpr7Print(sender: TObject; var Value: String);
    begin
            ComMoyVal:=Value;
            cmv:= StrToFloat(ComMoyVal);
            cmv := cmv - ReducMontant;
            ComMoyVal:= FloatToStr(cmv);
            Value:=Format('%0.00d',[ComMoyVal]);
    end;
    Mais il me dit argument invalide.
    J'ai mis cmv en double mais ca change rien, les deux/trois modèles trouver sur le net soit ne me parle pas, soit ne change rien au problème.

    [EDIT]
    Ceci marche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure Timprime.QRExpr7Print(sender: TObject; var Value: String);
    begin
            ComMoyVal:=Value;
            cmv:= StrToCurr(ComMoyVal);
            cmv := cmv - ReducMontant;
            ComMoyVal:=CurrToStr(cmv);
            Value:=ComMoyVal;
    end;
    J'ai passé cmv en Currency ^^.
    J'attaque le problème du total vide

    Et justement je découvre des choses.
    1) Un showmessage juste avant me montre que MontantREduc est à 0, je comprend pas pourquoi.
    2) Ce showmessage s'affiche avant de présenter la feuille de calcul, alors que normalement ce calcul intervient à la fin de l'impression.

    Voici le 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    procedure TAccueil.BitBtn3Click(Sender: TObject);
    
    Var types : string;
        valeur, Montant : real;
        Sort : Boolean;
    begin
      Application.CreateForm(Timprime, imprime); //Evite Problème si aucune imprimante est déclarée
    Data.Sel_param.Params[0].Value := 'dat_deb';//Recherche de la date de début dans paramètres
    Data.Sel_param.Open;
    Imprime.MINI.Caption:=Data.Sel_Paramvaleur.Value;
    Data.Sel_Param.Close;
    Data.Sel_param.Params[0].Value := 'dat_fin';//Recherche de la date de fin dans paramètres
    Data.Sel_param.Open;//ouverture de la requete etat_ligne
    Imprime.MAXI.Caption:=Data.Sel_Paramvaleur.Value;
    Data.Sel_Param.Close;
    
    
    Data.representant.Close;//fermeture de la table representant
    Data.Representant.Open;//ouverture de la table representant
    While not Data.Representant.Eof do//tant que l'on est pas en fin de table
    Begin
    ReducMontant :=0;
    Data.etat_ligne.Close;//fermeture de la requete etat_ligne
    Data.Etat_Frais.Close;//fermeture de la requete etat_frais
    Data.Etat_Total_Suppl_Frais.Close;//fermeture de la requete etat_total_suppl_frais
    Data.Etat_Total_Suppl_Com.Close;//fermeture de la requete etat_total_suppl_com
    Data.Tab_Reduc_Frais.Close;//fermeture de la table Tab_Reduc_Frais
    Data.Etat_Cumul.Close;//fermeture de la requete etat_cumul
    
    Data.etat_ligne.Params[0].Value := Data.representantRepr_num.Value;//le parametre 0 de la requete etat_ligne prend la valeur du numéro de représentant de la table representant
    Data.etat_ligne.Open;//ouverture de la requete etat_ligne
    //Form1.Showmodal;
    
    Data.etat_Frais.Params[0].Value := Data.representantRepr_num.Value;//le parametre 0 de la requete etat_frais prend la valeur du numéro de représentant de la table representant
    Data.Etat_Frais.Open;//Ouverture de la requete etat_Frais
    
    Data.Etat_Total_Suppl_Com.Params[0].Value := Data.representantrepr_num.Value;//le parametre 0 de la requete Etat_Total_Suppl_Com prend la valeur du numéro de représentant de la table representant
    Data.Etat_Total_Suppl_Com.Open;//ouverture de la requete etat_total_suppl_com
    
    Data.Etat_Total_Suppl_Frais.Params[0].Value := Data.representantRepr_num.Value;//le parametre 0 de la requete etat_total_suppl_frais prend la valeur du numéro de représentant de la table representant
    Data.Etat_Total_Suppl_Frais.Open;//ouverture de la requete etat_total_suppl_frais
    
    Data.Tab_Produit.Close;
    Data.Tab_Produit.Open;
    Data.Etat_Cumul.Params[0].Value := Data.Tab_ProduitComm.Value;
    Data.Tab_Produit.Close;
    Data.Etat_Cumul.Params[1].Value := Data.representantRepr_num.Value;//le parametre 0 de la requete Etat_Cumul prend la valeur du numéro de représentant de la table representant
    Data.Etat_Cumul.Open;//fermeture de la requete etat_cumul
    
    Data.Tab_Reduc_Frais.Open;//ouverture de la table Tab_Reduc_Frais
    
    Supplement(Data.representantRepr_num.Value);//appel de la fonction supplement avec en parametre un numero de representant
              //Calcul des Frais et Totaux
              valeur := Data.Tab_Reduc_FraisValeur.Value;
              types := Data.Tab_Reduc_FraisType.Value;
              sort := False;
              While sort=False do
              Begin
                   Valeur := Data.Tab_Reduc_FraisValeur.Value;
                   Types := Data.Tab_Reduc_FraisType.Value;
                   Montant := Data.Tab_Reduc_FraisFrais.Value;
                   if Data.Tab_Reduc_FraisFrais.Value > Data.Etat_FraisSomPrix.Value then sort := true
                   else if Data.Tab_Reduc_Frais.Eof then sort := true
                        else Data.Tab_Reduc_Frais.Next;
              End;
              If (Data.Tab_Reduc_FraisFrais.Value<Data.Etat_FraisSomPrix.Value)and(Data.Tab_Reduc_Frais.Eof) then
              Begin
                   Imprime.Band_Frais.Enabled := False;
                   Imprime.Frais.Caption := '';
              End
              Else Begin
                   Imprime.Band_Frais.Enabled := True; 
                   Imprime.Band_Frais.Enabled := False;
                   If Data.Tab_Reduc_FraisType.Value='Valeur'then Imprime.Frais.Caption := Data.Tab_Reduc_FraisValeur.AsString
                   else Imprime.Frais.Caption := FormatFloat('0.00',Data.Etat_FraisSomFrais.Value*(1-Data.Tab_Reduc_FraisValeur.Value/100));
              End;
    
              If Imprime.Frais.Caption<>''then
                   Imprime.tot_frais.Caption:=FormatFloat('0.00',Data.Etat_Total_Suppl_FraisSomMontant.Value+StrToFloat(Imprime.Frais.Caption))
              else Imprime.tot_frais.Caption:=FormatFloat('0.00',Data.Etat_Total_Suppl_FraisSomMontant.Value+Data.Etat_FraisSomFrais.Value);
              //Imprime.tot_com.Caption:=FormatFloat('0.00',Data.Etat_Total_Suppl_ComSomMontant.Value+Data.Etat_FraisSomCom.Value-ReducMontant);
              ShowMessage(CurrToStr(ReducMontant));
              Imprime.tot_com.Caption:=CurrToStr(ReducMontant);
    
             // Imprime.Cumul.Caption := FormatFloat('0.00',Data.RepresentantRepr_Cumul.Value);
    if not (Data.Etat_Ligne.Eof) then imprime.QuickRep1.Preview;//si la table Etat_Ligne n'est pas vide on fait un preview du quickreport
    
    Data.etat_ligne.Close;//fermeture des requetes
    Data.Etat_Frais.Close;
    Data.Etat_Total_Suppl_Com.Close;
    Data.Etat_Total_Suppl_Frais.Close;
    Data.Tab_Reduc_Frais.Close;
    Data.etat_Supplement.Close;
    Data.Etat_Cumul.Close;
    
    Data.Representant.Next;//on passe à l'enregistrement suivant(representant suivant)
    End;//Fin while not representant.eof
    Data.Representant.Close;//fermeture de la table representant
    end;
    Rouge ma modif, vert l'ancienne ligne.
    Je suppose que je vais devoir passer sur un évenement à l'impression de ce total non ?
    Merci
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  5. #25
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par SirDarken Voir le message
    Je commence à mieux comprendre
    tant mieux
    Citation Envoyé par SirDarken Voir le message
    J'ai tenté de crée une variable de type Float, mais ca me fait une erreur.
    en declaration c'est double ou currency , mais tu t'en est apperçu

    Citation Envoyé par SirDarken Voir le message
    je me rend compte que le monde du travail c'est bien plus compliqué qu'en cours
    Eh oui j'ai sévi comme prof et c'était justement ce que j'essayais de faire comprendre a ces tetes de mule .
    Un Cahier des charges signé est le seul moyen de s'en sortir mais c'est toujours trop long a établir quand on veut un résultat pour la veille. La théorie c'est beau mais en pratique c'est une autre paire de manches......



    Citation Envoyé par SirDarken Voir le message
    Ma procédure pour le calcul de moyenne ne passe vraiment pas, j'ai tenté diverse chose et j'en suis à cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure Timprime.QRExpr7Print(sender: TObject; var Value: String);
    begin
            ComMoyVal:=Value;
            cmv:= StrToFloat(ComMoyVal);
            cmv := cmv - ReducMontant;
            ComMoyVal:= FloatToStr(cmv);
            Value:=Format('%0.00d',[ComMoyVal]);
    end;
    Mais il me dit argument invalide.
    logique sur format t'aurait indiqué que pour un float c'est f qu'il faut mettre , de plus commmoyval est un string donc %s

    tu mets du beurre et de la margarine voir même de l'huile dans ce code. voci une 'correction'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    procedure Timprime.QRExpr7Print(sender: TObject; var Value: String);
    var cmv : currency; // ici cmv est une variable locale existant uniquement pour la procedure pas plus 
    begin
    cmv:= StrToFloat(Value);
    cmv := cmv - ReducMontant;
    Value:=Format('%3.2f',[cmv]);
    end;
    pour le reste j'ai pas encore tout lu , plus tard
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #26
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Et justement je découvre des choses.
    1) Un showmessage juste avant me montre que MontantREduc est à 0, je comprend pas pourquoi.
    2) Ce showmessage s'affiche avant de présenter la feuille de calcul, alors que normalement ce calcul intervient à la fin de l'impression.
    Je suppose que je vais devoir passer sur un évènement à l'impression de ce total non ?
    au 1) normal car pas calculé , puisque tu fais le calcul lors d'un évènement du quickreport

    au 2) non ce calcul (en rouge) dans ce cas se fait bien avant et c'est là ton problème , car
    "l'impression" se fait lors de l'instruction imprime.QuickRep1.Preview

    donc oui il va falloir mettre un évènement à l'impression du total
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #27
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Ok je vais tout passer en évènements et tout calculer de cette façon.

    De plus que j'en est appris une bonne ce matin, le client veux 2 choses ( mais me disai une seule modification ).
    A présent voila comment je doit faire tourner les choses.

    Si le client prend un forfait ZPREPA, la commission est nul, et si il le prend pas la commission est réduite de 500.
    Du coup je vais devoir reprendre ma logique depuis le début.

    Je pense tourner la chose de cette façon :
    Je crée un évènement sur l'objet qui imprime le détail de la ligne, tester si il vaut ZPREPRA, si c'est le cas je met un booléen à true, et lors de l'impression du total je stock la valeur prévu, et je le remet à 0 en passant mon booléen à false.
    Enfin vais essayer de bidoullier une chose et je verrai ou je coince, mon étonnement parcontre est que je peux pas à ajouter des choses sur mon quickreport.

    Parcontre oui F1 je connais j'avou que je l'ai pas fait pour Format, vu qu'il m'avait filé le coup de Currency avant en cherchant sur StrToX j'avais vu le StrToCurr ma curiosité est passé dessus et ma détourné de Format().
    Enfin bon je reprend mon truc et je verrai si ca coince ou pas qui sais ^^.
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  8. #28
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par SirDarken Voir le message
    De plus que j'en est appris une bonne ce matin, le client veux 2 choses ( mais me disais une seule modification ).

    Un Cahier des charges signé est le seul moyen de s'en sortir
    Enfin je suis comme le médecin qui fumait un bon cigare en regardant tourner le glaçon dans son wiskie "Faites ce que je dis pas ce que je fais"

    plus sérieusement
    tout passer en évènements et tout calculer de cette façon.
    semble être la bonne solution
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  9. #29
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    être sérieux certe mais faut savoir le prendre avec amusement sinon je prendrai des ulcères

    Alors voila j'ai tout repris ( il me disai de m'insipré d'un autre logiciel que je n'est pas en ma possesion car les devs avant taffer directement sur la machine concerné, oui c'est du propre!!)
    Et j'ai quasiment résolu mon problème

    Il me reste qu'un léger souci quand je retire la commission totalement ( suite à une prise du forfait ZPREPRA ) et bien le joyeux code que j'ai fait me retire quand même 500 sur la somme, alors que pour le coup il devrait pas.
    J'ai pourtant bien regarder mon flag ( j'utilise ca pour savoir si je reduit ou pas ect ) et ca me semble correct.
    Mais je sent que mon ami QuickReport marche pas comme moi.

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    procedure Timprime.QRExpr9Print(sender: TObject; var Value: String);
    begin
      tmp_frais:=Value;
    end;
    //Calcul du montant de la commission.
    procedure Timprime.QRExpr11Print(sender: TObject; var Value: String);
    begin
    if (StrToFloat(montantligne) < 20000) and (StrToFloat(montantligne) > 0) and (ZprepaPris[1] = 'n') then
    begin
           main.ReducMontant := main.ReducMontant+500;
    end;
    if (StrToFloat(montantligne) < 20000) and (StrToFloat(montantligne) > 0) and (ZprepaPris[1] = 'o') then
    begin
            main.ReducPrepa := main.ReducPrepa + StrToCurr(Value);
            Value:='0';
            ZprepaPris := 'o';
    end;
    end;
    procedure Timprime.tot_fraisPrint(sender: TObject; var Value: String);
    begin
      Value:=FormatFloat('0.00',Accueil.complement+strToFloat(tmp_frais));
    end;
    //Sert à stocker le montant de la commande pour le calcul de commission.
    procedure Timprime.QRExpr1Print(sender: TObject; var Value: String);
    begin
    montantligne := Value;
    end;
    //Sert à calculer les totaux/moyennes.
    //Montant de base - X reduction de 500 représenter par ReducMontant.
    procedure Timprime.QRExpr7Print(sender: TObject; var Value: String);
    begin
            ComMoyVal:=Value;
            cmv:= StrToCurr(ComMoyVal);
            cmv := cmv - ReducMontant;
            ComMoyVal:=CurrToStr(cmv);
            Value:=ComMoyVal;
    end;
    //Test si la commande à ZPREPRA est passe à true ZprepaPris pour le calcul de la commission.
    procedure Timprime.QRDBText3Print(sender: TObject; var Value: String);
    begin
    if Value = 'ZPREPA' then
    begin
            ZprepaPris:='o';
    end
    end;
    //Permet de remettre à false ZprepaPris pour éviter les erreurs.
    procedure Timprime.QRLabel14Print(sender: TObject; var Value: String);
    begin
    ZprepaPris:='n';
    end;
     
    procedure Timprime.Tot_ComPrint(sender: TObject; var Value: String);
    var ComTotVal: String;
    ctv: Currency;
    begin
            ComTotVal:=Value;
            showMessage(ComTotVal);
            ctv:= StrToCurr(ComTotVal);
            ctv := ctv - main.ReducMontant;//Retrait des réductions de 500.
            showMessage('Reduc montant ' +CurrToStr(ctv));
            ctv := ctv - main.ReducPrepa;//Retrait des prises de Zprepa.
            showMessage('Valeur ZPrepa'+ CurrToStr(main.ReducPrepa));
            ComTotVal:=CurrToStr(ctv);
            showMessage('aprés modif'+ComTotVal);
            Value:=ComMoyVal;
    end;
    end.
    En tout cas merci d'ores et deja de votre aide j'aurai pas pondu ca lors de mon premier post, enfin je vais pas dire que je maitrise le truc encore mais j'ai retrouvé mes petits
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  10. #30
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Il me reste qu'un léger souci quand je retire la commission totalement ( suite à une prise du forfait ZPREPRA ) et bien le joyeux code que j'ai fait me retire quand même 500 sur la somme, alors que pour le coup il devrait pas.
    J'ai pourtant bien regarder mon flag ( j'utilise ca pour savoir si je reduit ou pas ect ) et ca me semble correct.
    Mais je sent que mon ami QuickReport marche pas comme moi.
    certainement un problème avec tes QRExpressions
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  11. #31
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Ah je ni avait pas pensé, mais si je les retirent mon calcul sera faux, enfin l'affichage sera faux vu que c'est l'expression qui me change l'affichage.

    Donc faudrai que je change la valeur par l'évenement encore.
    Je regarderai ca demain, là j'ai du attaquer du php ( c'est un peu plus ma tasse de thé ) pour un autre client.

    [Edit]
    Ah ah ca marche nickel, du moins pour moi on vera si le client aussi.
    Effectivement mon souci était l'expression, vu que c'est elle qui reduisai le montant, et que mon evenement etait aprés son impression c'etait logique ( pour une fois ).

    En tout cas encore merci pour ton aide et ta patience ( 3 pages quand même ), et promis dés que j'ai du temps je tatterai Delphi un peu plus.
    @bientôt
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [QuickReport] Problème avec QRExpr
    Par osma_1978 dans le forum QuickReport
    Réponses: 5
    Dernier message: 22/05/2008, 08h12
  2. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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