Accueil > Forum > > > > Pb Set filter to et de grid !!!
Pb Set filter to et de grid !!!
jeudi 23 juin 2005 à 08:45:28 |
Pb Set filter to et de grid !!!

spoutnic_37
|
aloha,
voici mon code qui est placé dans la methode click d'un bouton:
**************************************************************************************** close table all select 1 use clients * selection du numero de client pour permetre de retrouver toutes les factures qui lui sont ratachées LOCATE FOR societe= thisform.listcli.value SCATTER FIELDS numero memvar
select 2 use interven SET EXACT ON SET FILTER TO interven.Numero = m.numero go top
thisform.grid2.recordsource= "interven"
****************************************************************************************
mon probleme est que lorsque j'appuis sur le bouton, tout ce passe a peu pres comme il faut sauf si j'ai le malheur de cliquer dans le grid2. A ce moment la , il m'annonce une erreur , me disant qu'il ne trouve pas la variable numero alors qu'aucun code n'est mis deriere le grid2. Du coup la table perd son filtre et le grid2 affiche alors toute la table interven.
Y'aurait il quelque chose que j'aurais homis de faire, avec mon set filter to ou alors avec mon grid2 ? Pourquoi suis je obligé de faire un go top pour que le filtre marche ?
Sinon , j'ai plusieurs fois essayé de faire une requete sql (select ... from ...where) et a chaque fois il y a une fenetre qui apparait pour me mettre le enregistrements selectionnés par la requete. C assez génant de la voir apparaitre !!!!
|
|
jeudi 23 juin 2005 à 09:27:12 |
Re : Pb Set filter to et de grid !!!

spoutnic_37
|
re-aloha, j'ai changé ma condition de SET FILTER TO et une autre erreur apparait lors du click sur le grid. Donc le pb doit venir du filtre. Sinon est t'il possible de faire deux filtres sur la meme table ou de specifier un filtre qui aurait deux conditions? Je pense sinon a utiliser un scan endscan ou je marquerais les enregistrements qui ne m'interesse pas avec un delete et ensuite faire un SET DELETE on pour ne pas les traiter dans mon grid2 . Est ce une bonne methode ?
Le probleme de filtrages multiples est deja venu a moi précedement et je l'ai contourné en faisant un COPY TO et en travaillant sur la nouvelle table (effacer les enregistrements inutiles). Mais le probleme c qu'il y a creation d'un fichier dbf, recopie des enregistrements, elimination des enregistrements, et affichage dans le grid, et je trouve que ca met du temps (clignotement du grid)du je pense à l'acces au disque dur. La aussi est-ce une bonne methode ?
Merci de votre attention.
|
|
jeudi 23 juin 2005 à 10:32:24 |
Re : Pb Set filter to et de grid !!!

FredArmoni
|
As tu regardé du côté des vues paramètrées ou simplement des relations ? Fredmembre actif d' AtoutFoxMS MVP VFP
|
|
jeudi 23 juin 2005 à 10:41:45 |
Re : Pb Set filter to et de grid !!!

