PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → [URGENT] Etat sur table dynamique
[URGENT] Etat sur table dynamique
Iniciado por guest, jun., 07 2005 2:07 PM - 13 respostas
Publicado em junho, 07 2005 - 2:07 PM
Bonjour,

Je souhaite créer un état à partir d'une table créée elle-même dynamiquement (nombre de colonnes et intitulés des colonnes différents a chaque fois).

J'obtient bien ma table à partir de ma requête dynamique mais je n'arrive pas à créer l'état à partir de ma table...

Voici mon code (Au clic sur mon bouton permettant d'ouvrir l'etat) :

iAperçu(100)
iImprimeEtat(Etat_Resultat_requete)

J'ajoute que l'état contient le bon nombre de lignes (mais elles sont vides) mais pas le bon nombre de colonnes.

Merci de vos réponses.

Nicolas B
Publicado em junho, 07 2005 - 3:02 PM
Bonjour,

ne dois-tu pas lancer la requête (hexecuterequete(Marequete)) juste avant iaperçu()

salutations

Cécile
Publicado em junho, 07 2005 - 3:46 PM
Merci de votre réponse mais le problème est que ma requête est elle aussi dynamique.

En fait, ma requête est sous forme de chaine de caractères et je construit ma table avec la fonction ConstruitTableFichier(...).

Je ne peux donc pas appeler la fonction hExecuteRequete avec comme paramètre une chaîne de caractères.

Avez-vous une autre idée?

Merci beaucoup d'avoir répondu...

Nicolas B
Publicado em junho, 07 2005 - 4:03 PM
Non, alors là je vois pas... mais votre requête vous la lancez bien quelque part. De quelle façon la déclarez vous ?
Publicado em junho, 07 2005 - 4:36 PM
Voila mon code pour remplir la table avec la requete sous forme de chaine de caractères :

résultat est un booléen
v_Requete est une Source de Données

SI ReqSQL <> "" ALORS

résultat = HExécuteRequêteSQL(v_Requete, hRequêteInterruptible, ReqSQL)
SI résultat = Vrai ALORS
ConstruitTableFichier(NomTable,v_Requete,taAvecIdAuto)
FichierVersTableMémoire(NomTable,v_Requete)
FIN
HAnnuleDéclaration(v_Requete)
FIN
Publicado em junho, 07 2005 - 4:51 PM
Ne croyez-vous pas qu'il faille enlever la ligne HAnnuleDéclaration(...) qui libére les ressources de cette requête et par là même vide le résultat de ses données ?

Cécile
Publicado em junho, 07 2005 - 5:30 PM
je viens d 'essayer mais ceci ne change en rien mon résultat (bon nombre de ligne mais vides et toujours une seule colonne)

Nicolas
Publicado em junho, 07 2005 - 7:17 PM
Bonjour,

1 - Comment déclarez-vous la variable ReqSQL ?
Est-ce c’est a peux près ça :
ReqSQL est une chaîne = "select * from MonFichier" ?

2 – comment avez-vous créez votre état, quelle source de données… ?

---------
//**//
Publicado em junho, 07 2005 - 8:05 PM
Bonjour,

Effectivement, j'ai déclaré ma requête comme ceci. Ce code me permet de remplir ma table de resultat. Mon but étant maintenant d'intégrer cette table résultat dans mon état.
Voici mon code :

ReqSQL est une chaîne = "select * from MonFichier"
résultat est un booléen
v_Requete est une Source de Données

SI ReqSQL <> "" ALORS
// Initialisation de la requête
résultat = HExécuteRequêteSQL(v_Requete, hRequêteInterruptible, ReqSQL)
SI résultat = Vrai ALORS
ConstruitTableFichier(NomTable,v_Requete,taAvecIdAuto)
FichierVersTableMémoire(NomTable,v_Requete)
FIN
HAnnuleDéclaration(v_Requete)
FIN

Et mon état est créé a l'aide de l'outil "Créer un état pour la table" dans l'onglet "Atelier"

Merci de votre réponse

Nicolas B
Publicado em junho, 07 2005 - 8:48 PM
Rebonjour,

