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 :

Question sur ConstruitTableFichier


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Question sur ConstruitTableFichier
    Bonjour,

    Je crée une table à l'aide de la fonction ConstruitTablefichier, avec comme base de donnée un fichier hyperfile. Cette tablefichier contient plusieurs colonnes (Produit,client,prix..).
    J'aimerai tout simplement faire le total de tous les produits vendus,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    POUR i=1 A HNbEnr(NomFichier,hEtatTous)
    	HLit(NomFichier,i)
    	SI HEtat() = hEtatActif ALORS 
    		Total=Total+Val(NomFichier.Prix)
    	FIN
    FIN
    Le problème avec ce code, quand j'active un filtre le code prend en compte toutes les valeurs et non les valeurs affichées.

    Est-il possible d'utiliser un code si dessous? Mais Table_Ventes.Prix est inconnue vu que c'est une tablefichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    POUR nCumul=1 A ListeOccurrence(TABLE_Ventes)
    	PrixTotal+=TABLE_Ventes.Prix[nCumul]
    FIN
    Merci d'avance.

  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

    Utilise les indirections pour adresser un champ qui n'existe pas (encore)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    POUR nCumul=1 _A_ ListeOccurrence(TABLE_Ventes)
    	PrixTotal+= {"TABLE_Ventes.Prix",indChamp}[nCumul]
    FIN

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Merci, ça fonctionne .

    Mais ça fonctionne pour toutes les colonnes sauf une.
    Par exemple je veux colorer les lignes selon le modèle. Je marque exactement le même code.. sauf que il me dit que "Famille" est inconnue.
    C'est la première colonne de ma base de donnée, aucune erreur d'orthographe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SI INT_Couleur=1 ALORS
    	POUR n=1 _A_ TableOccurrence(TABLE_Ventes)	
    			SI {"Famille",indChamp}[n]="Vélo enfant" ALORS TABLE_Ventes[n]..CouleurFond = CyanPastel
    			SI {"Famille",indChamp}[n]="VTT" ALORS TABLE_Ventes[n]..CouleurFond = VertPastel
    			SI {"Famille",indChamp}[n]="Vélo de route" ALORS TABLE_Ventes[n]..CouleurFond = iGrisClair
    			SI {"Famille",indChamp}[n]="VTC" ALORS TABLE_Ventes[n]..CouleurFond = iJauneClair
    			SI {"Famille",indChamp}[n]="Vélo électrique" ALORS TABLE_Ventes[n]..CouleurFond = MagentaPastel
    	FIN
    FIN

  4. #4
    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
    Si c'est le première colonne de ta table peux-tu faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Info(TableEnumèreColonne(TABLE_Ventes, 1))
    Pour être sur que son nom est bien "Famille"
    Ou alors tu affiches ChampEnCours() sur l'évènement clic sur la table

    Tu devrais aussi
    - préciser le nom de la table dans l'indirection :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"TABLE_Ventes.Famille",indChamp}[n]
    - utiliser SELON plutôt que des SI en série

    Ensuite pourquoi faire un ConstruitTablefichier ? La requête source peut varier ?
    Parce qu'un traitement comme celui là (mise en couleur) tu peux faire ça facilement dans le traitement "Affichage d'une ligne" de la table, et sans passer par des indirection si ta table est fixe (basée sur ta requête)

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Étrange, enfait le nom des colonnes est _COL1,_COL2.. Mais il reconnait quand même la colonne prix..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     {"TABLE_Ventes.Prix",indChamp}[n]
    Du coup les couleurs marchent, c'est bon, merci encore!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    n est un entier
     
    SI INT_Couleur=1 ALORS
    	POUR n=1 _A_ TableOccurrence(TABLE_Ventes)	
    		SELON {"_COL1",indChamp}[n]
    		CAS "Vélo enfant": TABLE_Ventes[n]..CouleurFond = CyanPastel
    		CAS "VTT" : TABLE_Ventes[n]..CouleurFond = VertPastel
    		CAS "Vélo de route" : TABLE_Ventes[n]..CouleurFond = iGrisClair
    		CAS "VTC" : TABLE_Ventes[n]..CouleurFond = iJauneClair
    		CAS "Vélo électrique" : TABLE_Ventes[n]..CouleurFond = MagentaPastel
    		FIN
    	FIN
    FIN
    La table reste fixe, rien ne change. Au départ la table est vide donc si je n'utilise pas d'indirection il va forcement pas connaitre les colonnes?

  6. #6
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2002
    Messages : 899
    Points : 1 100
    Points
    1 100
    Par défaut
    Si tu ne veux pas te prendre la tête avec les indirections, je pense que tu peux aussi créer les colonnes _COL_1, _COL_2, etc. dans ta table avant de commencer.
    Les colonnes seront supprimées puis recréées de toutes façons.

Discussions similaires

  1. [debutant] Questions sur 1 futur projet
    Par cyrull22 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 28/04/2003, 21h49
  2. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 21h23
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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