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

QuickReport Discussion :

Utilisation de QREXPR


Sujet :

QuickReport

  1. #1
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    308
    Points
    50
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 308
    Points : 50
    Par défaut Utilisation de QREXPR
    Bonjour,
    Je rencontre toujours des diffultés pour calculer le montant de ma facture.
    j'ai 2 tables : facture et elementfacture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    facture: numero_facture, objet,annee_facture, code_client
    elementfacture:numero_ordre,designation,quantite,coutUnitaire,couttotal,numero_facture,annee_facture.
    Je veux maintenant caluler le montant de ma facture.
    l'utilisateur entre le numero avec l'année de la facture qu'il veut imprimer
    Dans mon Query:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select couttotal from facture ,elementfacture where facture.numero_facture = :num and facture.annee_facture = :an and facture.numero_facture = elementfacture.numero_facture and facture.annee_facture = elementfacture.annee_facture;
    Dans l'expression de QREXPR je met: mais le resultat me donne 0.

    Merci bien de m'aider, je souffre avec ça depuis...

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 409
    Points : 42 016
    Billets dans le blog
    65
    Par défaut
    2 Remarques avant tout

    - Pourquoi ne pas avoir continuer le Post de départ http://www.developpez.net/forums/d95...ntant-facture/

    Ceci étant , dans ma suggestion sur le Post précédent , il fallait choisir l'une ou l'autre de ces solutions

    En utilisant le QRExpr cela aurait du être par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SUM(element.couttotal) 
    //ou encore 
    SUM(element.quantite*element.coutUnitaire)
    Attention a ne pas oublié le ResetAfterPrint si édition de plusieurs factures

    Pourquoi cela n'a pas marché avec le Query ?
    Le QRExpr fonctionne avec les datasets du QuickReport, grosso-modo un QRExpr est initialisé en début d'état (ou par Reset programmé) et incrémenté chaque fois qu'un enregistrement de ce dataset est lu pour impression (QRBandDetail par exemple) . Dans le cas d'une édition de facture classique : un entete , des détails (ici éléments) , un pied (contenant entre autre la QRExpr) que se passe t'il : le Query ,n'est jamais lu , seul la table elementfacture est parcourue

    Qu'aurais-je du faire avec ma Query?
    Utiliser un simple QRDBText ou encore , mais c'est un autre débat dépendant de la BDD et des composants pour y accéder, utiliser une query pour accéder a Facture du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT F.*,(SELECT SUM(Couttotal) FROM ELEMENTFACTURE 
    WHERE numero_facture = F.numero_facture and annee_facture = F.annee_facture)  AS COUTTOTAL 
    FROM Facture F 
    ..

  3. #3
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    308
    Points
    50
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 308
    Points : 50
    Par défaut
    Merci bien SergioMaster,
    Mais dans votre code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SUM(element.couttotal) 
    //ou encore 
    SUM(element.quantite*element.coutUnitaire)
    element correspond à quoi?

    merci bien de m'eclaircir!

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 409
    Points : 42 016
    Billets dans le blog
    65
    Par défaut
    méa culpa , element semble être elementfacture dans ton cas
    en fait c'est la table que je considère comme celle étant la table détail

    Bien que involontaire ce n'est cependant pas plus mal , je préfère toujours distinguer le NOM de la TABLE de la Base de données du nom de la table ou query dans le programme . Or ici il s'agit bien du nom dans le programme !!

    une remarque encore : Plus la demande est précise et détaillée Plus la réponse sera précise

  5. #5
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    308
    Points
    50
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 308
    Points : 50
    Par défaut
    Merci toujours,
    en fait couttotal est un champ de ma table facture et non elementfacture car le couttotal somme les differents couts de elementfacture.
    Mon problème au niveau de l'utilisation de en considerant element comme table est que il faut verifier la condition que si le numero et annee de elementfacture est egal à ceux de facture alors on fait la sommation. Avec query on utilise une requete mais avec table comment on va exprimer cette condition dans la mesure où table prend tous les enregistrements contenu dans la table de la base de données.

    dans ma comprehension si on fait on calcule le montant de toutes les factures or on veut calculer le montant d'une facture.

    Merci bien toujours!

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 409
    Points : 42 016
    Billets dans le blog
    65
    Par défaut
    TOUT CA est loin d'être clair !!!

    Clarifions ,
    1) QUE veux-tu , l'édition d'une factures ou d'un ensemble de Facture
    2) QUEL est la Base de Données , les composants utilisés pour y accéder
    3) DÉCRIS CHAQUE TABLE , les composants utilisés , avec leur nom dans le programme

  7. #7
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    308
    Points
    50
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 308
    Points : 50
    Par défaut
    Clarifions ,
    1) QUE veux-tu , l'édition d'une factures ou d'un ensemble de Facture
    2) QUEL est la Base de Données , les composants utilisés pour y accéder
    3) DÉCRIS CHAQUE TABLE , les composants utilisés , avec leur nom dans le programme
    voici les elements d'eclaircissements:
    1) je veux l'edition d'une facture
    2) j'utilise interbase, les IBTable , IBQuery ... pour y acceder
    3)voici ma table facture et elementfacture dans la BD
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    facture: numero_facture, objet,annee_facture, code_client
    elementfacture:numero_ordre,designation,quantite,coutUnitaire,couttotal,numero_facture,annee_facture.
    Dans le programme la table facture est IBTable1 et la table elementfacture est IBTable2.
    Maintenant je veux calculer le montant de ma facture (un enregistrement de IBTable1) dont les elements se trouvent dans IBTable2. Pour cela si l'utilisateur entre un numero et une annee de facture (IBTable1) je dois voir tous les enregistrements de elementfacture (IBTable2) qui ont les meme numero et annee et calculer la somme des coutunitaires pour avoir le montant de la facture correspondant.


    Merci de m'aider toujours!

  8. #8
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 409
    Points : 42 016
    Billets dans le blog
    65
    Par défaut
    donc c'est bien ce que je proposais dans ma première réponse

    ça c'est pour l'entête de facture
    Code SQL QUERY Entete : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT F.*,(SELECT SUM(Couttotal) FROM ELEMENTFACTURE 
    WHERE numero_facture = F.numero_facture AND annee_facture = F.annee_facture)  AS COUTTOTAL 
    FROM Facture F 
    WHERE F.ANNEE=:ANNEESAISIE AND F.NUMERO=:NUMEROSAISI

    et pour les détails
    Code SQL QUERY Detail : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM ELEMENTFACTURE WHERE numero_facture = :numero_facture AND annee_facture =:annee_facture)

    un datasource sur entete permettra de lier detail à entete pour les para mètres

    Un Beforeprint

    pour ouvrir les deux querys
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    entete.active:=false;
    entete.paramByName('ANNEESAISIE').as ????? := <Zone saisie>
    entete.paramByName('NUMEROSAISIE').as ????? := <Zone saisie>
    Entete.active:=true; 
    Detail.Active:=True;
    Pour ce qui est du QuickReport le datasource est bien Detail
    pas besoin de QRExpr mais d'un QRDBText

    Autre solution sans le select imbriqué de entete mais avec un QRExpr

    Code SQL QUERY Entete : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT * FROM Facture F 
    WHERE ANNEE=:ANNEESAISIE AND NUMERO=:NUMEROSAISI

    le sql de detail est identique , le code du beforeprint aussi

    seul change le fait qu'il faut un qrExpr de la form SUM(detail.quantite*detail.coutUnitaire) ou SUM(detail.couttotal)

    PS
    j'espere au moins que couttotal est un champ computed by
    je ne fais que mettre des points sur les i de ma première réponse
    en dernier point , toujours préférer des IBQuery a des IBtables

  9. #9
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    308
    Points
    50
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 308
    Points : 50
    Par défaut
    Bonjour,

    Merci bien SergioMaster;
    Je rencontre certaines difficultés
    un datasource sur entete permettra de lier detail à entete pour les para mètres
    Un Beforeprint
    je n'ai pas bien compris cette partie.

    Je vous explique ce que j'ai fait:
    J'ai pris un composant IBQuery pour la premiere requete et un autre pour la deuxième.
    Mais pour lier le premier avec le deuxième je n'ai pas su le faire. Je n'ai pas retrouvé Beforeprint dans les evenements des IBQuery.

    Quand j'utilise (procedure de mon bouton valider)
    entete.active:=false;
    entete.paramByName('ANNEESAISIE').AS ????? := <Zone saisie>
    entete.paramByName('NUMEROSAISIE').AS ????? := <Zone saisie>
    Entete.active:=true;
    Detail.Active:=True;
    il ne me donne plus tous les elements d'une facture mais l'element dont le numero et l'année ont été saisies.
    Donc ça fausse le resultat affiché dans mon DBGrid.
    Je ne sais pas si c'est du au fait que je n'ai pas su lier les deux IBQuery.

    Merci bien de m'aider!

  10. #10
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 409
    Points : 42 016
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par Abou Zar Voir le message
    Mais pour lier le premier avec le deuxième je n'ai pas su le faire
    ajouter un datasource (datasource1) pour le premier IBQuery1, propriété du datasource : Dataset=IBQuery1
    pour le deuxième IBQuery2 remplir la propriété Datasource=Datasource1

    .Je n'ai pas retrouvé Beforeprint dans les évènements des IBQuery.
    Normal puisque c'est un évènement du Quickreport
    Quand j'utilise (procédure de mon bouton valider) il ne me donne plus tous les éléments d'une facture mais l'élément dont le numéro et l'année ont été saisies.
    Normalement cela devrait donné pour IBQuery2 tous les éléments ANNEE-NUMERO
    Donc ça fausse le résultat affiché dans mon DBGrid,Je ne sais pas si c'est du au fait que je n'ai pas su lier les deux IBQuery.
    Tout a fait logique puisque on ne sélectionne qu'une facture et non , rien a voir avec la liaison . Sinon c'est moi qui ne comprend pas le shéma des tables et la relation entre facture et élément facture . Pour moi la liaison
    est de type 0,n , c'est a dire une facture contient de zéro à n éléments
    la liaison se faisant sur ANNEE,NUMERO


    Deux solutions pour afficher une grille différente
    : soit tu utilises d'autres IBQuerys soit tu ajoutes dans le BeforePrint un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    IBQuery1.DisableControls;
    et dans un afterPrint (toujours du Quickreport )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // remise état initial
    IBQuery1.EnableControls;

  11. #11
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    308
    Points
    50
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 308
    Points : 50
    Par défaut
    Bonjour,
    J'ai certaines difficultés quant au résultat de la prévisualisation de ma facture.
    Quand on met le numero et l'année et qu'on valide les informations de la facture sont affichées. Le cout total est bien exact aussi. C'est la facture qui est affichée et non les elements de la facture (selon la requete ).

    Maintenant quand je clique sur mon bouton previsualiser
    code sur la première page il me repete le premier element de la facture sur toute la page et en bas de ma page de previsualisation il met page 1 sur 108 par exemple or tous mes elements peuvent s'afficher sur une seule page.

    en fait il duplique les elements plusieurs fois.

    J'ai utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IBQuery1.DisableControls; et IBQuery1.EnableControls;
    comme une solution pour afficher tous mes elements.

    Quant à votre deuxième solution (pour afficher tous mes elements de la facture dans mon DBGrid) qui etait d'utiliser d'autres IBQuery , je l'ai pas essayé car je ne sais pas comment je pourrai utilisé ces nouveaux IBquery et pouvoir ouvrir les 2 Querys entete et detail que vous avez donné.


    Merci bien toujours de m'aider!

  12. #12
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 409
    Points : 42 016
    Billets dans le blog
    65
    Par défaut
    je ne peux pas répondre avec si peu de renseignements !

    soit ta base de données est mal conçue , mais pour cela il faudrait avoir la description EXACTE des tables et de leur relation(s)

    soit ton QReport est mal conçu et là , idem il faut au moins le voir
    soit par image-écran soit par un descriptif détaillé , soit par la partie du '.dfm' correspondant

  13. #13
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    308
    Points
    50
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 308
    Points : 50
    Par défaut
    Bonjour,
    Merci beaucoup Sergio Master pour l'attention que vous portez à mon problème.

    Voici mes 2 tables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    facture: numero_facture, objet,annee_facture, code_client
    elementfacture:numero_ordre,designation,quantite,coutUnitaire,couttotal,num_facture,an_facture
    Une facture a un ou plusieurs elementfacture.

    Voici le descriptif de mon QReport.
    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
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    485
    486
    487
    488
    489
    490
    491
    492
    493
    494
    495
    496
    497
    498
    499
    500
    501
    502
    503
    504
    505
    506
    507
    508
    509
    510
    511
    512
    513
    514
    515
    516
    517
    518
    519
    520
    521
    522
    523
    524
    525
    526
    527
    528
    529
    530
    531
    532
    533
    534
    535
    536
    537
    538
    539
    540
    541
    542
    543
    544
    545
    546
    547
    548
    549
    550
    551
    552
    553
    554
    555
    556
    557
    558
    559
    560
    561
    562
    563
    564
    565
    566
    567
    568
    569
    570
    571
    572
    573
    574
    575
    576
    577
    578
    579
    580
    581
    582
    583
    584
    585
    586
    587
    588
    589
    590
    591
    592
    593
    594
    595
    596
    597
    598
    599
    600
    601
    602
    603
    604
    605
    606
    607
    608
    609
    610
    611
    612
    613
    614
    615
    616
    617
    618
    619
    620
    621
    622
    623
    624
    625
    626
    627
    628
    629
    630
    631
    632
    633
    634
    635
    636
    637
    638
    639
    640
    641
    642
    643
    644
    645
    646
    647
    648
    649
    650
    651
    652
    653
    654
    655
    656
    657
    658
    659
    660
    661
    662
    663
    664
    665
    666
    667
    668
    669
    670
    671
    672
    673
    674
    675
    676
    677
    678
    679
    680
    681
    682
    683
    684
    685
    686
    687
    688
    689
    690
    691
    692
    693
    694
    695
    696
    697
    698
    699
    700
    701
    702
    703
    704
    705
    706
    707
    708
    709
    710
    711
    712
    713
    714
    715
    716
    717
    718
    719
    720
    721
    722
    723
    724
    725
    726
    727
    728
    729
    730
    731
    732
    733
    734
    735
    736
    737
    738
    739
    740
    741
    object QRBand1: TQRBand
      Left = 38
      Top = 38
      Width = 718
      Height = 171
      Frame.Color = clBlack
      Frame.DrawTop = False
      Frame.DrawBottom = False
      Frame.DrawLeft = False
      Frame.DrawRight = False
      AlignToBottom = False
      Color = clWhite
      ForceNewColumn = False
      ForceNewPage = False
      Size.Values = (
        452.437500000000000000
        1899.708333333333000000)
      BandType = rbTitle
      object QRLabel1: TQRLabel
        Left = 16
        Top = 40
        Width = 40
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          42.333333333333340000
          105.833333333333300000
          105.833333333333300000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Caption = 'Objet :'
        Color = clWhite
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRLabel2: TQRLabel
        Left = 16
        Top = 72
        Width = 32
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          42.333333333333340000
          190.500000000000000000
          84.666666666666680000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Caption = 'Doit :'
        Color = clWhite
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRLabel3: TQRLabel
        Left = 8
        Top = 96
        Width = 80
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          21.166666666666670000
          254.000000000000000000
          211.666666666666700000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Caption = 'Code Client : '
        Color = clWhite
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRDBText1: TQRDBText
        Left = 88
        Top = 40
        Width = 110
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          232.833333333333400000
          105.833333333333300000
          291.041666666666700000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Color = clWhite
        DataSet = DataModule1.IBQuery1
        DataField = 'OBJET'
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRDBText2: TQRDBText
        Left = 88
        Top = 72
        Width = 51
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          232.833333333333400000
          190.500000000000000000
          134.937500000000000000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Color = clWhite
        DataSet = DataModule1.IBQuery1
        DataField = 'nom _clt'
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRDBText3: TQRDBText
        Left = 88
        Top = 96
        Width = 68
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          232.833333333333400000
          254.000000000000000000
          179.916666666666700000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Color = clWhite
        DataSet = DataModule1.IBQuery1
        DataField = 'CODE_CLT'
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRLabel5: TQRLabel
        Left = 224
        Top = 136
        Width = 63
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          592.666666666666800000
          359.833333333333400000
          166.687500000000000000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Caption = 'Facture N'#176
        Color = clWhite
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRDBText4: TQRDBText
        Left = 296
        Top = 136
        Width = 91
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          783.166666666666800000
          359.833333333333400000
          240.770833333333300000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Color = clWhite
        DataSet = DataModule1.IBQuery1
        DataField = 'NUMERO_FACTURE'
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRLabel6: TQRLabel
        Left = 376
        Top = 136
        Width = 59
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          994.833333333333400000
          359.833333333333400000
          156.104166666666700000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Caption = 'de l'#39'ann'#233'e'
        Color = clWhite
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRDBText5: TQRDBText
        Left = 464
        Top = 136
        Width = 87
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          1227.666666666667000000
          359.833333333333400000
          230.187500000000000000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Color = clWhite
        DataSet = DataModule1.IBQuery1
        DataField = 'ANNEE_FACTURE'
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
    end
    object QRBand2: TQRBand
      Left = 38
      Top = 209
      Width = 718
      Height = 56
      Frame.Color = clBlack
      Frame.DrawTop = False
      Frame.DrawBottom = False
      Frame.DrawLeft = False
      Frame.DrawRight = False
      AlignToBottom = False
      Color = clWhite
      ForceNewColumn = False
      ForceNewPage = False
      Size.Values = (
        148.166666666666700000
        1899.708333333333000000)
      BandType = rbGroupHeader
      object QRLabel7: TQRLabel
        Left = 56
        Top = 24
        Width = 64
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          148.166666666666700000
          63.500000000000000000
          169.333333333333300000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Caption = 'Num Ordre'
        Color = clWhite
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRLabel8: TQRLabel
        Left = 168
        Top = 24
        Width = 69
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          444.500000000000000000
          63.500000000000000000
          182.562500000000000000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Caption = 'Designation'
        Color = clWhite
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRLabel10: TQRLabel
        Left = 464
        Top = 24
        Width = 81
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          1227.666666666667000000
          63.500000000000000000
          214.312500000000000000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Caption = 'PRIX UNITAIRE'
        Color = clWhite
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRLabel11: TQRLabel
        Left = 560
        Top = 24
        Width = 50
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          1481.666666666667000000
          63.500000000000000000
          132.291666666666700000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Caption = 'Quantit'#233
        Color = clWhite
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRLabel12: TQRLabel
        Left = 640
        Top = 24
        Width = 44
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          1693.333333333333000000
          63.500000000000000000
          116.416666666666700000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Caption = 'Prix HT'
        Color = clWhite
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
    end
    object QRSubDetail1: TQRSubDetail
      Left = 38
      Top = 265
      Width = 718
      Height = 72
      Frame.Color = clBlack
      Frame.DrawTop = False
      Frame.DrawBottom = False
      Frame.DrawLeft = False
      Frame.DrawRight = False
      AlignToBottom = False
      Color = clWhite
      ForceNewColumn = False
      ForceNewPage = False
      Size.Values = (
        190.500000000000000000
        1899.708333333333000000)
      Master = Owner
      DataSet = DataModule1.IBQuery1
      HeaderBand = QRBand2
      PrintBefore = False
      PrintIfEmpty = True
      object QRDBText6: TQRDBText
        Left = 56
        Top = 16
        Width = 76
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          148.166666666666700000
          42.333333333333340000
          201.083333333333300000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Color = clWhite
        DataSet = DataModule1.IBQuery2
        DataField = 'NUMERO_ORDRE'
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRDBText7: TQRDBText
        Left = 168
        Top = 16
        Width = 88
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          444.500000000000000000
          42.333333333333340000
          232.833333333333400000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Color = clWhite
        DataSet = DataModule1.IBQuery2
        DataField = 'DESIGNATION'
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRDBText9: TQRDBText
        Left = 456
        Top = 16
        Width = 99
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          1206.500000000000000000
          42.333333333333340000
          261.937500000000000000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Color = clWhite
        DataSet = DataModule1.IBQuery2
        DataField = 'COUTUNITAIRE'
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRDBText10: TQRDBText
        Left = 576
        Top = 16
        Width = 46
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          1524.000000000000000000
          42.333333333333340000
          121.708333333333300000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Color = clWhite
        DataSet = DataModule1.IBQuery2
        DataField = 'QUANTITE'
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRDBText11: TQRDBText
        Left = 640
        Top = 16
        Width = 45
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          1693.333333333333000000
          42.333333333333340000
          119.062500000000000000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Color = clWhite
        DataSet = DataModule1.IBQuery2
        DataField = 'COUTTOTAL'
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
    end
    object QRBand3: TQRBand
      Left = 38
      Top = 337
      Width = 718
      Height = 232
      Frame.Color = clBlack
      Frame.DrawTop = False
      Frame.DrawBottom = False
      Frame.DrawLeft = False
      Frame.DrawRight = False
      AlignToBottom = False
      Color = clWhite
      ForceNewColumn = False
      ForceNewPage = False
      Size.Values = (
        613.833333333333400000
        1899.708333333333000000)
      BandType = rbSummary
      object QRLabel13: TQRLabel
        Left = 128
        Top = 192
        Width = 241
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          338.666666666666700000
          508.000000000000000000
          637.645833333333400000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Caption = 'Arret'#233' la presente facture '#224' la somme de '
        Color = clWhite
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRLabel14: TQRLabel
        Left = 464
        Top = 24
        Width = 49
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          1227.666666666667000000
          63.500000000000000000
          129.645833333333300000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Caption = 'Total HT'
        Color = clWhite
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRLabel15: TQRLabel
        Left = 464
        Top = 56
        Width = 56
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          1227.666666666667000000
          148.166666666666700000
          148.166666666666700000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Caption = 'TVA 18%'
        Color = clWhite
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRLabel16: TQRLabel
        Left = 464
        Top = 96
        Width = 56
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          1227.666666666667000000
          254.000000000000000000
          148.166666666666700000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Caption = 'Total TTC'
        Color = clWhite
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRLabel17: TQRLabel
        Left = 464
        Top = 128
        Width = 88
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          1227.666666666667000000
          338.666666666666700000
          232.833333333333400000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Caption = 'NET A PAYER'
        Color = clWhite
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
      object QRDBText8: TQRDBText
        Left = 640
        Top = 24
        Width = 57
        Height = 17
        Frame.Color = clBlack
        Frame.DrawTop = False
        Frame.DrawBottom = False
        Frame.DrawLeft = False
        Frame.DrawRight = False
        Size.Values = (
          44.979166666666670000
          1693.333333333333000000
          63.500000000000000000
          150.812500000000000000)
        Alignment = taLeftJustify
        AlignToBand = False
        AutoSize = True
        AutoStretch = False
        Color = clWhite
        DataSet = DataModule1.IBQuery1
        DataField = 'TOTALHT'
        Transparent = False
        WordWrap = True
        FontSize = 10
      end
    end
    Merci bien!

  14. #14
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 409
    Points : 42 016
    Billets dans le blog
    65
    Par défaut
    La relation entre les deux tables ?

    je relève une erreur , il n'y a pas de Bande Détail !!


    normalement cela devrait être un état simple , lié à IBQUery2

    -------------------------------------------------------------------
    BANDE TITRE
    -------------------------------------------------------------------
    Header column
    -------------------------------------------------------------------
    Bande détail (sur iBQuery2)
    -------------------------------------------------------------------
    Summary QRExpr ici
    -------------------------------------------------------------------

  15. #15
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    308
    Points
    50
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 308
    Points : 50
    Par défaut
    Bonjour,
    SergioMaster le problème est resolu avec votre solution. Je vous en remercie sincerement.

    Maintenant, ayant calculé le cout total de la facture qui correspond au TotalHt (total hors taxe) je dois maintenant calculé la TVA (18% sur le totalht deja calculé). Ensuite faire la sommation entre TotalHT et TVA pour avoir le TotalTTC (total toute taxe comprise). Ces 2 champs sont dans ma base et j'ai tenté de modifier la requete de IBQuery1 pour les calculer mais ça n'a pas marché.
    Je precise que l'utilisation de type computed by n'a pas marché (le premier enregistrement est bien calculé mais le deuxieme conserve les valeurs du premier donc je l'ai abandonné).

    Merci bien toujours pour votre aide!

  16. #16
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 409
    Points : 42 016
    Billets dans le blog
    65
    Par défaut
    En utilisant les QRExpr c'est Faisable

    QRExpr1 = SUM(element.couttotal)
    QRExpr2 = FormatNumeric('#0.00',SUM(element.couttotal*0.18))
    QRexpr3 = FormatNumeric('#0.00',SUM(element.couttotal*1.18))
    cependant cette solution n'est pas satisfaisante car généralement on y trouve des écarts du aux arrondis

    dans ton cas , sans changer la Query1, on peut aussi utiliser les QRExpr suivantes

    QRExpr1 = SUM(element.couttotal)
    QRExpr2 = FormatNumeric('#0.00',SUM(Query1.couttotal*0.18))
    QRexpr3 = FormatNumeric('#0.00',SUM(Query1.couttotal*1.18))
    plus satisfaisante , car dans ce cas, pas d'écart lors d'un contrôle 'à la main '

    il est bien sur possible de faire les calculs dans le SQL , ce qui donnerait une query absolument abominable de ce style

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT F.*,
    (SELECT SUM(Couttotal) FROM ELEMENTFACTURE 
    WHERE numero_facture = F.numero_facture AND annee_facture = F.annee_facture)  AS COUTTOTAL,
    (SELECT SUM(Couttotal) FROM ELEMENTFACTURE 
    WHERE numero_facture = F.numero_facture AND annee_facture = F.annee_facture)*0.18  AS TVA,
    (SELECT SUM(Couttotal) FROM ELEMENTFACTURE 
    WHERE numero_facture = F.numero_facture AND annee_facture = F.annee_facture)*1.18  AS TTC
    FROM Facture F

    améliorable par l'utilisation de CTE (Common Table Expression) , si Interbase le permet


    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    WITH T AS (SELECT NUMERO_FACTURE,ANNEE_FACTURE,SUM(Couttotal) as HT FROM ELEMENTFACTURE GROUP BY 1,2) 
     
    SELECT F.*,T.HT,T.HT*0.18 AS TVA,T.HT*1.18 AS TTC
    FROM FACTURE F  LEFT JOIN T ON  
    T.numero_facture = F.numero_facture AND T.annee_facture = F.annee_facture

Discussions similaires

  1. Utilisation de QRExpr !
    Par menoulette dans le forum QuickReport
    Réponses: 7
    Dernier message: 16/02/2014, 11h57
  2. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 16h57
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 13h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 17h01
  5. Réponses: 2
    Dernier message: 21/03/2002, 00h01

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