MichelAtoutFox
|
bonjour Spoutnic,
quelques remarques avant de répondre exactement à tes questions, si tu permets..
pourquoi fermes-tu tes tables ouvertes dans ce click? et pourquoi celles dont tu as besoin ne sont-elles pas déjà ouvertes? en général, les tables ou vues sont ouvertes au niveau du formulaire, en utilisant l'environnement de données, ou bien dans le load ou l'init du form (perso, je préconise l'environnement de données). tu es ainsi assuré qu'elles sont ouvertes quand tes objets sont créés, et que leur controlsource existe bien.
ta syntaxe "select1" puis "use clients" est incorrecte, même si elle ne te renvoie pas d'erreur. USE CLIENTS IN 0 ALIAS CLIENTS ORDER SONORDRE AGAIN SHARED USE INTERVEN IN 0 ALIAS INTERVEN ORDER SONORDRE AGIN SHARED SELECT CLIENTS ... traitement.... SELECT INTERVEN ...traitement... etc, etc...
concernant ta table clients, on peut supposer que tu as un repère d'index sur les champs les plus utilisés et déterminants. Donc, au lieu d'un locate for, tu pourrais uiliser un : "if indexseek(thisform.listcli.value,"sonordre",.t.)" c'est infiniment plus rapide, et tu dois toujours t'assurer du résultat de ta recherche (donc derrière un locate, tu mets toujours un if found(), sur un seek, tu mets un if !eof(), etc..)
pour ton grid, tu as 2 approches possibles : l'une qui utilise les relations (set relation... et set skip...) l'autre qui utilise une vue paramétrée pour le controlsource. et surtout pas le copy to !
tu regardes l'aide dans ces 2 directions, tu fais des essais avec les wizards (les assistants), et on reprend ensuite.
|
|
jeudi 23 juin 2005 à 10:48:10 |
Re : Pb Set filter to et de grid !!!

spoutnic_37
|
Je ne comprend pas ta question ? (vues paramètrées ???) J'utilise des tables independantes , si ca repond à ta question.
Le probleme viendrait apparement du m.numero. en effet je l'ai remplacé par un SCATTER FIELDS numero name ouou et maintenant c unn alias qui n'est pas trouvé, que se soit lorsque je click sur le grid2 ou alors lorsque je hide mon formulaire et le show apres. A mon avis , la variable m.numero, ou l'alias ouou.numero, ne sont pas gardées en memoire, et du coups ca plante, mais je ne comprend pas pourquoi puisque elle sont normalement créées lorsque j'appuis sur le bouton. Elles n'ont occune utilité avant et rien ne les appellent.
ps: Ah oui j'oubliais de dire que je travail avec vfp 6 .
|
|
jeudi 23 juin 2005 à 11:57:58 |
Re : Pb Set filter to et de grid !!!

MichelAtoutFox
|
Réponse acceptée !
Spoutnic,
admettons que tu gardes cette approche (je te conseille quand même de regarder du coté des indexs, et des relations, si tu ne te sens pas de créer un dbc avec des vues sur tes tables indépendantes).
1) mets un repère d'index structurel sur le champ societe (appellons le xsociete) 2) ouvre tes tables dans l'environnement de données, et donnes le controlsource de ton grid en création de formulaire (et non pas dans le click) 3) dans ton click, utilise la syntaxe suivante: if indexseek(thisform.listcli.value,.t.,"clients","xsociete") && je me positionne sur le client, s'il existe xnumero=societe.numero && je récupère son numéro select interven set filter to numero=xnumero && je prépare le filtre go top && j'exécute le filtre en déplaçant le pointeur if not eof ( ) && j'ai des enregistrements qui vont bien.. *!* je fais ce que j'ai à faire endif endif
regarde bien l'aide concernant l'étendue et la durée de vie des variables, tu auras ta réponse à ta question sur m.numero (qui n'est pas publique, donc qui n'existe pas en dehors de ton click) ; et quand tu fais un scatter name, tu ne crées pas un alias, mais un objet, attention à la confusion)
est-ce que tu peux donner les messages d'erreurs que tu obtiens (avec le numéro exact, et le message complet), c'est utile pour t'aider plus efficacement.
|
|
lundi 27 juin 2005 à 15:35:28 |
Re : Pb Set filter to et de grid !!!

spoutnic_37
|
Aloha , j'ai suivi tes derniers conseils, Michel, en reprenant le code et en rectifiant juste quelques petites choses. J'avait encore une erreur qui apparaissait me disant qu'il ne trouvait pas la variable 'xnumero' alors j'ai tout simplement definit xnumero comme une variable public, et ainsi elle est gardée en mémoire.
...... public xnumero xnumero=clients.numero && je récupère son numéro .....
merci pour cette précieuse aide!!!
Pour mon autre pb, a savoir comment faire pour filtrer, j'ai commencé a voir avec une autre methode . j'ai une table clients, qui contient tous les champs le concernant, et qui contient entre autre les champs : societe,ctra_date, ctra_prix,ctra_01m,ctra_03m, ctra_06m,ctra_12m . Les 4 dernier sont des champs logique qui determine si oui ou non le contrat est mensuel, trimestriel,.....annuel. Je dois donc grace a un listbox determinant le mois, trouver tout les societes dont les contrats stipulent donc qu'elles doivent payer le mois indiqué par le listbox. pourc e faire je fait la requete sql suivante :
SELECT societe,ctra_date,ctra_prix,ctra_01m,ctra_03m,ctra_06m,ctra_12m ; FROM Clients WHERE ((month(ctra_date))=parmois) and (ctra_01m=.T.) or; ((month(ctra_date))=partrim) and (ctra_03m=.T.) or; ((month(ctra_date))=parsem) and (ctra_06m=.T.) or; ((month(ctra_date))=this.listindex) and (ctra_12m=.T.) into cursor CurseurGrid
le into cursor me permet de créer un fichier tmp mais il est en lecture seul. Or je voudrais un seul champs a la place qui indique semestiel,annuel, mensuel,trimestriel et calculer ce qu'il doivent payer
donc au final, je dois avoir la societe, le prix du contrat, le ytpe de contrat, la date du contrat, et se qu'il doivent payer dans mon grid.(grid a recordsourcetype = alias et recordsource CurseurGrid )
que me proposeriez vous?
|
|
lundi 27 juin 2005 à 16:51:58 |
Re : Pb Set filter to et de grid !!!
|
mardi 28 juin 2005 à 15:53:04 |
Re : Pb Set filter to et de grid !!!

