PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → Migration Bdd
Migration Bdd
Débuté par dom59490, 15 mai 2017 14:42 - 4 réponses
Membre enregistré
27 messages
Posté le 15 mai 2017 - 14:42
Bonjour,

Dans le cadre d'une double migration Webdev 17 en 22 et base de données HFSQL en MSSQL, j'ai quelques requêtes qui me posent problèmes, pouvez vous m'aider.
Je suis en accès Natif Microsoft SQL.

Cas 1 :
CodeSql = [
SELECT Sum(FORMATP.qtematierepremiere) AS Somme_qtematierepremiere FROM FORMATP WHERE FORMATP.FOCLEUNIK = %1
]
CodeSql = ChaîneConstruit(CodeSql,:_FOCLEUNIK)
// SI HExécuteRequêteSQL(REQ,hRequêteDéfaut,CodeSql) ALORS
// SI HExécuteRequêteSQL(REQ,"MaConnexion",hRequêteDéfaut,CodeSql) ALORS
SI HExécuteRequêteSQL(REQ,"MaConnexion", hRequêteSansCorrection, CodeSql) ALORS
TotalMatiere = REQ.Somme_qtematierepremiere
FIN

Les lignes en commentaires sont les différentes requêtes que j'ai essayées.
Toutes sont fonctionnelles car le débug exécute le HexécuteRequeteSQL, le debug passe sur la ligne :
"TotalMatiere = REQ.Somme_qtematierepremiere" mais le résultat reste à 0
Le debug donne le résultat suivant dans CodeSql :
"SELECT Sum(FORMATP.qtematierepremiere) AS Somme_qtematierepremiere FROM FORMATP WHERE FORMATP.FOCLEUNIK = 17844"

Le code copié dans le requêteur Microsoft SQL en enlevant les "" donne un résultat, la requête est donc bonne au niveau syntaxe à priori.

Cas 2 :
J'ai une table avec requête intégrée qui fonctionnait en HFSQL.
Elle ne fonctionne plus en MSSQL.
Une des zones est une image (Pictogramme).
SELECT [TRADPICT].[CommentairePictogramme] AS CommentairePictogramme , COUNT( [CPT].[LGCLEUNIK] ) AS Comptage ,
[PICTODANG].[IDPICTODANG] AS [IDPICTODANG] , [PICTODANG].[OdrePictogramme] AS [OdrePictogramme] ,
[PICTODANG].[Pictogramme] AS [Pictogramme] , [PICTODANG].[CodePictogramme] AS [CodePictogramme]
FROM [TRADPICT] WITH (NOLOCK) , [TRADPICT] [CPT] WITH (NOLOCK) , [PICTODANG] WITH (NOLOCK)
WHERE ( ( ( [PICTODANG].[IDPICTODANG] = [TRADPICT].[IDPICTODANG] ) AND ( [PICTODANG].[IDPICTODANG] = [CPT].[IDPICTODANG] ) ) AND ( [TRADPICT].[LGCLEUNIK] = 1 ) )
GROUP BY [TRADPICT].[CommentairePictogramme] , [PICTODANG].[IDPICTODANG] , [PICTODANG].[OdrePictogramme] , [PICTODANG].[Pictogramme] , [PICTODANG].[CodePictogramme]
ORDER BY 3

C'est le group by qui est refusé à cause d'une zone son, image, binaire dans le requêteur Microsoft SQL.
Erreur SQL
Description: The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator.
SQL State: 42000
SQL Error Number: 306

Cas 3 :
Ressemble au cas 2.
Commentaire FDS est une zone de type text dans MSSQL.
C'était une zone de type memo texte dans HFSQL
Le group by n'est pas accepté

SELECT [TABLEFDS].[IDTABLEFDS] AS [IDTABLEFDS] , [TABLEFDS].[CodeFDS] AS [CodeFDS] , [TABLEFDS].[Ponderation] AS [Ponderation] , [TRADFDS].[CommentaireFDS] AS CommentaireFDS , COUNT( [CPT].[LGCLEUNIK] ) AS NbLangue
FROM [TABLEFDS] WITH (NOLOCK) , [TRADFDS] WITH (NOLOCK) , [TRADFDS] [CPT] WITH (NOLOCK)
WHERE ( ( ( [TABLEFDS].[IDTABLEFDS] = [CPT].[IDTABLEFDS] ) AND ( [TABLEFDS].[IDTABLEFDS] = [TRADFDS].[IDTABLEFDS] ) ) AND ( [TRADFDS].[LGCLEUNIK] = 1 ) )
GROUP BY [TABLEFDS].[IDTABLEFDS] , [TABLEFDS].[CodeFDS] , [TABLEFDS].[Ponderation] , [TRADFDS].[CommentaireFDS] ORDER BY 1

Merci pour votre aide.
Membre enregistré
27 messages
Posté le 15 mai 2017 - 16:39
Bonjour,

La fonction Cast à priori m'aidera pour les cas 2 et 3.
Quelqu'un pour m'aider pour le cas 1 svp.

Merci
Membre enregistré
27 messages
Posté le 16 mai 2017 - 16:20
Bonjour,

Personne pour m'aider pour le cas 1 ?
Un test que je pourrai faire, changer la syntaxe ??

Merci.

Dom
Membre enregistré
2 566 messages
Popularité : +222 (260 votes)
Posté le 16 mai 2017 - 16:40
Bonjour,

rajouter un hlitpremier avant TotalMatiere = REQ.Somme_qtematierepremiere

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Membre enregistré
27 messages
Posté le 23 mai 2017 - 10:21
Bonjour Philippe,

C'était bien cela.
Je pensais vraiment que la requête était exécuté et que la lecture était inutile.

Merci pour l'aide