Bonjour à tous,
Je viens vers vous en ce jour presque saint pour vous informer d'un joli bug qui peut se produire chez tout le monde.
J'utilise une analyse et la base PostgreSQL avec un accès natif qui est pratique à certains égards, mais pas là.
Si vous faites ceci, vous pouvez avoir des problèmes
En effet, vous pouvez avoir des problèmes si l'ordre des colonnes dans l'analyse n'est pas le même que dans la table PostgreSQL. En effet, mais j'ai de sérieux doutes, il semblerait que Windev suive l'ordre physique de description de l'analyse et ne fasse pas le mapping sur le nom des colonnes. Je vous laisse imaginer l'horreur que cela peut produire, le nom du client peut se retrouver dans les commentaires et le solde dans l'id par exemple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 MaReq est une Requête SQL = [ SELECT * from table ] HExécuteRequête(MaReq)
Voici la réponse du ST (j'ai omis le copies écran et la partie me remerciant)
Bref les dev nous ot encore pondus une belle grosse bouse......Lorsque vous exécutez une requête en mode normale, c'est par définition pour qu'elle utilise la description de la table dans l'analyse. Dans votre exemple, la description de la table dans l'analyse, à un ordre physique des colonnes qui ne correspond pas à celui de la table créée dans la base Posgresql...
Pour que tous les résultats concordent, il faut nécessairement que l'ordre indiqué pour les colonnes dans l'analyse, corresponde à celui de la base de données. Pour cela, l'idéal est de toujours avoir la base et l'analyse synchroniser : créer la table dans l'analyse par importation de la base, ou à l'inverse à partir de l'analyse avec HCréationSiInexistant.
Dans votre exemple afin d'avoir le résultat attendu, vous pouvez corriger l'ordre des rubriques dans l'analyse. Il faut qu'il soit identique à celui renvoyé par la base avec un SELECT * pour que tout soit en phase
Sachez tout de même que s'i l'on déclare les colonnes à récupérer, même dans le désordre, comme ci-après, tout va bien il arrive à s'en sortir et les colonnes vont au bon endroit.
Le pire dans tout ça c'est que j'utilise une classe avec le mapping et que même là ça ne fonctionne pas. Bref un gros bug que PC Soft ne considère pas comme tel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 MaReq est une Requête SQL = [ SELECT col1,col3,col7,col6,col4,col5,col2 from table ] HExécuteRequête(MaReq)
Partager