PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WEBDEV 2024 → Type colonne
Type colonne
Iniciado por Laurent, ago., 18 2005 5:28 PM - 4 respostas
Publicado em agosto, 18 2005 - 5:28 PM
Bonjour,
J'aimerais modifier par programmation le type d'une colonne dans une table sous Webdev.
La finalité est de pouvoir exporter vers Excel n'importe quelle requête suivant le cheminement ci-dessous :
- création d'une table mémoire vide avec 100 colonnes de type texte
- HExécuteRequêteSQL(marequete,... pour générer la requête à afficher
- HListeRubrique(marequete,hLstDétail) pour avoir le nom des rubriques et leur type
- une boucle sur le nombre de champs pour mettre à jour les titres des colonnes
--> ici une boucle sur le type des champs pour mettre à jour le type des colonnes serait souhaité mais c'est la que ca bloque...
- FichierVersTableMémoire(Table,marequete) pour remplir la table
- TableVersExcel(Table, fichierExcel) pour créer le fichier Excel
- FichierAffiche(fichierExcel, "application/unknown", "export.xls" ) pour le renvoyer dans le navigateur de l'internaute

Tout fonctionne très bien en l'état mais ce problème de type de colonne est assez génant car sans cela, le fichier Excel généré ne contient que des types texte du coup: les dates ne sont pas belles, les numériques sont alignés a gauche, etc...
Une solution?
Merci d'avance

Le code complet ici:

strSQL est une chaîne
rq_stat est une Source de Données

strSQL="select * from produit"

HExécuteRequêteSQL(rq_stat,"MaConnexion",hRequêteSansCorrection,strSQL)

//Remplissage des en-têtes de colonnes et type de rubrique
nomChamps est une chaîne=HListeRubrique(rq_stat,hLstDétail)
nb_champs est un entier=ChaîneOccurrence(nomChamps,RC)+1
chpencours est une chaîne

i est un entier
POUR i=1 A nb_champs
chpencours=ExtraitChaîne(nomChamps,i,RC)
{"Table1.Colonne"+i}..Titre=ExtraitChaîne(chpencours,1,TAB)
// Ligne qui bloque car type non dispo dans Webdev...
//{"Table1.Colonne"+i}..Type=Val(ExtraitChaîne(chpencours,3,TAB))
FIN
POUR i=nb_champs+1 A 100
{"Table1.Colonne"+i}..Visible=Faux
FIN
//Remplissage de la table
FichierVersTableMémoire(Table1,rq_stat)
sFic est une chaîne
// On génère le nom du fichier
nom_extract est une chaîne="extract_"+DateSys()+Gauche(HeureSys(),4)
sFic=fRepWeb()+nom_extract+".xls"
TableVersExcel(Table1, sFic)
FichierAffiche(sFic, "application/unknown", nom_extract+".xls" )
Publicado em agosto, 18 2005 - 5:39 PM
Après mure réflexion, Laurent a écrit :

Bonjour,
J'aimerais modifier par programmation le type d'une colonne dans une table sous Webdev.
La finalité est de pouvoir exporter vers Excel n'importe quelle requête suivant le cheminement ci-dessous :
- création d'une table mémoire vide avec 100 colonnes de type texte
- HExécuteRequêteSQL(marequete,... pour générer la requête à afficher
- HListeRubrique(marequete,hLstDétail) pour avoir le nom des rubriques et leur type
- une boucle sur le nombre de champs pour mettre à jour les titres des colonnes
--> ici une boucle sur le type des champs pour mettre à jour le type des colonnes serait souhaité mais c'est la que ca bloque...
- FichierVersTableMémoire(Table,marequete) pour remplir la table
- TableVersExcel(Table, fichierExcel) pour créer le fichier Excel
- FichierAffiche(fichierExcel, "application/unknown", "export.xls" ) pour le renvoyer dans le navigateur de l'internaute

Tout fonctionne très bien en l'état mais ce problème de type de colonne est assez génant car sans cela, le fichier Excel généré ne contient que des types texte du
coup: les dates ne sont pas belles, les numériques sont alignés a gauche, etc... Une solution?
Merci d'avance

Le code complet ici:

strSQL est une chaîne
rq_stat est une Source de Données

strSQL="select * from produit"

HExécuteRequêteSQL(rq_stat,"MaConnexion",hRequêteSansCorrection,strSQL)

//Remplissage des en-têtes de colonnes et type de rubrique
nomChamps est une chaîne=HListeRubrique(rq_stat,hLstDétail)
nb_champs est un entier=ChaîneOccurrence(nomChamps,RC)+1
chpencours est une chaîne

i est un entier
POUR i=1 A nb_champs
chpencours=ExtraitChaîne(nomChamps,i,RC)
{"Table1.Colonne"+i}..Titre=ExtraitChaîne(chpencours,1,TAB)
// Ligne qui bloque car type non dispo dans Webdev...
//{"Table1.Colonne"+i}..Type=Val(ExtraitChaîne(chpencours,3,TAB))
FIN
POUR i=nb_champs+1 A 100
{"Table1.Colonne"+i}..Visible=Faux
FIN
//Remplissage de la table
FichierVersTableMémoire(Table1,rq_stat)
sFic est une chaîne
// On génère le nom du fichier
nom_extract est une chaîne="extract_"+DateSys()+Gauche(HeureSys(),4)
sFic=fRepWeb()+nom_extract+".xls"
TableVersExcel(Table1, sFic)
FichierAffiche(sFic, "application/unknown", nom_extract+".xls" )


Pour faire plus simple et plus rapide:
voir l'aide de ConstruitTableFichier qui devrait répondre à ton problème

--
Pascal
N0.pascal.SPAM@efpe.biz
Ne garder que le prénom pour me joindre
Publicado em agosto, 18 2005 - 5:50 PM
Désolé j'ai répondu trop vite, ça ne marche pas en WB :-?


--
Pascal
N0.pascal.SPAM@efpe.biz
Ne garder que le prénom pour me joindre
Publicado em agosto, 18 2005 - 6:27 PM
Merci quand même!
Oui, ca aurait été exactement cela... Mais ca ne marche qu'en Windev...
Peut etre que ce sera prochainement disponible sous Webdev mais en attendant, si quelqu'un à une idée...
Publicado em setembro, 19 2005 - 12:00 PM
Je n'ai pas de solution à te proposer, mais je suis sur le même type de page (table basé sur une requete paramètré) et je me demande si ton changement de titre de colonne fonctionne bien, car j'ai voulu faire éxactement la même chose et ça ne fonctionait pas, j'ai donc du détourné le problème en mettant que le titre de colonne soit égale à la valeur d'une variable chaine.