|
PROFESSIONAL NEWSGROUPS WINDEV, WEBDEV and WINDEV Mobile |
| | | | | |
| Home → WINDEV 2025 → Tableau de structure dynamique ou tableau d'enregistrement |
| Tableau de structure dynamique ou tableau d'enregistrement |
| Started by vincent.clisse.pro, Sep., 12 2020 1:27 AM - 4 replies |
| |
| | | |
|
| |
| Posted on September, 12 2020 - 1:27 AM |
Bonjour, Un grand merci de votre aide d'avance, je suis vraiment bloquée :/
--- Mon problème enregistrement --- Je n'arrive pas à faire liens entre ma table et une variable de type tableau d'enregistrement afin que le numéro retourné par ma table corresponde au numéro de la ligne de mon tableau enregistrements.
Le soucis provient par exemple pendant le tri, le numéro de la ligne correspond plus au numéro d'enregistrement.
Par exemple table 1 -> enregistrement 1 table 10 -> enregistrement 10 Mais quand j'inverse le tri : Table 1 -> enregistrement 10 table 10 -> enregistrement 1

Malheureusement, je ne peux pas stocker dans ma table une clé pour faire un tableaucherche car ma clef est une clef composée, donc de type buffer.
J'ai donc essayer avec des structures dans lequel j'insère un numéro de ligne en plus du mapping avec mon fichier base de donnée : Mais je me retrouve avec un autre gros problème :
--- Mon problème structure --- Il est impossible de faire une indirection sur un type de variable et donc de faire un truc du genre
mastructure est une {nomDynamiqueStructure}
Exemple :


Donc récupérer la définition de ma structure dynamiquement afin de pouvoir créer un tableau de structure dynamiquement -> avec le nom de la structure en paramètre.
Je suis vraiment bloqué, - avec un tableau d'enregistrements : ok pour le nom dynamique mais problème de liaison. Comme pas de lien je suis obliger de faire un tablecherche sur une clef unique mais avec mon problème de clef composée c'est vraiment complexe. - avec un structure : ok pour la liaison car j'ajoute un numéro de ligne dans la structure, mais par contre impossible de faire un tableau de plusieurs type de structure selon un nom en paramètre.
Pour comprendre, L'idée est de pouvoir gérer une liste de tableau d'enregistrement dynamiquement dans un objet et pouvoir tout sauvegarder la liste des tableaux d'un coup, faire un backup, transaction, ... Donc une classe qui gère les modifications de mes tables et une variable mémoire avec le contenu de mon fichier db : mais la classe ne connait pas le fichier,nom du tableau seul l'instance connait le nom du fichier,requète et donc le nom du tableau.
Ma classe contient - un tableau associatif de tableau d'enregistrement - un tableau associatif de tableau de modifications (tableau d'enregistrement). - Le nom d'un tableau associatif sont les même (ils correspondent au nom de mon fichier ou requète). - Quand je modifie ma table ihm, j'utilise une méthode ajoutModification en lui indiquant si c'est un ajout/modification,suppression)
J'arrivais à faire fonctionner ma classe avant car j'utilisais une pk comme liaison(que j'avais mis dans un colonne de ma table ihm), mais j'ai maintenant des pk composées (donc des buffers)./
Je cherche donc une solution : 1) Trouver un moyen pour récupérer le numero de ligne d'un tableau d'enregistrement liée à la ligne de ma table (et que ça continue dans fonctionner après un tri). 2) Trouver un moyen de faire une indirection sur un type de type structure afin de pouvoir récupérer une structure dynamiquement.
Un grand merci |
| |
| |
| | | |
|
| | |
| |
Registered member 213 messages |
|
| Posted on September, 13 2020 - 4:05 AM |
Clisse,
Malheureusement, je ne peux pas stocker dans ma table une clé pour faire un tableaucherche car ma clef est une clef composée. Supposons une clé composée qui représente deux rubriques de ta base de données.
Pourquoi ne pas stocker les valeurs originales distinctes de ces deux rubriques dans ton champ table ? Au besoin, dans deux colonnes non visibles.
Sur tri, filtre ou autre, les deux valeurs distinctes demeurent disponibles. Tu pourras reconstituer ta clé composée et faire tes références.
Je le fais fréquemment.
Bon dev.
Serge
-- ----- Parfois, la logique est implacable... |
| |
| |
| | | |
|
| | |
| |
Registered member 1,167 messages |
|
| Posted on September, 13 2020 - 2:35 PM |
Bonjour,
Il faut penser la technique différemment.
Procedure RemplirStructure( pclPStructure ,sNomFichier,ptabMesLogin) soit MaStructure =pclPStructure
POUR TOUT sNomFichier FichierVersMémoire(MaStructure,sNomFichier) ptabMesLogin.Ajoute(MaStructure) FIN
et pour l'appel :
stMonLogin est un STLogin tabMesLogin est un tableau de STLogin RemplirStructure(stMonLogin,"T_Login",tabMesLogin)
-- Thierry TILLIER Développeur Windev-Webdev Formation Windev : https://coursdinfo.teachable.com/ Formation bureautique : https://coursdinfo.net |
| |
| |
| | | |
|
| | |
| |
| Posted on September, 15 2020 - 8:16 PM |
Merci, Mon soucis est que je voulais une classe qui contient un ou plusieurs tableaux de donnée(structure ou Enregistrement). Chaque instance contiendrait des données différente qui pourrait avoir des portées différentes selon leurs localisation. - par exemple utiliser une instance pour stocker les paramètres qui sont dans plusieurs table de la bd. Cette instance peux être liée directement à une ou plusieurs table, un bouton sauvegarder pour modifie toute les données de tableau vers la base de donnée.
L'exemple que tu m'as envoyé (un grand merci , est bien mais mon(mes) tableau de structure n'est pas stocker dans mon objet malheureusement. Mon but est de stocker un tableau dans une classe mais la définition est ailleurs.
Pour finir, le tableau d'enregistrement est la meilleur solution car très facilement fonctionnel , mais pcsoft à oublier d'ajouter un numéro de ligne à la fonction FichierVersTableau afin de pouvoir facilement la liée à une table.
je pense que je dois : - re-développer une méthode similaire à FichierVersTableau mais en ajoutant un numéro de ligne pour la liaison. - Stocker la composition (des noms des colonnes) de ma PK en texte afin de pouvoir recomposer ma PK.
Sauf si vous connaissez une solution pour récupérer le numéro de ligne d'un tableau d'enregistrement dans une table ou de surcharger la méthode FichierVersTableau pour rajouter un numéro de ligne.
Je suis occupé à essayer en ajouter un partie sql dynamiquement ROW_NUMBER() dans mes requêtes Merci pour votre aide. |
| |
| |
| | | |
|
| | |
| |
| Posted on September, 15 2020 - 9:11 PM |
J'ai essayé d'ajouter dynamiquement un SELECT row_number() over() AS NumeroLigne dans mes requêtes mais de nouveau windev ne prend pas en charge cette fonction sql :/ :/
Je comprend pas comment aucune solution existe pour ajouter un numéro de ligne dans un tableau d'enregistrement :/ Je vais devoir recréer un fonction qui crée un tableau à partir de requête je pense :/
Merci de votre aide |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|