begin process at 2010 02 09 17:36:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Foxpro

 > 

Archives

 > 

Formulaires

 > 

Application mullti-fichier


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Application mullti-fichier

dimanche 28 août 2005 à 20:12:50 | Application mullti-fichier

jvdh

Salut a tous,

Je programme depuis environ 2 ans en Visual Foxpro (version 8) et j'ai pu elaborer plusieurs systemes de gestion tant monoposte qu'en reseau sans beaucoup de problemes vu qu'auparavant j'utilisais CLIPPER.
Il se trouve que je dois realiser un travail pour une ecole. L'idee est de conserver l'information de plusieurs cycles scolaires. En Clipper, pas de problemes, je cree un fichier pour chaque cycle mais en VFP je suis paume car comme les formulaires font appel a une base de donnees precise, je ne trouve pas la maniere de conserver ni d'accesser les informations. Quelqu'un a -t-il une idee pour resoudre ce probleme ???

Merci d'avance.



lundi 29 août 2005 à 16:01:20 | Re : Application mullti-fichier

fonch001

Salut,

n'utilise jamais le "data environnement" qui garde en mémoire un chemin absolu, fait simplement un "use tablemachin" dans les méthodes load de tes formulaires.

En ayant pris soin de définir convenablement le "path" au début de ton progamme, tu ne devrait pas avoir de problème de localisation de tes tables.

A+

lundi 29 août 2005 à 17:58:51 | Re : Application mullti-fichier

jvdh


Salut,

Ce petit message pour te remercier pour avoir repondu si rapidement a mon probleme ainsi pour la solution proposee.
Je vais modifier mon projet de cette maniere.

Merci encore

JEAN

mardi 30 août 2005 à 12:52:53 | Re : Application mullti-fichier

Mike Gagnon

Membre Club
Fonch001

n'utilise jamais le "data environnement" qui garde en mémoire un chemin
absolu,

Drole d'observation. Je ne suis jamais empecher de mettre des tables dans le dataenviroment d'un formulaire pour cette raison. En sachant cette information, on n'a qu'a programmer en consequence.

Mike Gagnon
mardi 30 août 2005 à 13:51:25 | Re : Application mullti-fichier

fonch001

mike,

bonjour tout d'abord.

Drole d'observation
Peut-être mais c'est pourtant le cas (au moins en VFP 6 et 7)

En sachant cette information, on n'a qu'a programmer en consequence.
C'est l'essence même de mon post ???? Pour programmer en conséquence, encore faut-il avoir cette information....

Pour en remettre une couche : je trouve idiot en dangeureux d'utiliser le dataenvironnement vu qu'il conserve le chemin absolu de la table. Exemple vécu : tu mets 2 bases (et 2 applis) sur la même machine et tu te retrouves à avoir 2 applis qui pointent sur la même base (super de devoir retoucher 100 ou 150 forms pour corriger cela! et imagine si tu en oublies un...). Avec des USE, no problem.

A+

"Quand le sage montre la lune, l'idiot regarde le doigt"
mardi 30 août 2005 à 14:28:55 | Re : Application mullti-fichier

Mike Gagnon

Membre Club

Bonjour.

Peut-être mais c'est pourtant le cas (au moins en VFP 6 et 7)
Et VFP5 et VFP3.0

En sachant cette information, on n'a qu'a programmer en consequence.
C'est l'essence même de mon post ???? Pour programmer en conséquence, encore faut-il avoir cette information....

Je m'avoir mal expliqué. Normallement je met tourjours les tables dand le DE de mes formulaires, à mon avis il y a beaucoup d'avantage à faire ainsi qu'autrement Il y a de nombreuses methodes qui sont utilisé dans le DE qui s'occupe des tables, que tu évite completement en utilisant ta méthode.

Pour en remettre une couche : je trouve idiot en dangeureux d'utiliser le dataenvironnement vu qu'il conserve le chemin absolu de la table. Exemple vécu : tu mets 2 bases (et 2 applis) sur la même machine et tu te retrouves à avoir 2 applis qui pointent sur la même base (super de devoir retoucher 100 ou 150 forms pour corriger cela! et imagine si tu en oublies un...). Avec des USE, no problem.

Apres 19 ans de programmation en FoxPro, le terme 'idiot' pour valider un mausaive technique de programmation n'est pas nouveau. Les chemins  des tables n'est pas 'absolu' comme tu le dit si bien. Si par exemple tu crée un classe formulaire pour tout tes formualires et que tu ajoute use simple methode que remet les chemins 'a la bonne place', alors la tous tes formulaires vont réàgir de la meme façon avec une petite méthode que l'on écrit une fois. Il sans que dans ton exemple il faut forcer les chemins dans chaque formulaires (X 100). Et dans ton example si le client décide d'installé l'application sur le drive 'g', tu fait quoi? Voici une exemple d'un méthode qui remet 'les chemins à la bonne place' en se basant sur le chemin qui est indiqué dans un fichier INI.


