PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Requete SQL avec Cast() -> Pb Initialisation impossible
Requete SQL avec Cast() -> Pb Initialisation impossible
Débuté par PHOSTIN, 20 juin 2024 17:30 - 6 réponses
Membre enregistré
8 messages
Posté le 20 juin 2024 - 17:30
Bonjour à vous,

Je me permet de poster sur le forum pour un problème de requête SQL utilisant la fonction CAST
Voici la requête initiale sur une base de données MySQL
SELECT
CDCL.DEPOT_LIVREUR AS CODE_DEPOT_LIVREUR,
CDCL.CODE_PRODUIT_VENTE AS CODE_PRODUIT,
CDCF.NUMERO_COMMANDE_TIERS,
CONCAT(PERS.NOM, ' ', PERS.PRENOM) AS OPERATEUR_SAISIE
FROM CDC_ENTETE_SOCIETE_7 AS CDCE
INNER JOIN CDC_LIGNE_SOCIETE_7 AS CDCL
ON CDCE.CODE_CLIENT_DE_LIVRAISON = CDCL.CODE_CLIENT_DE_LIVRAISON
AND CDCE.NUMERO_COMMANDE_CLIENT = CDCL.NUMERO_COMMANDE_CLIENT
INNER JOIN CDC_LIENS_CDF_SOCIETE_7 AS CDCF
ON CDCL.NUMERO_COMMANDE_CLIENT = CDCF.NUMERO_COMMANDE_CLIENT
AND CDCL.NUMERO_LIGNE_COMMANDE = CDCF.NUMERO_LIGNE_CDE_CLIENT
AND CDCL.NUMERO_LIGNE_INTERNE = CDCF.NUMERO_LIGNE_INTERNE_CLIENT
LEFT OUTER JOIN CDF_LIGNE_SOCIETE_7 AS CDFL
ON CAST(CDCF.NUMERO_COMMANDE_TIERS AS DECIMAL) = CDFL.NUMERO_COMMANDE_FOURNISSEUR
AND CDCF.CODE_TIERS = CDFL.CODE_FOURNISSEUR_DE_COMMANDE
AND CDCF.NUMERO_LIGNE_CDE_TIERS = CDFL.NUMERO_LIGNE_COMMANDE
LEFT OUTER JOIN CDF_ENTETE_SOCIETE_7 AS CDFE
ON CDFL.CODE_FOURNISSEUR_DE_COMMANDE = CDFE.CODE_FOURNISSEUR_DE_COMMANDE
AND CDFL.NUMERO_COMMANDE_FOURNISSEUR = CDFE.NUMERO_COMMANDE_FOURNISSEUR
INNER JOIN PERSONNEL_SOCIETE_7 AS PERS
ON CDCE.OPERATEUR_SAISIE = PERS.CODE_PERSONNEL
WHERE CDCE.CODE_DEPOT_LIVREUR_COMMANDE = 72


Lorsque je lance la requête sur heidiSQL (par exemple) le résultat s'affiche bien
En revanche si je l'execute avec windev (connexion native mysql utilisée) cela me génère une erreur
Impossible d'initialiser la requête avec ce message

Erreur dans le code SQL de la requête <_SOURCE_gDatasource_1>. Initialisation de la requête impossible. Mot) inattendu
Erreur détectée ligne 1, colonne 906:
AST(CDCF.NUMERO_COMMANDE_TIERS AS DECIMAL>>>>)<<<< = CDFL.NUMERO_COMMANDE FOURNISSEUR

Merci d'avance pour toute aide que vous pourrez m'apporter car la je ne comprend pas du tout pourquoi cela fonctionne partout sauf sur Windev
D'autant que qur la doc CAST fait bien partie des fonctions prises en charge par Windev
Message modifié, 20 juin 2024 - 17:33
Membre enregistré
4 084 messages
Popularité : +227 (347 votes)
Posté le 20 juin 2024 - 17:58
Bonjour,
Utilises tu le paramètre hRequêteSansCorrection ?
Passes tu ta connexion dans ton HHexécuteRequête ?

--
Il y a peut être plus simple, mais, ça tourne
Message modifié, 20 juin 2024 - 18:00
Membre enregistré
8 messages
Posté le 20 juin 2024 - 18:07
Bonjour Voroltinquo et merci pour ton retour

Alors j'ai essayé de l'utiliser mais cela ne change pas le problème avec le message d'erreur

HExécuteRequêteSQL(PROC_System.gDatasource,CS_DATAS,hRequêteSansCorrection, PROC_System.gSQL)
Message modifié, 20 juin 2024 - 18:08
Membre enregistré
682 messages
Posté le 20 juin 2024 - 20:22
Bonjour,
sans certitude quand au résultat, je pense que le problème se situe au niveau du CAST avec le type DECIMAL.
Voir la doc ci-dessous :
https://doc.pcsoft.fr/?2034005#SQL_CAST
Cdlt
Membre enregistré
8 messages
Posté le 21 juin 2024 - 07:20
Bonjour Cédric et merci pour ton retour

Oui effectivement par contre je ne sait pas ce qu'il entend par "(précision)"
Est-ce qu'il attend un truc du genre DECIMAL(8) ou DECIMAL(8,2) ?
Désolé je ne trouve rien sur le format attendu
Posté le 21 juin 2024 - 09:32
PHOSTIN avait énoncé :
Bonjour Cédric et merci pour ton retour

Oui effectivement par contre je ne sait pas ce qu'il entend par "(précision)"
Est-ce qu'il attend un truc du genre DECIMAL(8) ou DECIMAL(8,2) ?
Désolé je ne trouve rien sur le format attendu


bonjour,

DECIMAL(NbTotalDeDigit,NbDeDigitAprèsLaVirgule)

--
Cordialement JeAn-PhI