spoutnic_37
|
Réponse acceptée !
aloha !!!!
Voila g réussi a m'en tirer aevc ctte requete, du coup plus de set filter to .Vu que je suis encore moins bon en sql qu'en foxpro, ca pas ete simple, surtout que je n'ai rein trouver pour comparer deux heures et ainsi determiner le temps ecoulé entre ces deux heures.
date1=CTOd(substr(thisform.period.value,4,10)) && date de debut de periode date2=CTOD(substr(thisform.period.value,18,10)) && date de fin de periode
select clients
if indexseek(thisform.listcli.value,.t.,"clients","societe") && je me positionne sur le client, s'il existe public xnumero xnumero=clients.numero && je récupère son numéro && tps_passe2 et tps_passe1sont de type dateheure, la somme des durées est placée dans le champ temps du cuseur test select id_int,date_int,(alltrim(str(hour(tps_passe2)+ hour(tps_passe1)))+":"+; alltrim(str(minute(tps_passe2)+ minute(tps_passe1)))+":"+; alltrim(str(sec(tps_passe2)+ sec(tps_passe1)))); as temps,objet,total_h_t from interven ; where numero=xnumero and (dtos(date_int); between dtos(date1) and dtos(date2)); into cursor test
endif
thisform.grid2.recordsource= "test"
|
|
mardi 28 juin 2005 à 16:38:03 |
Re : Pb Set filter to et de grid !!!

MichelAtoutFox
|
attention à la syntaxe de between:
between(valeur_à_tester, borne_inférieure, borne_supérieure)
|
|
Cette discussion est classée dans : set, numero, to, filter, grid2
Répondre à ce message
Sujets en rapport avec ce message
set filter to et refresh [ par brunaux ]
Bonjour à tous2 petites questions qui feront peut-être sourire beaucoup d'entre vous au vu de leur simplicité pour les bons que vous êtes.1ere :quand
re set filter to [ par brunaux ]
bonjourmerci mike pour les réponses.je vois que tu n'apprecie pas trop SET FILTER TO,je trouve pourtant que c'est bien pratique et rapide pour les déb
Paramétrage de SET FILTER TO [ par statayou ]
Bonjour a tousJe voudrais, à partir d'une table DBF éditer des listes en faisant varier les criteres de tri sans intervenir su
filtrage [ par mourad1212 ]
bonjour je suis un debutant en foxpro. j'ai essayé SET FILTER TO mais elle est trés lente ma question est comment creer une VUE PARAMETRE au lieu d'ut
SET RELATION TO [ par PLANETVO ]
Pouvez-vous m’aider car j’ai mis mes tables en relation dans une relation 1 à plusieurs. La table parent est véhicule et pour chaque véhicule je veux
Récupération d'une chaine de caractère en VB [ par slyv44 ]
Bonjour,J'essais de récupérer des données dans une tables foxpro (dbf) depuis un VBscript. Mais pour certains champs je ne récupère que le premier car
problème avec alter table [ par jee0404 ]
bonjour, Je travaille avec les tables de foxpro (dbf) et j'ai faite un logiciel qui changele nom des colonmes manuellement avec la command
Le bouton set as default désactivé de sous menu options de menu tools pourquoi ? [ par amhidi ]
J'ai une session sur réseau et je n'arrive pas à définir mes parmètres par défaut sur foxpro7, alors que c'est bien activé dans foxpro6; ça dépend des
Numero de Serie physique d'un disque dur [ par mahdi22dz ]
Mes Salutations. Il existe des DLL (Ex:GetDiskSerial.dll, HardDiskId.dll ..etc) et des OCX ( SysIfo.ocx etc..) pour récupérer le N° de série du disque
VFPWinsock probleme pour joindre un fichier [ par rom87 ]
Bonjour ; Je viens de tester VFPvinsock pour envoyer des mails. Tout marche correctement sauf lors de l'envoi de fichier. "Impossible d'envoyer le ma
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|