Explication des codes utilisés dans une procédure
Salut à tous!
Après une discussion résolue portant sur:
Citation:
(Windev15 : État croisé et paramétré avec une rubrique calculé)
Une discussion résolue par Laurent que je ne cesserai de remercier.
J'ai voulu par la suite créer les autres requêtes avec les procédures
locales sur base de ce que Laurent m'avais montré mais je n'y arrive toujours
pas, conscient du fait que je ne suis pas fort en programmation Windev aussi,
motivé par la volonté d'apprendre plutôt que d'être un copieur des codes,
je viens solliciter d'avantage votre aide pour deux choses:
1. L'explication si possible de chaque ligne de cette procédure donné par laurent:
Code:
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
| PROCEDURE TCD_operations_periode()
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 + "OPERATION.Dat_operation BETWEEN '" + SAI_Date_Debut + "' AND '" + SAI_Date_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,
op.Dat_operation ,
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.Dat_operation,
OPERATION.Cod_devise,
OPERATION.mont,
Taux_USD,
DEVISE.Taux,
OPERATION.mont * Taux_USD / DEVISE.Taux 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 OPERATION.Dat_operation BETWEEN '" + SAI_Date_Debut + "' AND '" + SAI_Date_Fin + "'"
sMa_requete += RC + [
) AS op,
COMPTE
WHERE
op.Num_compte = COMPTE.Num_compte
GROUP by Num_compte,Dat_operation,Lib_compte
]
// 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"}..Titre = "N° compte"
{"TABLE_TCD_operation_periode._COL2"}..Titre = "Date"
{"TABLE_TCD_operation_periode._COL3"}..Titre = "Libellé compte"
nNb_colonne = TableOccurrence(TABLE_TCD_operation_periode,toColonne)
{"TABLE_TCD_operation_periode._COL"+nNb_colonne}..Titre = "TOT (USD)" |
2. Aider moi à trouver un tutoriel qui me permettant de bien maitriser la programmation Windev.
Pour plus de détails, voyez la discussion ici: http://http://www.developpez.net/for...rique-calcule/
Merci d'avance!!!