Dans ce cas, "Table", il faut savoir qu’un état sur table ne permet pas de modifier la source de données ni la structure de la table par programmation.
Il faut utiliser plutôt un état sur une source de données programmée.

Regardez "Etat sur une source de données programmée" dans l’aide de Windev.

Bonne chance
--------------
//**//
Publicado em junho, 08 2005 - 3:30 PM
"Nicolas B" <guest@newsgroup.fr> a écrit dans le message de news:
42a565ba$1@news.pcsoft.fr...

Bonjour,

Je souhaite créer un état à partir d'une table créée elle-même
dynamiquement (nombre de colonnes et intitulés des colonnes différents a
chaque fois).

J'obtient bien ma table à partir de ma requête dynamique mais je n'arrive
pas à créer l'état à partir de ma table...

Voici mon code (Au clic sur mon bouton permettant d'ouvrir l'etat) :

iAperçu(100)
iImprimeEtat(Etat_Resultat_requete)

J'ajoute que l'état contient le bon nombre de lignes (mais elles sont
vides) mais pas le bon nombre de colonnes.

Merci de vos réponses.

Nicolas B

bonjour
c'est exactement ce que fait un etat tableau croisé dynamique et j'aimerais
faire la même chose moi aussi
cdt JeAn-PhI
Publicado em junho, 23 2005 - 3:24 PM
Bonjour,

Je l'ai dejà fait de la manière suivante:
1) Remplissage de la table "source" avec le fonction ConstruitTableFichier
2) Création d'un état dont la source de données est un champ table
3) Insertion d'une table de N colonnes (Nombre maxi de colonnes qui seront éditées)
4) Puis dans le code d'uverture de l'état,
tu relies ta table à ton état avec NomEtat..NomSource = NomDeTable
tu relies tes colonnes de table résultat à celle de l'état avec NomColonneTableEtat..RubriqueAffichée = TableEnumèreColonne(NomDeTable, indiceColonne )
Tu masques ensuite les colonnes en trop

NomEtat = nom de ton état
NomDeTable = nom de ta table (avec les indirections car cette table est au moment d'exécution du code extérieure)
indiceColonne = indice de la colonne de NomDeTable à relier

Il y a certainement plus simple, mais je débute et j'ai donc fait ce que j'ai trouvé.
Publicado em junho, 23 2005 - 4:45 PM
"Catherine" <guerincatherine@wanadoo.fr> a écrit dans le message de news:
42ba917a$1@news.pcsoft.fr...

Bonjour,

Je l'ai dejà fait de la manière suivante:
1) Remplissage de la table "source" avec le fonction ConstruitTableFichier
2) Création d'un état dont la source de données est un champ table
3) Insertion d'une table de N colonnes (Nombre maxi de colonnes qui seront
éditées)
4) Puis dans le code d'uverture de l'état,
tu relies ta table à ton état avec NomEtat..NomSource = NomDeTable
tu relies tes colonnes de table résultat à celle de l'état avec
NomColonneTableEtat..RubriqueAffichée = TableEnumèreColonne(NomDeTable,
indiceColonne )
Tu masques ensuite les colonnes en trop

NomEtat = nom de ton état
NomDeTable = nom de ta table (avec les indirections car cette table est au
moment d'exécution du code extérieure)
indiceColonne = indice de la colonne de NomDeTable à relier

Il y a certainement plus simple, mais je débute et j'ai donc fait ce que
j'ai trouvé.


merci c'est un bon début pour moi je vais tester ça
cdt JeAn-PhI
Publicado em junho, 29 2005 - 5:30 PM
Peux-tu me dire comment utiliser les indirections pour pouvoir faire référence au nom de ma table au chargement d emon etat.

Voici mon message d'erreur :

Erreur à la ligne 2 du traitement Clic sur BTN_Imprimer.
Vous avez appelé la fonction iImprimeEtat.
La table, source de données de l'état, est introuvable.

Et voici mon code :

Etat_Stat_F3..NomSource = {"fnt_stat_F3.TableResultat"}

Merci d'avance.

Nico B