PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → [WD9] : Requête + fonction mathématique
[WD9] : Requête + fonction mathématique
Iniciado por vbenner, ago., 23 2005 11:58 AM - 2 respostas
Publicado em agosto, 23 2005 - 11:58 AM
Bonjour,

Je suis en train de faire une requête qui contient 3
colonnes : A, B, C.

Je voudrais faire apparaître une nouvelle colonne
D qui ferait appel à une procédure globale qui
recevrait en paramètre les colonnes A, B et C.

Avec Microsoft Access, pas de problème, on fait
SELECT A, B, C, GrosCalcul(A, B, C) AS LeCalcul
FROM LaTable.

Comment puis-je faire avec Windev 9 ?

Merci de votre aide,

Vincent
Publicado em agosto, 23 2005 - 1:14 PM
Bonjour,
Je ne sais pas ce que tu entends par Gros Calcul ?
Sinon sous l'éditeur de requête tu utilises le bouton formule mathématique et tu tapes ton calcul. Exemple : A+B+C

Tu peux aussi exécuter ta requête en créant une colonne C à vide.Puis tu la parcours du début à la fin en faisant C = Gros Calcul ABC avec des hmodifie(tarequête) le champ C est alors à jour.


Voilà.

Michel.
Publicado em agosto, 23 2005 - 4:32 PM
Bonjour,

En fait, le GrosCalcul que je veux faire n'est pas possible à partir des fonctions mathématiques qui sont dans la partie 'Formule mathématique' (il s'agit en fait de recherches dans une autre table). C'est pourquoi, je veux faire appel à une fonction globale appelée GrosCalcul et qui recevrait en paramètre A, B et C qui sont 3 colonnes de ma requête.

Ma table contient les champs suivants :

NUM_TICKET
LIGNE
PRIX
TARIF
DATE_VOYAGE

Je veux faire un état qui affiche les colonnes suivantes :
LIGNE Somme(PRIX) Somme(PRIX si TARIF = NUL)

en fonction de DATE_VOYAGE compris entre DATE_DEB et DATE_FIN

Pour Somme(PRIX), c'est OK, j'y arrive facilement

Pour Somme(PRIX si TARIF = NUL), c'est plus compliqué !

C'est pourquoi, j'ai fait une procédure global qui reçoit 3 paramètres :
LaLigne, LaDateDeb et LaDateFin. Cette procédure fait le travail suivant :

reqSQL est une chaîne
maREQ est une Source de Données
res est un entier

//----------------------------------------------------------------------------------//
// REQUETE SQL
//----------------------------------------------------------------------------------//
reqSQL = "SELECT SUM(Prix) AS SommeDeLePrix " +...
"FROM T_TICKETS " +...
"WHERE DATE_TICKET >= '" + DateDeb + "' " + ...
"AND DATE_TICKET <= '" + DateFin + "' " + ...
"AND LIGNE = " + LaLigne + " "

//----------------------------------------------------------------------------------//
// EXECUTION
//----------------------------------------------------------------------------------//
SI PAS HExécuteRequêteSQL(maREQ, hRequêteDéfaut, reqSQL) ALORS
Erreur(HErreurInfo())
RENVOYER -1
FIN

res = HLitPremier(maREQ)
RENVOYER maREQ.SommeDeLePrix



Le problème, c'est que je n'arrive pas à intégrer cette fonction dans l'éditeur de requête !!!


Merci de votre aide,

Vincent