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 :

comment faire 2 hlitrecherche imbriqués sur un meme fichier


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 123
    Par défaut comment faire 2 hlitrecherche imbriqués sur un meme fichier
    Bonjour,

    Comment faites vous pour lire 2 fois un fichier ? Je m'explique, j'ai un 1er Hlitrecherchepremier avec un traitement a executer tantque mon htrouve = vrai sauf ça ne fonctionne pas car dans mon traitement je suis dois faire une 2eme lecture dans ce meme fichier !!

    Voici mon code :

    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
    HLitRecherchePremier(HIS_ACT,DATECOD_PROC,[gdDatePointage,"C"])
    TANTQUE HTrouve(HIS_ACT) = Vrai
     
    --- je fais encore d'autre Hlit sur d'autre fichiers donc tout va bien, je vous passe les details --- 
     
    					//Recherche ds His_Act si SP entre le milieu du mois dernier et aujourd'hui si oui coche la case sp ds table
    				dDateDapDeb,dDateDapFin sont des Dates
    				dDateDapDeb = DateDuJour()
    				dDateDapDeb .. Mois --
    				dDateDapDeb .. Jour = 15
    				dDateDapFin = DateDuJour()
     
    				CléParcours = HFiltre(HIS_ACT,CCSC,[HIS_ACT.SOC,HIS_ACT.CONTRAT],[HIS_ACT.SOC,HIS_ACT.CONTRAT],ChaîneConstruit("HIS_ACT.DATE >= " + dDateDapDeb + "ET HIS_ACT.DATE <= " + dDateDapFin))
     
    				SI CléParcours <> "" ALORS
    					HLitPremier(HIS_ACT, CléParcours)
    						TANTQUE HTrouve(HIS_ACT) = Vrai								
    						SI HIS_ACT.COD_PROC = "SP" ALORS
    							UnSp = 1
    							SORTIR 
    						FIN	    
    						HLitSuivant(HIS_ACT)	    	
    					FIN	
    				FIN
     
    			NumLigneTab = TableAjouteLigne(TABLE_CDT,HIS_ACT.CGROUPE,HIS_ACT.CIMMEUB,HIS_ACT.CLOCAL,HIS_ACT.CONTRAT,sNomReq + " " + sPrenomReq,SoldCpt,DetActu,DetIni,"","","",HIS_ACT.SOC,HIS_ACT.CAGENCE,HIS_ACT.OCC,HIS_ACT.NOBAIL)						
     
    				//coche l'interrupteur de la colonne sp
    				SI UnSp = 1 ALORS
    					TABLE_CDT.COL_SP[NumLigneTab] = 1
    				FIN
     
    			FIN
     
    		FIN
    	FIN
     
    	HLitSuivant(HIS_ACT)
     
    FIN
    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Par défaut
    Je ne suis pas un spécialiste des fonction "h" mais je crois qu'il faut utiliser un hAlias....

    Mais je te conseille de plutôt passer par des requêtes d'une façon générale...

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 303
    Par défaut
    Bonjour à tous,

    Ici le plus simple c'est d'utiliser les fonctions HSauvePosition et HRestaurePosition.

    Voir l'aide en ligne avec exemple de parcours imbriqués.
    http://doc.pcsoft.fr/fr-FR/?3044136


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

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 393
    Par défaut
    Bonjour
    Citation Envoyé par michel.souris Voir le message
    Je ne suis pas un spécialiste des fonction "h" mais je crois qu'il faut utiliser un hAlias....

    Mais je te conseille de plutôt passer par des requêtes d'une façon générale...
    Entièrement d'accord, surtout pour la deuxième phrase :-)

  5. #5
    R&B
    R&B est déconnecté
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Par défaut
    Bonjour

    je préfère une autre méthode qui a fait ses preuves : les source de données.
    il faut déclarer une variable source de données et la brancher sur le fichier en question.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    sdFichier est un Source de Données
    HDéclareExterne(fichier..Répertoire+fichier..Nom+fichier..Extension,sdFichier)
    //... tavail sur sdfichier comme s'il s'agissant de fichier
    HAnnuleDéclaration(sdFichier)
    En effet, HSauveposition ne tarite pas forcément le cas d'un filtre en cours alors que la source de donnée crée un nouveau branchement sur le fichier en question mais dans un contexte HyperFile complètement vierge, ce qui est à mon humble avis nettement plus efficace.
    Notez aussi que cela convient particulièrement pour des suppression en chaine que d'avoir deux entrées sur le même fichier.

    je vous renvois à cette page sur le sujet que j'ai pu rédiger en son temps.

  6. #6
    Membre éprouvé
    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
    Par défaut
    bonjour

    à mon avis il manque des tests de sortie de boucle dans le premier tantque

    vous écrivez :
    HLitRecherchePremier(HIS_ACT,DATECOD_PROC,[gdDatePointage,"C"])
    TANTQUE HTrouve(HIS_ACT) = Vrai

    si vous avez des dates supérieures à gdDatePointage, avec votre code elles seront lues dans ce tantque

    c'est plus sûr d'écrire :
    HLitRecherchePremier(HIS_ACT,DATECOD_PROC,[gdDatePointage,"C"])
    TANTQUE pas hendehors(HIS_ACT) et HIS_ACT.DATECOD_PROC=gdDatePointage et HIS_ACT.NOMRUBRIQUETEST2="C" ( remplacer NOMRUBRIQUETEST2 par le nom exact de la rubrique dans ce fichier )

    idem pour le deuxième tantque

    bon dev

Discussions similaires

  1. Réponses: 10
    Dernier message: 30/11/2006, 19h47
  2. Comment faire de la 2D sur de la 3D ??
    Par Deedier dans le forum OpenGL
    Réponses: 9
    Dernier message: 29/03/2005, 14h06
  3. comment faire fonctionner l'exe sur une autre machine
    Par brian79 dans le forum C++Builder
    Réponses: 8
    Dernier message: 28/05/2004, 14h00
  4. Réponses: 2
    Dernier message: 03/05/2004, 12h13
  5. Comment faire un Drag&Drop sur un tableau
    Par Stef.web dans le forum Composants VCL
    Réponses: 6
    Dernier message: 11/10/2003, 13h12

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