OVH Cloud OVH Cloud

Tri sur une valeur provenant d'une fonction

3 réponses
Avatar
Deneb
Bonjour,

J'ai une requête qui extrait quelques infos (nom, prénom... valeur1,
valeur2). J'ai écrit une fonction qui combine valeur1 et valeur2 en une
seule valeur (y a un certain traitement à faire pour les combiner) et
j'affiche le tout dans un état pour l'imprimer.

Mon problème est que je dois trier le résultat sur cette nouvelle valeur
combinée avant d'imprimer. Comme la valeur combinée provient d'une
fonction VBA, elle n'est pas disponible pour faire un tri dans l'état
comme c'est le cas des champs nom et prénom. Y a sûrement une autre
façon d'y arriver...

Quelqu'un a une idée?

Merci d'avance...

3 réponses

Avatar
JMH
Salut
Dans ta requête tu vas sur une nouvelle colonne et tu procèdes comme suit:
Champ
ValeurCombinee:[Valeur1] & [Valeur2]
Tri
Ascendant
Affichage
Oui

et voilà

Bye


"Deneb" a écrit dans le message de news:

Bonjour,

J'ai une requête qui extrait quelques infos (nom, prénom... valeur1,
valeur2). J'ai écrit une fonction qui combine valeur1 et valeur2 en une
seule valeur (y a un certain traitement à faire pour les combiner) et
j'affiche le tout dans un état pour l'imprimer.

Mon problème est que je dois trier le résultat sur cette nouvelle valeur
combinée avant d'imprimer. Comme la valeur combinée provient d'une
fonction VBA, elle n'est pas disponible pour faire un tri dans l'état
comme c'est le cas des champs nom et prénom. Y a sûrement une autre
façon d'y arriver...

Quelqu'un a une idée?

Merci d'avance...


Avatar
Deneb
Salut,

J'aurais bien aimé mais je ne peux pas faire comme ça p.c.q. il n'y a
pas de champ ValeurCombinee dans la requête. C'est un peu tordu comme
situation. Pour résumer le tout de façon plus précise, la requête
ressemble à ça :

SELECT NOM, PRENOM, VALEUR1, VALEUR2
FROM ...

Mais les résultats à imprimer doivent avoir les 2 valeurs combinées
d'une façon particulière. Dans l'état, j'ai une zone de texte
ValeurCombinee dont la source de données est une fonction VB :
=CombineValeurs([VALEUR1];[VALEUR2])

Cette fonction prend les 2 valeurs (qui sont en format texte et dont le
contenu est du genre "999A-999B"), sépare les 2 parties de chaque côté
du séparateur "-", prend seulement les chiffres, les converti en
numérique, les additionne (Valeur1A + Valeur2A, Valeur1B + Valeur2B),
les reconverti en texte et les réassemble pour revenir au format
original. C'est un peu comme si on faisait :

"111A-222B"
+ "444A-555B"
-------------
"555A-777B" -> valeur combinée sur laquelle je dois faire le tri.

Dans l'état, les champs NOM et PRENOM sont disponibles pour trier dans
la boîte "Trier et regrouper" mais pas la zone de texte ValeurCombinee.
Je cherche comment trier les enregistrements sur cette valeur. Comme je
disais, c'est un peu tordu mais je suis pris avec ça et je dois trouver
une solution.

Merci, bye...



"JMH" wrote in news:u2dAF$:

Salut
Dans ta requête tu vas sur une nouvelle colonne et tu procèdes comme
suit: Champ
ValeurCombinee:[Valeur1] & [Valeur2]
Tri
Ascendant
Affichage
Oui

et voilà

Bye


"Deneb" a écrit dans le message de news:

Bonjour,

J'ai une requête qui extrait quelques infos (nom, prénom... valeur1,
valeur2). J'ai écrit une fonction qui combine valeur1 et valeur2 en
une seule valeur (y a un certain traitement à faire pour les
combiner) et j'affiche le tout dans un état pour l'imprimer.

Mon problème est que je dois trier le résultat sur cette nouvelle
valeur combinée avant d'imprimer. Comme la valeur combinée provient
d'une fonction VBA, elle n'est pas disponible pour faire un tri dans
l'état comme c'est le cas des champs nom et prénom. Y a sûrement une
autre façon d'y arriver...

Quelqu'un a une idée?

Merci d'avance...






Avatar
Deneb
Rebonjour,

C'est en plein ce qu'il me fallait. D'habitude, je ne fais pas de BD
alors je suis plutôt rouillé de ce côté.

Anyway, encore merci et bonne journée...



"JMH" wrote in news::


Salut

Je ne sais pas si j'ai tout compris, mais à mon avis tu dois tout
pouvoir faire dans ta requête. Et c'est même mieux de le gérer dans ta
requête. Dans une requête, on peut créer un nouveau champ qui est le
résultat de calculs, etc.., ce n'est pas seulement la représentation
exacte d'une table ou plusieurs tables.

Dans l'exemple ci-après, un champ ValeurCombinee est crée selon une
fonction définie.

Exemple selon ma compréhension de ton problème:
LA REQUETE:
SELECT tblAdresse.Nom, tblAdresse.Prenom, tblAdresse.Valeur1,
tblAdresse.Valeur2, funMaFonction([Valeur1],[Valeur2]) AS
ValeurCombinee FROM tblAdresse
ORDER BY funMaFonction([Valeur1],[Valeur2]);

LA FONCTION:
Function funMaFonction(Val1 As String, Val2 As String) As String
' Ton code spécifique
funMaFonction = Val1 & Val2
End Function

Voilà une piste avec aménagement selon ton cas.

Salutations.
Bye