PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Utilisation de SQL.TitreCol
Utilisation de SQL.TitreCol
Iniciado por Eva, 25,ago. 2020 08:39 - 11 respuestas
Miembro registrado
8 mensajes
Publicado el 25,agosto 2020 - 08:39
Bonjour à tous ,

Alors voila mon problème j'exécute une requête avec SQLExec et j'écrit les résultats de cette dernière dans un fichier CSV or j'aimerais également récupérer le titre des colonnes comment faire ?

voici mon code :
ResExec = SQLExec( "select éléments1,éléments2,élément3 from Table","REQ")

SI ResExec = Vrai ALORS

SQLPremier("REQ")

TANTQUE SQL.EnCours ET PAS SQL.EnDehors

gsInfo est une chaine
gsInfo += SQLCol("REQ",1)+TAB+ ";"+SQLCol("REQ",2)+TAB+ ";" +SQLCol("REQ",3)+RC

SQLSuivant("REQ")
FIN

fCrée("C:\Mes Projets\info.csv")
gnInfo = fOuvre("C:\Mes Projets\info.csv", foLectureEcriture)

SI gnInfo <> -1


ResEcriture = fEcritLigne( gnInfo , gsInfo)
FIN


Merci d'avance !
Miembro registrado
116 mensajes
Publicado el 25,agosto 2020 - 09:38
Bonjour,

Peut être en modifiant ta ligne

gsInfo est une chaine

en

gsInfo est une chaine = "éléments1;élements2;éléments3" + RC

?
Miembro registrado
8 mensajes
Publicado el 25,agosto 2020 - 09:47
Merci de ta réponse , je vais essayer !
Miembro registrado
8 mensajes
Publicado el 25,agosto 2020 - 09:56
ER a écrit :
Bonjour,

Peut être en modifiant ta ligne

gsInfo est une chaine

en

gsInfo est une chaine = "éléments1;élements2;éléments3" + RC

?


Effectivement cela fonctionne, mais le problème c'est qu'en réalité ma requête possède plus de 10 éléments et cela deviendrais assez lourd de devoir tous les écrire, que faire ?
Miembro registrado
116 mensajes
Publicado el 25,agosto 2020 - 10:06
Apparemment après le SQLExec(...) on peut récupérer le nom des colonnes avec

SQLInfoGene("REQ")
POUR i = 1 _A_ SQL.NbCol
Trace(SQL.TitreCol[i])
FIN
Miembro registrado
8 mensajes
Publicado el 25,agosto 2020 - 10:12
ER a écrit :
Apparemment après le SQLExec(...) on peut récupérer le nom des colonnes avec

SQLInfoGene("REQ")
POUR i = 1 _A_ SQL.NbCol
Trace(SQL.TitreCol[i])
FIN

Je vais essayer ça
Miembro registrado
8 mensajes
Publicado el 25,agosto 2020 - 10:47
La fonction Trace n'est pas compatible avec ce que je souhaite faire j'ai donc modifié le code comme ceci :

TANTQUE SQL.EnCours ET PAS SQL.EnDehors

SQLInfoGene("REQ")
POUR compteur = 1_À_ 7
Titre = SQL.TitreCol[compteur]
FIN

gsInfo est une chaine
gsInfo +=Titre +RC+ SQLCol("REQ",1)+TAB+ ";"+SQLCol("REQ",2)+TAB+ ";" +SQLCol("REQ",3)+RC

malheureusement j'obtient uniquement le titre du dernier éléments et en boucle
Miembro registrado
116 mensajes
Publicado el 25,agosto 2020 - 11:06
D'abord le code est à placer après

SI ResExec = Vrai ALORS

pour ne l'exécuter qu'une fois
Ensuite ça doit être un truc du genre

SQLInfoGene("REQ")
POUR compteur = 1_À_ SQL.NbCol
Titre += SQL.TitreCol[compteur] +";"
FIN
Miembro registrado
8 mensajes
Publicado el 25,agosto 2020 - 11:17
Même résultats que tout à l'heure j'obtient le titre du premier éléments en boucle entre chaque ligne de données
Miembro registrado
8 mensajes
Publicado el 25,agosto 2020 - 11:28
J'ai réussi à avoir les titres qui s'affiche normalement , mais les titres se répètent a chaque ligne de données :

SI ResExec = Vrai ALORS

SQLPremier("REQ")
SQLInfoGene("REQ")
POUR compteur = 1_À_ SQL.NbCol
Titre += SQL.TitreCol[compteur]+";"
FIN
TANTQUE SQL.EnCours ET PAS SQL.EnDehors

gsInfo est une chaine
gsInfo +=Titre +RC+ SQLCol("REQ",1)+TAB+ ";"+SQLCol("REQ",2)+TAB+ ";" +SQLCol("REQ",3)+RC
Miembro registrado
116 mensajes
Publicado el 25,agosto 2020 - 11:54
C'est normal il ne faut pas concaténer les titres dans la boucle

TANTQUE SQL.EnCours ET PAS SQL.EnDehors

gsInfo += SQLCol("REQ",1)+TAB+ ";"+SQLCol("REQ",2)+TAB+ ";" +SQLCol("REQ",3)+RC
SQLSuivant("REQ")
FIN

fCrée("C:\Mes Projets\info.csv")
gnInfo = fOuvre("C:\Mes Projets\info.csv", foLectureEcriture)

SI gnInfo <> -1

//On écrit la ligne de titres, puis les données

ResEcriture = fEcritLigne( gnInfo , Titre + RC + gsInfo)
FIN
Miembro registrado
8 mensajes
Publicado el 25,agosto 2020 - 11:58
Oui j'avais trouvé mon erreur, merci beaucoup pour tes réponses