* Use to fix the path for a table
* expC1 Name of the cursor we have to modify
* expC2 Alias (if passed will override the default cursor alias)

LPARAMETER tcCursor,tcAlias

LOCAL lcObject

lcObject="ThisForm.DataEnvironment."+tcCursor

WITH &lcObject
   SELECT TABLE

   * We will locate for record in TABLE.DBF
   IF NOT EMPTY(tcAlias) AND TYPE('tcAlias')='C'
      * We need to replace the Alias and the CursorSource properties
      * because we will override the cursor
      SEEK UPPER(ALLTRIM(tcAlias)) ORDER ALIAS
      STORE tcAlias      TO .Alias
      STORE ALLTRIM(NOM) TO .CursorSource
      ELSE

      * If this is a view
      IF UPPER(.CursorSource)='VIEW'
         LOCAL lcDatabase
         lcDatabase=SUBSTR(.Database,RAT('\',.Database)+1)
         STORE oApp.cData+'\'+lcDatabase TO .Database
         RETURN
      ENDIF

      LOCAL lcAlias,lnAt
      lcAlias=SUBSTR(.CursorSource,RAT('\',.CursorSource)+1)
      lnAt=AT('.',lcAlias)
      IF lnAt>0
         lcAlias=SUBSTR(lcAlias,1,AT('.',lcAlias)-1)
      ENDIF
      =SEEK(UPPER(lcAlias),'TABLE','ALIAS')
   ENDIF

   * We will replace the database property for those that are in a DBC
   IF NOT EMPTY(DBC)

      IF oApp.lMainIni
         STORE oApp.cData+'\'+ALLTRIM(DBC)+'.dbc' TO .Database
         ELSE
         STORE ALLTRIM(DBC)+'.dbc' TO .Database
      ENDIF

      ELSE     

      * We will replace the CursorSource property with the full path
      * for those not part of a DBC
      STORE ALLTRIM(CHEMIN)+'\'+ALLTRIM(NOM)+'.dbf' TO .CursorSource

      * If we are in a pick list or in a grid admin
      * Because of a bug in Visual FoxPro 5, we are not allowed
      * anymore to set the property of Database to blank
      * This means we will use a technique to add a cursor here
      * in order to have it blank at first
      IF ThisForm.Name='recherche'
         ThisForm.DataEnvironment.RemoveObject('Cursor1')
         ThisForm.DataEnvironment.AddObject('Cursor2','Cursor')
         ThisForm.DataEnvironment.Cursor2.CursorSource=ALLTRIM(CHEMIN)+'\'+ALLTRIM(NOM)+'.dbf'
         ThisForm.DataEnvironment.Cursor2.Alias=ALLTRIM(NOM)
         ThisForm.DataEnvironment.Cursor2.BufferModeOverride=2
         ThisForm.DataEnvironment.InitialSelectedAlias=ALLTRIM(NOM)
      ENDIF

      * We need to remove the database
*     .ResetToDefault('Database')

   ENDIF
  
   * If we are in adding mode, we have to change the buffering property to optimistic
   * to have the possibility to create more than one record at a time for this form
   IF TYPE('oApp.nRecnoToProcess')='N' AND oApp.nRecnoToProcess=-1
      STORE 5 TO .BufferModeOverride
   ENDIF

ENDWITH


Mike Gagnon

mardi 30 août 2005 à 14:56:40 | Re : Application mullti-fichier

fonch001

Moi je n'ai que 5 ans de programmation FP (2.6 UNIX) et VFP (6 et 7). Je développe des progiciels et non des logiciels, mon approche est donc légèrement différente.

A la lecture de ton explication, je comprend mieux ton approche du problème et je ne crois pas que l'une ou l'autre méthode soit meilleure (est-il plus vrai qu'une bouteille est à moitié vide ou à moitié pleine? - Pour ma part elle est 2 fois trop grande  désolé...).

Pour ce qui est de la "qualitée de ma méthode"  (si le client décide d'installé l'application sur le drive 'g', tu fait quoi?) il suffit de mettre
"set path = path() + curdir() && désolé c'est peut-être pas la syntaxe exacte, c'est juste pour la discussion"
au début du programme pour être tranquille (si les tables sont dans ton répertoire d'installation). Pour ma part, je n'ai pas ce problème puisque je fait moi-même les installations (architecture 3 tiers ou émulation distante).

La solution que je proposait donc à JVDH n'est pas la seule solution (quelle surprise!), mais elle a le mérite de fonctionner en faisant un minimum de modifs sur des forms déjà fait (ce qui était mon cas).

A+

"Quand le sage montre la lune, l'idiot regarde le doigt"
mardi 30 août 2005 à 15:02:03 | Re : Application mullti-fichier

Mike Gagnon

Membre Club
On est donc d'accord d'etre en désaccord.

Mike Gagnon
mercredi 31 août 2005 à 09:03:10 | Re : Application mullti-fichier

MichelAtoutFox

Membre Club
Allez,

moi aussi j'en rajoute une couche... pour dire mon accord avec Mike

une particularité de Fox (que j'utilise depuis... que c'était DbaseII !), c'est qu'on trouve toujours plusieurs solutions à un problème.

mais il y en a des bonnes, et des mauvaises.

et à mon avis, ne pas utiliser le dataenvironment, c'est une très très mauvaise solution.
Pourquoi? parce qu'on se prive d'une logique OBJET. le DE est un objet, qui est encore amélioré dans VFP9 (avec la classe DE et la classe cursoradapter).

dans une démarche objet, je fourre tout ce qui concerne l'accès aux data dans l'objet qui est fait pour ça. et si je dois absolument coder en dur mes use matablemachin, ce n'est pas dans le load de mes form que je le ferai.

j'utiliserais les méthodes spécifiques du dataenvironment (beforeopentables et opentables, par exemple, avec un autoopentables à F) dans une classe DE, et j'utiliserai cette classe dans ma classe de form, etc...

le minimum de modif aujourdhui peut parfois conduire au maximum d'emm... demain.
et pour demain, (et je pense à Sedna, et à la suite) c'est du coté du dataenvironment et du cursoradapter qu'il faut regarder.
mercredi 31 août 2005 à 14:26:28 | Re : Application mullti-fichier

fonch001

Bonjour,

Oui, je comprend et respecte ton point de vue. Tu as raison sur pas mal de points (désolé je ne connait pas VFP9)


A+

"Quand le sage montre la lune, l'idiot regarde le doigt"

1 2

Cette discussion est classée dans : fichier, application, problemes, mullti, clipper


Répondre à ce message

Sujets en rapport avec ce message

Foxpro 3 et XP [ par Psy06 ] Bonjour Dans certains cas lors du lancement d'une application développée avec Visual foxpro 3.0 sous window XP je reçois des messages : "c:\windows\sy re-selection d'enregistrement [ par brunaux ] dans le 1er fichier il y a donc 75 variables,les 4 premieres sont de longueur differentes et toutes de type caractere, et les 71 autres dont toutes de Export d'une requête en xls [ par crampe666 ] Salut à tous,Je cherche (et même j'arrive) à exporter les résultats d'une requête dans un fichier excel.Voici mon bout de code :   select mon_champ fr j'ai besoin de votre aide dans une chose importante dans foxpro [ par jbenzakour ] je suis programmeur de vb et je ne connait rien dans le foxpro mais dans la société ou je travail se trouve un programme de la paie avec fox pro. et j copier ver excel [ par brunaux ] Bonjour à tousComment faire lorsque l'on à un fichier de 30 0000 (ou plus) enregistrements et que l'on veut le copier en excel et avoir l'integralite importation txt --> fox pro [ par gregorian ] Bonjour, à tous, J'aurais voulu savoir si il existait une fonction permettant de lancer la commande d'importation d'un fichier txt en dbf (un peu comm prob avec un append from [ par gregorian ] Bonjour, J'ai été voir cette fonction, et il me semble qu'elle répond tout a fait à mes attentes sauf un petit problème.Donc, la table existe, je l'ai Form [ par Domatreal ] SalutJe suis un novice en Visual FoxPro. J'ai la version 9.0. Je programme par plaisir. J'ai creer une forme avec laquelle j'ouvre un fichier et j'aim Fenêtre visual foxpro !!! [ par spoutnic_37 ] Aloha !!!   je voudrais faire une application qui utiliserait la fenêtre de visual foxpro (et non un formulaire). Le probleme est que la "croix" de ce Application de gestion d'une caisse de bar [ par CaromTom ] Bonjour,Je cherche à fabriquer une caisse de bar (édition de ticket,gestion de stock) avec VFP.Avez-vous des conseils ou des sources qui pourraient m'


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,187 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales