IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Gestion d'un objet table


Sujet :

WinDev

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Par défaut Gestion d'un objet table
    Bonjour,

    Il doit y avoir une chose que je comprends pas dans les objets de WinDev

    Je créé un objet avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    		LC_NomChamp    = "sc_Conteneur.TableauChiffre" + GN_NbObjet
    		ChampCrée(LC_NomChamp,typTable,
    		          sc_Conteneur..X * AN_EtudeDetails.DET_Gauche / 100, 
    		          sc_Conteneur..Y * AN_EtudeDetails.DET_Top / 100, 
    		          sc_Conteneur..Largeur *  AN_EtudeDetails.DET_Largeur / 100, 
    		          sc_Conteneur..Hauteur * AN_EtudeDetails.DET_Hauteur / 100)
    La table se créée correctement vide.
    J'appelle ensuite une fonction qui remplit la grille en créant les colonnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    GRAPHE_PrepareGrille("sc_Conteneur.TableauChiffre" + GN_NbObjet)
     
    PROCEDURE GRAPHE_PrepareGrille(PO_Grille)
    	ChampCrée(PO_Grille + ".Col_ID", typColonne)
    	ChampCrée(PO_Grille + ".Col_Numero", typColonne)
    	ChampCrée(PO_Grille + ".Col_Libelle", typColonne)
    	ChampCrée(PO_Grille + ".Col_ExeRef", typColonne)
    	ChampCrée(PO_Grille + ".Col_ExePrec", typColonne)
    	ChampCrée(PO_Grille + ".Col_Ecart", typColonne)
    	ChampCrée(PO_Grille + ".Col_Pourcent", typColonne)
    	ChampCrée(PO_Grille + ".Col_Style", typColonne)	
    	ChampCrée(PO_Grille + ".Col_Ligne", typColonne)
    Les colonnes se crééent correctement. J'appelle ensuite une fonction qui remplit la grille.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    PROCEDURE GRAPHE_RemplitGrille(PO_Grille)
    	// vider la grille ta_Grille
    	TableSupprime(PO_Grille)
     
            LN_Ligne = 1
    	TableInsèreLigne(PO_Grille, LN_Ligne) 
    	PO_Grille[LN_Ligne, 8]	= "D"
    Là j'ai un plantage sur la dernière ligne avec comme message Impossible d'accéder au sous-élément.

    Merci d'avance de vos conseils parce que cela fait deux heures que je cherche et je ne vois pas l'erreur que j'ai pu faire.

  2. #2
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 133
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	PO_Grille[LN_Ligne, 8]	= "D"
    C'est quoi le 8?

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Par défaut
    Le 8 correspond à l'indice de colonne.
    Je viens de trouver (pas de comprendre)

    si j'utilise l'indirection cela fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {PO_Grille}[LN_Ligne, 8]	= "D"
    Merci d'avoir cherché à m'aider.

  4. #4
    Membre Expert
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 399
    Par défaut
    Bonjour

    Si PO_Grille est une chaîne qui contient le nom d'un champ table c'est normal

    Pour que ta syntaxe fonctionne il faudrait qu'il y ait une table déclarée dans l'éditeur (ou de type champ) qui s'appelle PO_Grille

    Tu ne nous montres pas l'appel de tes procédures donc on ne sait pas ce que tu passes en paramètre

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Par défaut
    Bonsoir,

    Comme régulièrement, la documentation le dit, mais de manière un peu alambiquée ...

    Voir les remarques :
    Pour paramétrer les caractéristiques du champ créé, utilisez les propriétés associées au type de champ créé :

    Si le champ est créé directement, il est possible d'utiliser l'opérateur d'indirection pour manipuler le champ par son nom :
    Vous venez de comprendre que "il est possible de " signifie "il faut"
    Si le champ créé est associé à une variable de type Champ, il suffit d'utiliser directement les propriétés du champ sur la variable :
    Dans ce cas, le champ est "connu" et "il suffit de " signifie qu'on utilise la méthode habituelle
    Ce serait plus simple d'indiquer comment il faut faire et d'éventuellement rappeler ensuite l'indirection comme méthode alternative.

    Hemgé

  6. #6
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 133
    Par défaut
    Je ne me suis pas encore penché sur la création dynamique des champs (sauf avec le clonage) alors je m'excuse de ne pas être au point.
    la j'ai deux petites interrogations sur le sujet
    -l'utilisation de l'indice de la colonne est une ancienne ou nouvelle syntaxe? car je ne la connais pas. est ce que ça a un rapport avec l'ordre des colonnes?
    -est ce que la syntaxe suivante est correcte dans ce cas?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {PO_Grille+"["+LN_Ligne+"].Col_Style"}	= "D"

  7. #7
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 402
    Par défaut
    Cette syntaxe fonctionne, c'est celle que j'utilise.

    L'autre syntaxe ne m'intéresse pas car cela signifie que les colonnes sont toujours au même indice.
    Donc si on ajoute une colonne, qu'on la déplace, il faut penser à aller modifier cet indice dans le code et ça me semble laborieux.

    A la question, est-ce qu'elle est nouvelle, je ne sais dire. Elle est peut être arrivée avec la possibilité de sélectionner uniquement une cellule dans une table, mais il s'agit d'une supposition

  8. #8
    Membre Expert
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 399
    Par défaut
    On peut aussi écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {PO_Grille + ".Col_Style"}[LN_Ligne] = "D"
    Bref, il y a du choix

  9. #9
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {PO_Grille + ".Col_Style"}[LN_Ligne] = "D"
    Effectivement je ne connaissais pas ce principe.
    J'était resté sur le classique indice de ligne / indice de colonne

    Merci

  10. #10
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 244
    Par défaut
    A ma connaissance, la syntaxe maTable[num_ligne, num_colonne] = ... existe depuis toujours.

Discussions similaires

  1. [C# 1.1] Mémoriser un objet Table dans une session
    Par cpetitjean dans le forum ASP.NET
    Réponses: 4
    Dernier message: 20/09/2006, 17h38
  2. [Pl/SQL] relationnel objet : tables imbriquées
    Par gilux dans le forum Oracle
    Réponses: 1
    Dernier message: 18/03/2006, 01h23
  3. [ Struts ]Gestion de l'objet session
    Par trax020 dans le forum Struts 1
    Réponses: 5
    Dernier message: 22/08/2005, 17h56
  4. Gestion d'événements hors tables
    Par Quentin dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 11/02/2005, 01h09
  5. [Relationnel Objet] Tables d'Objet et les OID
    Par Laurent Dardenne dans le forum Administration
    Réponses: 5
    Dernier message: 24/03/2004, 19h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo