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
| nNb_colonne est un entier
sMa_requete est une chaîne
sdRQ1 est une Source de Données
sdRQ2 est une Source de Données
sMa_requete = [
SELECT DISTINCT
OPERATION.Cod_devise AS Cod_devise
FROM
OPERATION
WHERE
]
sMa_requete += RC + TAB + "Left(OPERATION.Dat_operation,4) = '" + SAI_Saisie1 + "'"
SI COMBO_Opération..ValeurAffichée <> "" ALORS
sMa_requete += RC + TAB + "AND OPERATION.Typ_operation = '" + COMBO_Opération..ValeurAffichée + "'"
FIN
// Exécution de la requête
SI PAS HExécuteRequêteSQL(sdRQ1,MaConnexion1,hRequêteSansCorrection,sMa_requete) ALORS Erreur("Problème requête 1"); RETOUR
sMa_requete = [
SELECT
op.Num_compte,
COMPTE.Lib_compte,
]
// Les colonnes de devise sont construites dynamiquement ici
POUR TOUT sdRQ1
sMa_requete += RC + TAB + "SUM(CASE op.Cod_devise WHEN '" + sdRQ1.Cod_devise + "' THEN op.Mont ELSE 0 END) AS " + sdRQ1.Cod_devise + ","
FIN
// La sous requête "op" effectue les conversions des devises
sMa_requete += RC + [
Sum(op.TOT) AS TOT
FROM
(
SELECT
OPERATION.Num_compte,
OPERATION.Cod_devise,
CASE Typ_operation
WHEN 'Recette' THEN OPERATION.mont
WHEN 'Depense' OPERATION.mont * -1
END AS mont,
Taux_USD,
DEVISE.Taux,
CASE Typ_operation
WHEN 'Recette' THEN OPERATION.mont * Taux_USD / DEVISE.Taux
WHEN 'Depense' THEN OPERATION.mont * Taux_USD / DEVISE.Taux * -1
END AS TOT
FROM
OPERATION,
DEVISE,
( SELECT Taux AS Taux_USD
FROM DEVISE
WHERE Cod_devise = 'USD'
) AS USD
WHERE
OPERATION.Cod_devise = DEVISE.Cod_devise
]
sMa_requete += RC + TAB + "AND Left(OPERATION.Dat_operation,4) = '" + SAI_Saisie1 + "'"
SI COMBO_Opération..ValeurAffichée <> "" ALORS
sMa_requete += RC + TAB + "AND OPERATION.Typ_operation = '" + COMBO_Opération..ValeurAffichée + "'"
FIN
sMa_requete += RC + [
) AS op,
COMPTE
WHERE
op.Num_compte = COMPTE.Num_compte
GROUP by Num_compte,Lib_compte
ORDER BY Num_compte ASC
]
// copie sMa_requete vers le presse papier pour le debogage
Res est un entier
Res = VersPressePapier(sMa_requete)
SI Res = Faux ALORS
Erreur("Erreur lors de l'écriture dans le presse-papiers")
FIN
// Exécution de la requête
SI PAS HExécuteRequêteSQL(sdRQ2,MaConnexion1,hRequêteSansCorrection,sMa_requete) ALORS Erreur("Problème requête 2"); RETOUR
// remplit la table TCD
ConstruitTableFichier(TABLE_TCD_operation_periode,sdRQ2,taRemplirTable)
// renomme les colonnes
{"TABLE_TCD_operation_periode._COL1",indChamp}..Titre = "N° compte"
{"TABLE_TCD_operation_periode._COL2",indChamp}..Titre = "Libellé compte"
nNb_colonne = TableOccurrence(TABLE_TCD_operation_periode,toColonne)
{"TABLE_TCD_operation_periode._COL"+nNb_colonne,indChamp}..Titre = "TOT (USD)"
nNb_ligne est un entier
TableAjouteLigne(TABLE_TCD_operation_periode)
nNb_ligne = TableOccurrence(TABLE_TCD_operation_periode)
{"TABLE_TCD_operation_periode._COL1",indChamp}[nNb_ligne] = "TOTAUX"
POUR i = 1 A nNb_colonne
{"TABLE_TCD_operation_periode._COL" + i,indChamp}[nNb_ligne] = {"TABLE_TCD_operation_periode._COL" + i,indChamp}[ligneTotal]
FIN
{"TABLE_TCD_operation_periode",indChamp}[nNb_ligne]..CouleurFond = GrisFoncé |
Partager