Hello ,

Hello,

Pour demander une inscription sur le site, merci de remplir le formulaire suivant.

Il sera transmis à Vincent qui fera le nécessaire... à condition bien sûr qu'il vous connaisse ! ;-)

Seul l'email est obligatoire

Loading

Un email vient d'être envoyé à Vincent qui traitera votre demande d'inscription au plus vite.

Saisir votre email. Si celui-ci correspond bien à celui d'un de nos membres un nouveau mot de passe sera généré et vous recevrez un courriel pour vous le communiquer.

Loading

Un email vient de vous être envoyé.

| Mot de passe perdu ? JavaScript nécessaire !
Fermer

Pour  compter directement le nombre d’enregistrements du résultat d’un GROUP BY  :

select count(*) from
(SELECT MLWHLO, MLITNO , count(*) FROM mitloc join mitwhl onmlcono=mwcono and mlwhlo=mwwhlo WHERE mwcono = 100 and mwfaci ='402' GROUP BY MLWHLO, MLITNO) Mon_alias (n’importe quel nom bidon)

 

Remplacer une partie de chaîne de caractère avec SQL

Remplacer un libellé par un autre dans tous les enregistrements d’un fichier, avec SQL. C’est assez facile, et cela peut servir pour offrire des possibilités de paramétrage plus ou moins complexe aux utilisateurs.

La requête SQL
UPDATE QTEMP/TMPDUCLIB
SET LGNLIB =
CAST(
SUBSTR(LGNLIB, 1,
LOCATE(TRIM( :WMOT ), LGNLIB) -1 )
CONCAT TRIM ( :WVAL )
CONCAT SUBSTR(LGNLIB,
LOCATE(TRIM( :WMOT ), LGNLIB)
+ LENGTH(TRIM( :WMOT )) ,
LENGTH(LGNLIB) - (
LOCATE(TRIM( :WMOT ), LGNLIB)
+ LENGTH(TRIM( :WMOT )) -1 ))
AS CHAR(200))
WHERE LGNLIB LIKE
'%' CONCAT TRIM( :WMOT ) CONCAT '%'

Explication

- La variable WMOT contient la valeur de la chaîne de caractère à remplacer.
- La variable WVAL contient la valeur de remplacement.
- Dans l’exemple, le remplacement se fait sur un fichier qui contient une zone LGNLIB de 200 caractères de long. Il s’agit de libellés à imprimer.
- Lorsque la requête est lancée avec par exemple WMOT = "#DATE#" et WVAL = "010507", tous les enregistrements contenant #DATE# sont modifiés avec la valeur 010507.


Utilisation

J’utilise souvent ce système pour permettre aux utilisateurs de paramétrer certaines choses comme des libellés à éditer où viennent s’insérer des valeurs variables lors des traitements.

Exemples

L’utilisateur saisit dans son fichier de libellés à éditer :
Date limite de dépôt de la déclaration le : #DATE_DCL#
Cotisations à régler au plus tard le : #DATE_COT#
Salaire versé le : #DATE_VER#

Le traitement appel autant de fois que de variables possibles la requêtes SQL que l’on a mis dans une procédure, en affectant avant WMOT et WVAL avec les valeurs adéquates :
WMOT = "#DATE_DCL#"
WVAL = "01/05/2007"
Appel de la requête SQL

WMOT = "#DATE_COT#"
WVAL = "05/05/2007"
Appel de la requête SQL

WMOT = "#DATE_VER#"
WVAL = "05/05/2007"
Appel de la requête SQL

Vous faite autant d’appel que de variables prévues dans votre fonctionnel. Si l’utilisateur ne les utilise pas dans son paramétrage, pas d’impact dans vos programmes.

Astuce

essayer de mettre un mot clé de la même taille que vos variables de remplacement (#DATE_DCL# fait 10 de long, comme la date 01/05/2007), ceci pour faciliter les cadrages.

Parfois, en 5250, on souhaite maîtriser le positionnement des libellés à des endroits fixes de la ligne.
Première partie #DA# seconde partie ICI commence la partie fixe

Donnera
Première partie 01/02/2007 seconde partie ICI commence la partie fixe

Alors que
Première partie #DAT_DECL# seconde partie ICI commence la partie fixe

Donnera
Première partie 01/02/2007 seconde partie ICI commence la partie fixe

Soit pile poil la même taille de libellé.
Je trouve la méthode pratique

Recadrer une zone alpha, avec un zero significatif en sql

Comment recadrer une zone numérique stockée dans un champ alpha, à droite avec un ou plusieurs zero significatifs à gauche. En sql, c’est très facile.

Cas pratique

Cas classique, un code postal 06003 pour Nice, que l’on a dans un fichier en 6003. Et bien sur, ce n’est pas le seul.

Requête SQL

UPDATE FICHIER
SET CODPOS = REPEAT('0', 5 - CHARACTER_LENGTH(TRIM(CODPOS)))
CONCAT TRIM(CODPOS)
WHERE CHARACTER_LENGTH(TRIM(CODPOS)) < 5

Explications

- FICHIER est le fichier que l’on souhaite mettre à jour.
- CODPOS est la zone qui contient le code postal. Elle est d’au moins 5 caractères (on stocke un code postal, je vous le rappel). Mais elle peut être plus longue, cela ne pose pas de soucis à la requête.
- L’instruction REPEAT permet de répéter autant de fois le caractère 0, pour compléter jusque 5 caractères.
- Le CONCAT permet de concaténer aux 0 ajoutés, le code déjà stocké.
- Le WHERE permet de ne travailler que sur les codes qui n’ont pas les 5 caractères requis.
- Dans un cas réel, attention aux codes postaux outre mer, cela ne fonctionnerai pas pour eux.

Recherche de la chaine '%' par SQL

SELECT * FROM zchgrpf WHERE TRANSLATE(CHTX40, '@', '%') like '%@%'

Ou

SELECT * FROM zchgrpf WHERE CHTX40 like '%/%%' ESCAPE '/'               

 

Haut de page