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 :

Table fichier (vue) + TableEnregistre()


Sujet :

WinDev

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 121
    Points : 65
    Points
    65
    Par défaut Table fichier (vue) + TableEnregistre()
    BOnjour, j'ai un petit problème, qu'aujourd'hui j'ai pu contourner, mais auquel j'aimerais avoir une réponse car ça m'agace de ne pas savoir.

    Je dispose d'une table contenant une 10aine de colonnes. Cette table est une table fichier liée à un fichier de l'analyse. A l'ouverture de ma fenêtre je créée une vue sur ce fichier, et ma table est donc liée à cette vue. La clé de parcours est l'id du fichier, à savoir IdLigneDevis.
    Je travaille donc sur ma table, j'ajoute ou supprime des lignes, je modifie, ok. En revanche lorsque je veux valider, j'utilise ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    pour toute ligne de TABLE
         TABLE.COLONNEIDDEVIS = DEVIS.IDDEVIS
         TableEnregistre()
    FIN
     
    [...]
     
    HVueVersFichier(rsVueLignes)
    Car je ne connais l'id du devis qu'à la validation. (Ce traitement est effectué en création et en modification pour mettre à jour le fichier).
    Or j'ai le souci suivant : lorsque mes lignes sont enregistrées dans le fichier, elles sont enregistrées dans un ordre a priori aléatoire. Le parcours "POUR TOUTE LIGNE" parcourt bien les lignes de la table de la première à la dernière, mais dans mon fichier il se peut que les lignes soient dans un ordre aléatoire.
    Par exemple si je mets comme lignes dans la table
    Ref 1
    Ref 2
    Ref 3
    je peux avoir dans le fichier après enregistrement (id - Ref)
    1000 - Ref 1
    1001 - Ref 3
    1002 - Ref 2.
    Cette "modification d'ordre" des lignes n'a lieu qu'en création, si en modificaiton je déplace mes lignes dans la table, lors de l'enregistrement l'ordre est correct. Pourtant, comme dit précédemment, le même traitement "POUR TOUTE LIGNE ...." est effectué. L'id est un identifiant automatique donc il se créée tout seul. POURQUOI DANS LE DESORDRE?

    CEPENDANT

    Avant tout fonctionnait sans souci, aucun problème de randomisation de l'ordre, ceci ne se produit que depuis que dans ma table j'ai rajouté une colonne "Remise" en l'occurrence, ce qui, à mon sens n'a aucun impact sur le TableEnregistre ni sur le HCreeVue() a l'ouverture ni sur le HVueVersFichier a la validation.

    Quelqu'un saurait me dire ce qui peut provoquer cette erreur?
    Actuellement, pour contourner ce problème, j'ai créé ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    si cstModeCreation alors
         pour i = 1 _A_ tableoccurrence(Table)
              lignedevis.ref = table.col_ref[i]
              lignedevis.designation = table.col_designation[i]
              [...]
              HAjoute(LigneDevis)
         FIN
    FIN
    Ce qui fonctionne bien, mais ça m'ennuie assez que le TableEnregistre ne fonctionne bien alors qu'avant il fonctionnait parfaitement.

    Si quelqu'un peut m'éclairer... merci.

  2. #2
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    Citation Envoyé par Thanor Voir le message
    ...La clé de parcours est l'id du fichier....
    ...je ne connais l'id du devis qu'à la validation...
    Tu peux t'expliquer ? c'est totalement illogique ça ou alors j'ai rien compris.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 121
    Points : 65
    Points
    65
    Par défaut
    Dans mon fichier LigneDevis j'ai une rubrique IdDevis (pour relier la ligne au devis, forcément...) et une rubrique IdLigneDevis (qui est l'id auto du fichier LigneDevis).

    En mode création, à la validation je crée d'abord le devis, puis les lignes qui vont avec. Donc je ne connais l'id du devis qu'à la validation puisque c'est à ce moment là qu'il est créé.

    Et la clé de parcours pour l'affichage des lignes de devis (la clé qui est spécifiée lors de la création de ma vue sur LigneDevis) est IdLigneDevis. En effet lorsque j'ouvre un devis existant je veux que les lignes s'affichent dans l'ordre dans lequel je les ai tapées, qui est censé être également l'ordre dans lequel elles ont été enregistrées dans le fichier.

  4. #4
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    Ah oui ça y est j'ai compris...

    Ben ce que je fais moi c'est que je mets le code d'ajout de l'entete dans une fonction et que j'appelle la fonction à chaque enregistrement de ligne

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 121
    Points : 65
    Points
    65
    Par défaut
    ??

    Là c'est moi qui comprends pas. C'est bien ce que je fais sauf que moi je le mets pas dans une fonction, non?

  6. #6
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    Ton souci est que l'enteten'existe pas quand tu créé la ligne ? Alors crée là !

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 121
    Points : 65
    Points
    65
    Par défaut
    Impossible : c'est une appli qui tourne en réseau. Mon devis est identifié par un numéro de devis qui suit une logique de numérotation du type "DV[date][numero]" par exemple DV0904280001 si c'est le premier devis du 28/04/09 (je schématise bien sur :p).

    Or si je créée l'en tête sur un poste, à l'ouverture du devis, il se peut que sur un autre poste, quelqu'un créée également un devis avant que je n'aie validé le mien. Ce devis aura le même numéro car il est calculé d'après le dernier devis en base (HLitDernier()). Je suis donc obligé de calculer le numéro du devis juste avant la création de l'enregistrement, c'est à dire lors de la validation.

    Mais mon problème n'est absolument pas là, mon problème est que le TableEnregistre m'enregistre mes lignes dans un autre ordre que celui dans lequel on les a rentrées dans la table. Et ceci suite apparemment au rajout d'une colonne dans ma table.

  8. #8
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    Ah. connais pas ce pb ! un ordre de tri peut etre ?

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 121
    Points : 65
    Points
    65
    Par défaut
    Ben justement je n'applique aucun tri sur la table au niveau du code, et ma vue est triée simplement sur l'idLigneDevis donc ça doit le faire normalement. D'autant plus que si je suis en mode modification, que je change l'ordre des lignes, ça les enregistre dans l'ordre que je leur donne. C'est uniquement en création, que ça enregistre un peu façon random.

  10. #10
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    C'est un problème étrange mais la question est: qu'est-ce que ça fait? Quelles sont les conséquences qui empêchent ton logiciels de fonctionner normalement à cause de ça?

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 121
    Points : 65
    Points
    65
    Par défaut
    Bah dans la société, les nenettes créent un devis, elles tapent les lignes, valident, bon ça fonctionne certes. Mais lorsqu'elles le rouvrent pour le modifier ou y ajouter une ligne ou modifier une quantité, les lignes ne sont pas dans le même ordre. Ca fonctionne oui, mais ça fait pas très pro quoi.

  12. #12
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    Personnellement, quand je veux garder les enregistrements dans un ordre précis, je numérotes manuellement les lignes plutôt que de me fier à l'ordre physique. Ça permet aussi de réordonner les lignes. Tu devrais peut être te pencher sur cette solution.

  13. #13
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 121
    Points : 65
    Points
    65
    Par défaut
    J'y avais pensé, mais l'appli est en prod actuellement, et créer une numérotation manuelle des lignes va me faire modifier l'analyse, les procédures d'ouverture de devis/facture en mode modification et création,les traitements de monter/descendre les lignes, etc... Boulot assez lourd. Mais bon si ya que ça je le ferai, quand j'aurai 1/2 journée de libre...

  14. #14
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    De toute manière :

    1 - tu ne peux pas faire confiance a l'ordre physique.
    2 - si tu veux un tri il te faut une rubrique.

    C'est incontournable. a partir de ce moment là soit tu mets une rubrique que tu remplis par programmation soit une clé automatique : tu auras au moins clef unique sur ce fichier.

  15. #15
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 121
    Points : 65
    Points
    65
    Par défaut
    mon IdLigneDevis qui sert de rubrique de tri, est une clé automatique.....

  16. #16
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    Es tu en train de dire qu'il ne reflete pas l'ordre de création des enregistrements ?

  17. #17
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    C'est ce qu'il dit au début, tout va bien jusqu'au HVueVersFichier qui ne garde pas l'ordre physique entre la vue et le fichier.

  18. #18
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    çà fait quoi concrètement ? parce que là tu n'explique pas grand chose.

    C'est ce qu'il dit au début ? çà veux dire quoi çà ?
    Tu dis que tu utilise hvueversfichier mais alors tu modifie l'ID ?

  19. #19
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 251
    Points : 98
    Points
    98
    Par défaut
    Le phénomène me parait logique.

    Je suppose que tu supprimes rarement les lignes de devis.

    Tout fonctionnait bien tant que tu ne supprimes beaucoup lignes, car l'ordre d'insertion physique correspondait à l'ordre de l'ID.

    Quand tu as ajouté la rubrique Remise le fichier a changé l'ordre physique.

    Donc, puisque l'ID que tu lis est le même (IdDevis), les lignes sont lues/chargés selon le NumEnreg.

    Je pense que devrai seulement changer la charge des lignes de la commande en les lisant/triant par IDLigCde, qui lui doit être dans l'ordre d'insertion.

Discussions similaires

  1. [WD5.5] Tri d'une table fichier.
    Par Thanor dans le forum WinDev
    Réponses: 15
    Dernier message: 30/01/2007, 16h57
  2. [Windev10] Contenu de table Fichier -> Vue
    Par yaboki dans le forum WinDev
    Réponses: 1
    Dernier message: 14/12/2006, 13h41
  3. Ajout de lignes dans table fichier
    Par Philippe.p dans le forum WinDev
    Réponses: 8
    Dernier message: 08/12/2006, 16h58
  4. [WD10] Table fichier
    Par charly12 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/03/2006, 21h39
  5. Différence entre table et vue? (intégré FAQ)
    Par popov2 dans le forum Oracle
    Réponses: 4
    Dernier message: 15/08/2005, 23h34

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