Il me semble que la bonne syntaxe est
Mais je n'en ai aucun certitude...
Code : Sélectionner tout - Visualiser dans une fenêtre à part l_vUnChampColonne..LiaisonFichier = ":gf_sdReqLstArt."+.chNomChamp
Il me semble que la bonne syntaxe est
Mais je n'en ai aucun certitude...
Code : Sélectionner tout - Visualiser dans une fenêtre à part l_vUnChampColonne..LiaisonFichier = ":gf_sdReqLstArt."+.chNomChamp
Merci PhilouZ, mais ça ne change rien.
Je me demande si c'est possible, et si je ne devrais pas passer par un défilement par programmation. Mais, ça ne m'arrange pas vraiment.
JS
Toujours sur ce problème.
Je pense que ça vient de l'initialisation de la table. Comme c'est un parcours automatique sur fichier/requête, il n'y a aucun code. Du coup, le table.affiche(tainit) ne fait rien !
Enfin, c'est ce que je comprends.
Je pense que ce principe est valable dans le cas d'une requête décrite lors de la conception, pas dans le cas d'une requête écrite à la volée.
Je ne vois pas de moyen de réaliser ce que je veux faire...
JS
J'ai relu ton code et il me semble que tu ne peux pas lier une table à une variable de type source de données. J'ai eu ce problème et j'ai du créer un tableau pour lier la table au tableau.
Je vois plusieurs solutions au problème:
1. tu crées ta requête et dans le select les colonnes doivent avoir le même ordre que les colonnes et tu fais un FichierVersTableMémoire. Problème si l'ordre des colonnes bouge entre 2 requêtes les données ne seront pas au bon endroit.
2. ta requête est définie à l'avance, tu lies donc les colonnes à la requête
3. tu crées un tableau de * par x variants, x étant le nombre de colonnes de la requête. Tu lies ta table à la variable que tu viens de créer. Tu exécutes ta requête et tu fais un FichierVersTableau(). (Jamais testé mais ça peut être intéressant de voir si ça fonctionne)
4. Ajouter les lignes une par une à la table. Comme au point 1, si l'utilisateur change l'ordre des colonnes ça ne fonctionne plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 x est entier = 3 gtabMonTableau est un tableau de * par x Variants POUR TOUT l_vColonne, l_inIndice de gf_taLesColonnes AVEC l_vColonne SI .chTypeColonne = "B" ALORS l_vUnChampColonne <- ChampClone(COL_AjtInt,ChaîneConstruit( "COL_%1",.chNomColonne)) //J'ai créé une colonne COL_AJTINT pour ajouter des colonnes interrupteurs, car je n'arrivais pas à les créer depuis la colonne COL_AJOUT SINON l_vUnChampColonne <- ChampClone(COL_Ajout, ChaîneConstruit( "COL_%1",.chNomColonne)) l_vUnChampColonne..MasqueAffichage = .chFormat l_vUnChampColonne..Taille = .inNbcarac FIN l_vUnChampColonne..Libellé = .chLibelle l_vUnChampColonne..Largeur = .inLargeur l_vUnChampColonne..TauxAncrageLargeur = .inTauxancrage l_inTotAncrage = .inTauxancrage SELON .chTypeColonne CAS "C" : l_vUnChampColonne..TypeSaisie = typSaisieTexte CAS "N" : l_vUnChampColonne..TypeSaisie = typSaisieNum CAS "D" : l_vUnChampColonne..TypeSaisie = typSaisieDate CAS "H" : l_vUnChampColonne..TypeSaisie = typSaisieHeure CAS "Du" : l_vUnChampColonne..TypeSaisie = typSaisieDurée AUTRE CAS FIN l_vUnChampColonne..LiaisonFichier = ":gtabMonTableau[[%l_inIndice%]]" l_vUnChampColonne..Visible = .boVisible FIN FIN TBL_RepertArt..FichierParcouru = ":gtabMonTableau" SI PAS HExécuteRequêteSQL(gf_sdReqLstArt, gP_cnxCnxAppli, hRequêteSansCorrection, gf_chReqSelect_Articles) Erreur( HErreurInfo(hErrCode), HErreurInfo(hErrComplet)) SINON TBL_RepertArt.Affiche() FIN
Merci PhilouZ pour ces idées.
Juste une question. Mon problème, est que le nombre de colonnes entre la table et la requête est différent. En effet, pour faire mes champclone, j'ai créé 2 colonnes invisibles dans la table.
Du coup, mes 2 premières colonnes de la table ne correspondent à rien !
Si je prends la méthode du tableau (qui je pense sera celle qui me donnera le meilleur résultat), comment est-ce que je fais pour ces 2 colonnes non significatives ?
JS
Problème : FichierVersTableau ne semble fonctionner qu'avec un tableau de structures. Du coup, comme je ne connais pas structure de la requête (puisqu'elle est créée à la volée), je ne vois pas comment je peux faire.
Le "semble" est de trop. Cela ne fonctionne qu'avec les tableaux de structures ou de classes (c'est l'équivalent "tableau" de FichierVersMémoire).
L'idéal serait de pouvoir définir une classe issue de ta requête grâce à une variable de type Définition. Toutefois, il me semble que RécupèreDéfinition ne fonctionne pas avec les requêtes.
Salut,
Je ne vois que le point n°4 évoqué par Philouz.
- Remplir la table ligne par ligne avec un ordre de colonne défini par l'application en fonction de la requête définie par les choix de l'utilisateur.
- Une fois la table remplie, réorganiser l'ordre et la taille des colonnes en récupérant les infos que tu auras préalablement enregistrées (en bdd, fichier, ...) lors de la manipulation par l'utilisateur final.
- Enfin, tu affiches la table.
Merci de cette remarque, Voroltinquo.
J'ai déclaré mon tableau comme suit :
Code WINDEV : Sélectionner tout - Visualiser dans une fenêtre à part gf_tabChampsTable est un tableau de * pas * variants
Étonnammentne déclenche pas d'erreur.
Code WINDEV : Sélectionner tout - Visualiser dans une fenêtre à part FichierVersTableau(gf_tabChampsTable,gf_sdReqLstArt)
Par contre, à l'affichage de la table, j'ai une erreur : Le champ TBL_RepertArt n'a pas pu s'initialiser , car il a rencontré l'erreur de liaison suivante : gf_tabChampsTable n'est pas un objet valide pour remplir le champ TBL_RepertArt.
Il faut avoir en tête que le WLangage est un langage interprété. Syntaxiquement parlant, ce que tu lui ecrit est correct donc il ne lève pas d'erreur.
Par contre à l'exécution, il "regarde" ce que tu lui as donné et là il s'aperçoit qu'il ne sait plus faire
Oui, tu as raison Voroltinquo. Mais, quand il ne sait pas faire un truc, il pourrait planter à l'exécution. Il le fait d'ailleurs très souvent !
Bon, du coup, je suis parti sur un truc un peu bourrin, mais ça fonctionne.
J'ai créé un structure qui contient 100 rubriques (bon, ça fait déjà beaucoup 100 colonnes dans une table), notées vrRub00 à vrRub99.
Lors de la création de ma requête, je fais des "AS vrRubnn"
Je fais un FichierVersTableau. Ça ne le dérange pas qu'il y ait des rubriques non renseignées dans la structure.
Lors de mes clonages de colonnes, je créé la liaison avec l'élément correspondant dans la structure : ..liaisonfichier = ":gf_tabChampsTable.vrRubnn"
et après je fais un simple TBL_RepertArt.affiche(). Et ça roule !
Merci à tous pour votre aide.
JS
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager