PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → Condition "Commence par " sur une rubrique de type entier (Accès natif sur fichier AS400)
Condition "Commence par " sur une rubrique de type entier (Accès natif sur fichier AS400)
Iniciado por michka.roch, set., 28 2005 4:56 PM - 2 respostas
Publicado em setembro, 28 2005 - 4:56 PM
Bonjour,

Je désire effectuer une requête SQL (hexecuterequête) sur un fichier AS400. Cette requête possède une condition "commence par " sur une zone de type décimal condensé ! Or cette requête ne marche pas, voici un exemple permettant une meilleure compréhension :

Si l'utilisateur saisi un nombre (12 par exemple) afin de rechercher les numéros de clients commençant par 12, j'aimerais que la requête me retourne tout les client dont le numéro commence par 12 (par exemple : 121 ou 1216 ou 12999)
Or il me semble que la condition "commence par" n'est valable uniquement pour des zones de type caractères.
Petite précision, il m'est impossible de modifier le fichier logique AS400 pour transformer cette zone en alphanumérique.

Quelqu'un aurait-il une idée afin que je puisse contourner ce problème !

D'avance je vous en remercie !!

Roch
Publicado em setembro, 28 2005 - 6:29 PM
Bonjour,
sous toute réserve sous Windev, j'utiliserai la fonction Cast pour convertir du numérique en caractère avec une syntaxe du genre :
WHERE LEFT( CAST(la valeur numérique à convertir AS char), 2) = '12'
cordialement
Laurent
Publicado em setembro, 30 2005 - 10:32 AM
Tout d'abord, merci laurent pour l'indice qui m'a permis de résoudre mon problème.

Voici la solution pour ceux que ça intéresse :

Premièrement, il est nécessaire d'éxécuter la fonction HExécuteRequêteSQL en mode "sansCorrection", puisqu'il m'est nécessaire de passer des commandes propres à l'accès Natif AS400.

Voici la syntaxe de la requête :

SI PAS HExécuteRequêteSQL(Masourcededonnee,"Connexion_AS400_Test",hRequêteSansCorrection,"SELECT * FROM NOMFICHIER WHERE DIGITS(la zone numérique à convertir) LIKE '12' ") ALORS
Erreur(HErreurInfo())
FIN

Attention cette requête n'est valable uniquement pour un accès natif as400

Bonne journée !