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 :

Champ table chargé par programmation [WD18]


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2013
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Champ table chargé par programmation
    Bonjour,

    J'ai un champ table qui est chargé par programmation selon que je sélectionne une semaine ou une date de début et de fin.

    Le code utilisé pour chargé le champ table est le suivant:

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    PROCEDURE Remplir_Planification_Vernis()
     
    I est un entier
    I = 1
     
    TableSupprimeTout(TABLE_Planif_Vernis)
    TableSupprimeTout(TABLE_Planif_VernisRV)
     
    Sablier(Vrai)
     
    HExécuteRequête(REQ_QuantitéEnCommande,hRequêteDéfaut,SAI_DateDébut,SAI_DateFin)
    HLitPremier(REQ_QuantitéEnCommande)
    TANTQUE PAS HEnDehors(REQ_QuantitéEnCommande)
    	HLitRecherchePremier(SW00SX005,stocknumber,REQ_QuantitéEnCommande.stockordered)
    	SI HTrouve(SW00SX005) ALORS
    		TableAjouteLigne(TABLE_Planif_Vernis)
    		TABLE_Planif_Vernis.COL_Couleur[I] = SW00SX005.couleurdesc
    		TABLE_Planif_Vernis.COL_Essence[I] = SW00SX005.essence
    		TABLE_Planif_Vernis.COL_Grade[I] = SW00SX005.grade
    		TABLE_Planif_Vernis.COL_Largeur[I] = SW00SX005.largeur
    		TABLE_Planif_Vernis.COL_QtéRequise[I] = REQ_QuantitéEnCommande.la_somme_quantityordered - REQ_QuantitéEnCommande.la_somme_qtycanceled
    		TABLE_Planif_Vernis.COL_NuméroStock[I] = REQ_QuantitéEnCommande.stockordered
    		TABLE_Planif_Vernis.COL_Type[I] = SW00SX005.recordtype
    		TABLE_Planif_Vernis.COL_Source[I] = SW00SX005.sourcepf
    		HLitRecherchePremier(SW00XX099,stocknumber,REQ_QuantitéEnCommande.stockordered)
    		SI HTrouve(SW00XX099) ALORS
    			TABLE_Planif_Vernis.COL_QtéProduire[I] = SW00XX099.QtéProduire
    			TABLE_Planif_Vernis.COL_Commentaire[I] = SW00XX099.Commentaire
    		SINON
    			TABLE_Planif_Vernis.COL_QtéProduire[I] = ""
    			TABLE_Planif_Vernis.COL_Commentaire[I] = ""
    		FIN
    		HLitRecherchePremier(SW00XD031,recordkey,SW00SX005.recordkey)
    		SI HTrouve(SW00XD031) ALORS
    			TABLE_Planif_Vernis.COL_��paisseur[I] = SW00XD031.epaisseur
    			TABLE_Planif_Vernis.COL_Boite[I] = SW00XD031.codeboite
    			TABLE_Planif_Vernis.COL_QtéBoite[I] = (REQ_QuantitéEnCommande.la_somme_quantityordered - REQ_QuantitéEnCommande.la_somme_qtycanceled) / SW00XD031.piedparboite
    			TABLE_Planif_Vernis.COL_Gloss[I] = SW00XD031.gloss
    		FIN
    		HLitRecherchePremier(SW00XD040,recordkey,SW00SX005.recordkey)
    		SI HTrouve(SW00XD040) ALORS
    			TABLE_Planif_Vernis.COL_Teinture[I] = SW00XD040.teinturecode
    			TABLE_Planif_Vernis.COL_Intensité[I] = SW00XD040.teintintensite
    		FIN
    	FIN
    	I = I + 1
    	HLitSuivant(REQ_QuantitéEnCommande)
    FIN
    Mon problème est le suivant:

    À ma première sélection tout se passe bien mon champ table est chargé.

    Cependant si je fait une seconde sélection toutes les lignes du champ table sont à blanc sauf la dernière qui correspond au dernier record lu.

    Si je roule mon programme étape par étape je vois la ligne 1 dans mon champ table.
    Lorsque je continue pour la ligne 2 la ligne 1 est mis à blanc et la ligne 2 s'affiche et ainsi de suite jusqu'à la fin.

    Merci pour votre aide.

    Bonne fin de journée

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

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour

    Un petit conseil pour commencer : au lieu d'incrémenter I à la main, avec le risque de le faire au mauvais moment ou au mauvais endroit tu peux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    I = TableAjouteLigne(TABLE_Planif_Vernis)
    comme ça tu seras toujours sur que correspond bien à la nouvelle ligne ajoutée (pense bien sur à enlever ton incrémentation manuelle)

    Dans ton exemple tu incrémentes I même si la ligne n'est pas ajoutée dans la table (si SW00SX005 n'est pas trouvé)

    Autre chose : ne peux tu pas faire une jointure avec SW00SX005 dans ta requête initiale ? ça simplifierait les choses
    Idem pour les autres fichiers

  3. #3
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Ton problème doit provenir entre l'incrémentation du I et le TableAjouteLigne() qui doivent se mélanger les pinceaux.

    J'aurais tendance à faire plutôt quelque chose qui ressemblerait à ça...

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    nQtéProduire,nEpaisseur,nQtéBoite,nIntensité sont des entiers
    sCommentaire,sCodeBoite,sGloss,sTeinture sont des chaînes
     
    TableSupprimeTout(TABLE_Planif_Vernis)
    TableSupprimeTout(TABLE_Planif_VernisRV)
     
    Sablier(Vrai)
     
    HExécuteRequête(REQ_QuantitéEnCommande,hRequêteDéfaut,SAI_DateDébut,SAI_DateFin)
    HLitPremier(REQ_QuantitéEnCommande)
    TANTQUE PAS HEnDehors(REQ_QuantitéEnCommande)
    	HLitRecherchePremier(SW00SX005,stocknumber,REQ_QuantitéEnCommande.stockordered)
    	SI HTrouve(SW00SX005) ALORS
    		HLitRecherchePremier(SW00XX099,stocknumber,REQ_QuantitéEnCommande.stockordered)
    		SI HTrouve(SW00XX099) ALORS
    			nQtéProduire = SW00XX099.QtéProduire
    			sCommentaire = SW00XX099.Commentaire
    		SINON
    			nQtéProduire = 0
    			sCommentaire = ""
    		FIN
    		HLitRecherchePremier(SW00XD031,recordkey,SW00SX005.recordkey)
    		SI HTrouve(SW00XD031) ALORS
    			nEpaisseur = SW00XD031.epaisseur
    			sCodeBoite = SW00XD031.codeboite
    			nQtéBoite  = (REQ_QuantitéEnCommande.la_somme_quantityordered - REQ_QuantitéEnCommande.la_somme_qtycanceled) / SW00XD031.piedparboite
    			sGloss     = SW00XD031.gloss
    		SINON
    			nEpaisseur = 0
    			sCodeBoite = ""
    			nQtéBoite  = 0
    			sGloss     = ""
    		FIN
    		HLitRecherchePremier(SW00XD040,recordkey,SW00SX005.recordkey)
    		SI HTrouve(SW00XD040) ALORS
    			sTeinture = SW00XD040.teinturecode
    			nIntensité = SW00XD040.teintintensite
    		SINON
    			sTeinture  = ""
    			nIntensité = 0
    		FIN
     
    		TableAjouteLigne(TABLE_Planif_Vernis,SW00SX005.couleurdesc, ...
    							SW00SX005.essence, ...
    							SW00SX005.grade, ...
    							SW00SX005.largeur, ...
    							REQ_QuantitéEnCommande.la_somme_quantityordered - REQ_QuantitéEnCommande.la_somme_qtycanceled, ...
    							REQ_QuantitéEnCommande.stockordered, ...
    							SW00SX005.recordtype, ...
    							SW00SX005.sourcepf, ...
    							nQtéProduire, ...
    							sCommentaire, ...
    							sCodeBoite, ...
    							nQtéBoite, ...
    							sGloss, ...
    							sTeinture, ...
    							nIntensité)
    	FIN
    	HLitSuivant(REQ_QuantitéEnCommande)
    FIN
    A toi te voir pour les types de variables, sans précision j'ai fais comme je l'ai senti...

    Autre chose importante l'ordre des colonnes dans le TableAjouteLigne() est important.
    Pareil, là j'ai les valeurs dans qu'elles apparaissent dans la boucle, à toi de faire correspondre les valeurs avec les bonnes colonnes...
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2013
    Messages : 91
    Points : 136
    Points
    136
    Par défaut
    bonjour

    le coup classique des tris

    ne pas oublier de faire un tabletri(nomdelatable,faux) après le tablesupprimetout pour les 2 tables

    bon devs

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2013
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    J'ai résolu mon problème en suivant la suggestion suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    I = TableAjouteLigne(Table_Planif_Vernis)
    Merci à ceux qui ont pris le temps de me répondre.

    Bonne fin de journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/12/2014, 17h44
  2. Changer la source d'un champ page interne par programmation
    Par CHARLI BONGO dans le forum WebDev
    Réponses: 1
    Dernier message: 24/07/2012, 14h44
  3. [WD17] associer un champs à un onglet par programmation
    Par cassandra dans le forum WinDev
    Réponses: 22
    Dernier message: 18/06/2012, 08h56
  4. [WD15] création de champs de saisie par programmation
    Par stefano dans le forum WinDev
    Réponses: 2
    Dernier message: 17/02/2012, 22h44
  5. [WD14] remplir une Table Fichier par programmation
    Par burndev dans le forum WinDev
    Réponses: 3
    Dernier message: 14/08/2009, 17h16

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