PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Chaineformate dans requête
Chaineformate dans requête
Iniciado por msimonelli, 15,jul. 2019 11:26 - 3 respuestas
Publicado el 15,julio 2019 - 11:26
Bonjour à tous,
je fais une requête qui recherche les doublons sur trois rubriques de fichiers: Nom+Prénom+date de naissance.
je voudrais utiliser une rubrique calculée avec la fonction chaineformate mais je n'arrive pas à y intégrer l'option de formatage ccMinuscule+ccSansAccent.
Quelqu'un a t'il réalisé cela?
Merci d'avance.
Miembro registrado
953 mensajes
Publicado el 15,julio 2019 - 12:21
Bonjour Michel,

oui lorsque vous souhaitez utiliser des fonctions ou constantes windev dans une requête, il faut tout préfixer par WL.

exemple :
_req est une chaîne="SELECT wl.ChaîneFormate('données SanS Accent et minuscule',wl.ccSansAccent+wl.ccMinuscule) as chaine_formatee"
_result est une Source dede Données

SI HExécuteRequêteSQL(_result,hRequêteDéfaut,_req) ALORS
HLitPremier(_result)
Info(_result.chaine_formatee)
HAnnuleDéclaration(_result)
FIN


bon dèv
Publicado el 15,julio 2019 - 13:51
Bonjour Christophe,
Tout d'abord, merci pour votre réponse:
Compter le nombre de WL.ChaîneFormate(Enfant.NomPrenom, wl.ccMajuscule+wl.ccSansAccent)+Enfant.Date_naissance non 'Null' par (Nom1, Prenom1 et Date_naissance) identiques. Le résultat est trié selon la valeur de Nom1 par ordre croissant, Prenom1 par ordre croissant et Date_naissance par ordre croissant.

A l'exécution, message d'erreur



:

N'étant pas féru de sql, un moyen de m'en sortir?
Miembro registrado
953 mensajes
Publicado el 15,julio 2019 - 15:56
rebonjour Michel,

j'avoue que je n'utilise jamais l'éditeur de requête de Windev :D

vos rubriques Nom et Prénom de votre fichier Enfant sont-elle indexé ?
si oui, est-ce que les options sensible à la casse et sensible à l'accentuation sont cochées ?

si ce n'est pas le cas, vous n'avez pas besoin de formater vos chaînes

Vous pouvez saisir directement ce code SQL dans votre requête, voir si vous obtenez ce que vous souhaitez :

SELECT
enfant.nom,
enfant.prenom,
enfant.date_naissance,
Count(CONCAT(enfant.nom,enfant.prenom,enfant.date_naissance)) as nb_doublon
FROM
enfant
GROUP by
enfant.nom,
enfant.prenom,
enfant.date_naissance
HAVING
nb_doublon > 1


la fonction CONCAT() permet de concaténer des chaînes