Accueil → WINDEV 2025 → Différence fonctionnement SQLColonne entre windev 25 et windev 2025
Différence fonctionnement SQLColonne entre windev 25 et windev 2025
Débuté par Baptiste, 08 avr. 2025 16:10 - 5 réponses
Posté le 08 avril 2025 - 16:10
Bonjour On vient de se rendre compte d'un probleme. On a migé un projet en windev 25 en windev 2025 J'utilise MySQL et le connecteur natif mysql de windev En windev 25 j'utilisais le code suivant pour mettre a jour la taille d'un champ dans ma base de données //Mise à jour de la taille du champ IF PAS SQLExec("SELECT MABASE FROM MONCHAMP limit 1","REQ1") THEN // Le champ est deja a jour ELSE // Mise à jour de la taille du champ sResult=SQLColonne("REQ1",True) IF ExtraitChaîne(sResult,4,TAB)="300" THEN Affichage_FEN_MAJTABLE SQLExec("ALTER TABLE MABASE MODIFY MONCHAMP VARCHAR(160)","req1") END END En windev 2025 la la chaine retournée est : sResult=MONCHAMP T 0 100 En windev 25 c'est sResult=MONCHAMP T 0 300 On a une différence de fonctionnement pour une meme fonction. Du coup la mise à jour de mes tables ne se fait plus. Existe t'il une solution fiable pour tester la taille d'un champ dans une base MySQL. Merci
Membre enregistré 235 messages
Posté le 08 avril 2025 - 17:58
Bonjour, Je n'utilise plus SQLColonne car j'ai également remarqué des différences de fonctionnement entre les versions de Windev Du coup, j'ai remplacé cette fonction par une requête native de MySQL : SHOW COLUMNS FROM MATABLE Il suffit de récupérer et d'analyser la valeur des colonnes "Field", "Type", "Null" et "Key" Désormais, ça fonctionne quelque soit la version de Windev Cdt
Posté le 09 avril 2025 - 16:22
Merci, je vais passer par la requête C'est effectivement assez dangereux cette différence de fonctionnement, surtout que ce n'est pas documenté dans la doc de pcsoft Fabrice N a écrit : Bonjour, Je n'utilise plus SQLColonne car j'ai également remarqué des différences de fonctionnement entre les versions de Windev Du coup, j'ai remplacé cette fonction par une requête native de MySQL : SHOW COLUMNS FROM MATABLE Il suffit de récupérer et d'analyser la valeur des colonnes "Field", "Type", "Null" et "Key" Désormais, ça fonctionne quelque soit la version de Windev Cdt
Posté le 10 avril 2025 - 09:50
Je n'arrive pas a mettre ce processus en place Avez-vous un exemple SVP ? Fabrice N a écrit : Bonjour, Je n'utilise plus SQLColonne car j'ai également remarqué des différences de fonctionnement entre les versions de Windev Du coup, j'ai remplacé cette fonction par une requête native de MySQL : SHOW COLUMNS FROM MATABLE Il suffit de récupérer et d'analyser la valeur des colonnes "Field", "Type", "Null" et "Key" Désormais, ça fonctionne quelque soit la version de Windev Cdt
Posté le 10 avril 2025 - 10:18
A merci, j'ai trouvé SQLExec("SHOW COLUMNS FROM MaBase", "REQ1") TANTQUE SQLAvance("REQ1") = 0 // Il y a encore une ligne à lire // Récupérer les données Info(SQLLitCol("REQ1", 1)) // Field Info(SQLLitCol("REQ1", 2)) // Type FIN SQLFerme("REQ1") Fabrice N a écrit : Bonjour, Je n'utilise plus SQLColonne car j'ai également remarqué des différences de fonctionnement entre les versions de Windev Du coup, j'ai remplacé cette fonction par une requête native de MySQL : SHOW COLUMNS FROM MATABLE Il suffit de récupérer et d'analyser la valeur des colonnes "Field", "Type", "Null" et "Key" Désormais, ça fonctionne quelque soit la version de Windev Cdt
Membre enregistré 235 messages
Posté le 10 avril 2025 - 11:07
Bonjour, J'ai créé une fonction "perso" pour remplacer SQLColonne :FONCTION MySqlColumns( s Table est une chaîne ) : chaîne d Columns est une Source de de Données s Columns est une chaîne = "" SI HExécuteRequêteSQL ( d Columns, cnx MySQL, hRequêteSansCorrection , "SHOW COLUMNS FROM " + s Table) ALORS HLitPremier ( d Columns, hSansRafraîchir ) TANTQUE PAS HEnDehors ( d Columns) s Columns+ = [ RC ] + d Columns.Field+ TAB SELON d Columns.Type CAS [ = "bigint" : s Columns+ = "N" + TAB + "3" + TAB CAS "mediumblob" : s Columns+ = "N" + TAB + "4" + TAB CAS [ = "varbinary" : s Columns+ = "N" + TAB + "5" + TAB CAS [ = "binary" : s Columns+ = "N" + TAB + "6" + TAB CAS [ = "text" , [ = "mediumtext" , "" : s Columns+ = "T" + TAB + "7" + TAB CAS [ = "char" : s Columns+ = "T" + TAB + "9" + TAB CAS [ = "decimal" : s Columns+ = "N" + TAB + "11" + TAB CAS [ = "int" , [ = "mediumint" : s Columns+ = "N" + TAB + "12" + TAB CAS "smallint" : s Columns+ = "N" + TAB + "13" + TAB CAS "date" : s Columns+ = "T" + TAB + "17" + TAB CAS "time" : s Columns+ = "T" + TAB + "18" + TAB CAS "datetime" , "timestamp" : s Columns+ = "T" + TAB + "19" + TAB CAS [ = "varchar" : s Columns+ = "T" + TAB + "20" + TAB AUTRE CAS : s Columns+ = "?" + TAB + TAB FIN SELON d Columns.Key CAS "PRI" : s Columns+ = "PRIMAIRE" CAS "UNI" : s Columns+ = "UNIQUE" CAS "MUL" : s Columns+ = "MULTIPLE" FIN HLitSuivant ( d Columns) FIN HAnnuleDéclaration ( d Columns) FIN RENVOYER s Columns
A toi de l'adapter en fonction des types de colonnes que tu utilises dans tes tables MySQL car la liste n'est pas compète (elle correspond juste à mes besoins) PS: J'utilise l'accès natif MySQL CdtMessage modifié, 10 avril 2025 - 11:12