Rechercher : dans
Par :

Code réseau avec Visual Foxpro 6.0

Dernière réponse le 2 nov 2009 à 13:56:47 samy_mada, le 25 jan 2005 à 12:39:02 
 Signaler ce message aux modérateurs

Bonjour à tous et bonne année !!!
Je programme en Visual Foxpro 6.0 depuis quelques temps et j'ai essayé de faire une application tournant en réseau, MAIS elle montre une certaine lenteur et je souhaites votre aide pour resoudre ce GRAND PROBLEME pour moi.
Si possible, un extrait de code tentant d'ajouter un enregistrement dans une table utilisée par plusieurs postes simultanément.
Merci de votre aide.

Meilleures réponses pour « Code réseau avec Visual Foxpro 6.0 » dans :
Visual FoxPro VoirPRESENTATION Visual FoxPro (VFP) est un outil très puissant commercialisé par Microsoft depuis 1995. Il comprend un langage de programmation, un moteur de base de données relationnelles et un...
Télécharger Visual Basic 6 Runtime (VB6 DLL) VoirLe Runtime Visual Basic 6 contient l'ensemble des librairies (DLL) nécessaires pour exécuter des programmes écrits en langage Visual Basic 6.0. Il contient notamment les DLL suivantes :...
Télécharger Codec Pack All-In-One VoirCodec Pack All-In-One est une collection de codecs permettant de lire des films au format DivX et formats similaires (DivX, XviD, AC3, etc.) Codec Pack All in 1 6.0.3.0 contient : DivX 6.1.1 XviD Codec 1.1 DivX, XviD - FFDShow...

1

michelatoutfox, le 25 jan 2005 à 16:31:50

Bonjour Samy,

Pour ajouter un enregistrement dans une table utilisée par plusieurs postes de travail, il y a de nombreuses méthodes (comme d'habitude avec VFP).

Je te propose de poster ici le bout de code par lequel tu ajoutes un enregistrement actuellement (en monoposte), et on fera les vérifications dessus, et les modifs pour que ça tourne sans problème en réseau (précise si tous les postes sont en réseau local, ou bien s'il y a des postes distants)

Globalement, il faut bien sur ouvrir les tables en shared, bien choisir son buffermode, la façon dont on va verrouiller les fichiers pour la mise à jour, et bien utiliser le tableupdate.

Dès que tu auras donné plus d'infos sur ton code actuel, on voit tout ça en détail.

Si ton appli devient lente en réseau, vérifie en premier la qualité de ton réseau physique (cartes, switches, etc...) et surtout, surtout, sois certain que ton antivirus ne scanne pas les dossiers où sont tous tes fichiers de données.

Répondre à michelatoutfox

2

samy_de_mada, le 26 jan 2005 à 08:14:05

Bonjour Monsieur Michelatoutfox,
Je vous remercie pour la réponse.
Voici ce que je fais en monoposte :
***************************
Exemple, j'ajoute 1 enregistrement à la table REF_PERS
Dans la procédure Load du formulaire, j'indexe la table sur le champ PERS_MATR
Sele REF_PERS
Index on PERS_MATR to REF_PERS1
Dans la procédure Click du bouton Enregistrer, je fais
Sele REF_PERS
Seek w_matr (w_matr étant le variable où j'affecte le matricule et w_noma le variable du nom de la personne)
If .not. found()
Append blank
Repla PERS_MATR with w_matr, PERS_NOMA with w_noma
Else
Repla PERS_NOMA with w_noma
Endif
****************
NB : - Je ne sais pas comment utiliser ces buffermode, tableupdate, .... si vous pouvez m'aider la-dessus !!!
- Tous les postes sont en réseau local
Je réitère ici mes sincères remerciements
Samy

Répondre à samy_de_mada

41

roi_yassin, le 2 oct 2008 à 07:34:58

C'est moi yassin
j'ai besoin mon ami de ton experience:
j'ai le programme suivant :
select 99
go top
messagebox ("L'exportation du fichier sur le Bureau est Déconseiller",0+64,"Confirmation avant l'exportation")
chemin1=getdir()
set defa to &chemin1
if chemin1<>space(10)
copy to besoin type xl5
endif
set defa to &chemin
problème
j'au une table et je vais la divisé en plusieur pour l'enregistre sur un fichier excel sur plusieur feuillets, le problème c'est comment je spécifier sur cette commande copy to besoin type xl5 la feuille xls

Répondre à roi_yassin

42

michelatoutfox, le 2 oct 2008 à 10:21:17

Bonjour,

regarde donc sur AtoutFox, il y a une étude complète par Mike Gagnon sur ce sujet (http://www.atoutfox.org/articles.asp?ACTION=FCONSULTER&ID=0000000073)

Répondre à michelatoutfox

3

michelatoutfox, le 26 jan 2005 à 10:22:15

Bonjour Samy,

Si tu le veux bien, on va commencer par le début !

en premier, ta table ref_pers : il ne me semble pas logique de recréer l'index à chaque fois que tu fais un load du formulaire.
il serait préférable de créer un index structurel, qui serait automatiquement ouvert en même temps que ta table, et surtout, mis à jour automatiquement. Parceque là, comme tu le fais, ton index est faux! Et c'est long, une indexation sur un idx en réseau!

en fenêtre de commande:

use ref_pers exclusive in 0
sele ref_pers
modif struct


et tu ajoutes un index sur le champ pers_matr (tu cliques sur la flèche index dans l'onglet champ, puis tu vas dans l'onglet index et tu choisi le type d'index - régulier ou candidat ou primaire)

Du coup, tu n'as plus besoin d'indexer dans ton load (je suppose que ta table est ouverte dans l'environnement de données du formulaire).

Ensuite, dans ton click, au lieu de faire seek w_matr, puis if not found( ), etc... je te propose
if indexseek ;
        (w_matr , .F. , "ref_pers" , "pers_matr")

        update ("ref_pers") ;
             set pers_noma=w_noma ;
             where pers_matr = w_matr

else

        insert into ("ref_pers") ;
            (pers_matr, pers_noma) ;
            values ;
            (w_matr, w_noma) 

endif


ou bien
if indexseek ;
(w_matr , .T. , "ref_pers" , "pers_matr")
replace ;
pers_noma with w_noma
else
insert into ("ref_pers") ;
(pers_matr, pers_noma) ;
values ;
(w_matr, w_noma) 
endif


On peut maintenant s'occuper des buffermode et tableupdate, mais il serait bien que tu lises l'aide en premier.

En mode création du formulaire, sur les propriétés, tu vas sur l'onglet données, et là, tu choisis un buffermode optimiste (tu étudieras la différence entre le pessimiste et l'optimiste).
Quand tu as un buffermode, la table (ou l'enregistrement) est verrouillée par le poste qui demande un insert, un replace, et les modifs ne sont réellement écrites que quand tu fais un tableupdate.

C'est le minimum nécessaire pour travailler en réseau...

je te conseille de fréquenter régulièrement le forum technique en français consacré exclusivement à foxpro : news://news.microsoft.com/microsoft.public.fr.fox (en mode news - outlook express, par exemple)
http://www.microsoft.com/france/vfoxpro/newsgroup/default.asp en mode web

et le site de l'association http://www.atoutfox.org

Michel

Répondre à michelatoutfox

4

Samy_mada, le 26 jan 2005 à 12:37:15

Bonsoir Michel,
Je vous Re-re-re-re-mercies beaucoup pour ce dépannage.
Je vais m'y atteler et suivre vos conseils.
Le problème pour l'index structurel, c'est que supposons cette table ref_pers, est-il possible de l'indexer sur plusieurs champs?
Exemple, cette table sera utilisée dans divers formulaires dont les index sont différents, dans le formulaire x_001 (ce n'est qu'un exemple) le fichier devrait être indexé sur pers_matr, et sur le formulaire x_002 sur pers_dnai (date de naissance).
La question est la suivante :
La table ref_pers, comment devrait-on l'indexer? et comment choisir ces fichiers index lors de l'ouverture de la table.
Merci d'avance.
Samy

Répondre à Samy_mada

10

roi_yassin, le 23 aoû 2008 à 16:35:32

Salut
je suis débutant dans la programmation en vfp6.0, j'ai crée pas mal d'applications mais mon probléme c'est comment crée un executable, pour l'instant j'utilise le langage vfp6.0 pour executé mes applications.
stp la façon de faire un fichier executable ugrent.......

Répondre à roi_yassin

11

michelatoutfox, le 23 aoû 2008 à 18:52:47

Bonjour,

pour créer un exécutable, il faut que tu aies un "projet". Un projet VFP est un ensemble qui référence tous les fichiers qui seront compilés (les forms, classes, reports, codes, etc...).

Si tu as déjà un projet, il te suffit de "Générer" ton exécutable en cliquant sur le bouton Générer du gestionnaire de projet, ou bien en cliquant sur le menu Projet->Générer. Une fenetre te donne alors le choix du type de génération, il suffit de choisir "Exécutable Win32"

Si tu n'as pas encore de projet (tout ton code et tes forms, classes, reports, et autres sont simplement dans des dossiers), il te faut en créer un: tu cliques sur le menu Fichier->Nouveau->Projet, et une fois que tu as créé ce projet vide, tu vas ajouter tous ses composants pour chaque onglet.

Si tu veux retrouver d'autres développeurs VFP francophones, nous avons créé une association http://www.atoutfox.org sur laquelle tu trouveras de nombreux exemples.
Il y a aussi un newsgroup technique (en français) news://news.microsoft.com/microsoft.public.fr.fox que tu peux aussi avoir en mode web sur http://www.microsoft.com/...

A bientot!

Répondre à michelatoutfox

12

roi_yassin, le 23 aoû 2008 à 22:10:35

Merci je vais éssaié

Répondre à roi_yassin

13

roi_yassin, le 23 aoû 2008 à 22:28:28

J'ai éssaié mais j'ai pas trouvé l'option "Exécutable Win32" sur le menu Projet->Générer, ce que j'ai trouvé c'est: "Généré executable" toujour sans résultat pourquoi à ton avis?????????????????????

Répondre à roi_yassin

14

michelatoutfox, le 24 aoû 2008 à 13:14:48

Yassin,

"Générer Executable" est la bonne option.

Quand tu dis que tu n'as pas de résultat, que veux-tu dire? tu as une erreur pendant la génération, tu n'as pas de fichier exe généré?
Dans les Options de génération (là où tu choisis le type de compilation - APP, Exe,...), tu vas cocher les cases Recompiler tous les fichiers, et Afficher les erreurs..

Refais une génération, et tu sauras s'il y a des erreurs.

Répondre à michelatoutfox

15

roi_yassin, le 24 aoû 2008 à 21:38:31

Le fichier executable à été crée mais quand j'execute et je clique sur ce fichier la fenetre principale de l'application se montre mais elle se referme tout de suite c'est ça le problème???????????
N.B: si j'execute le fichier executable depuis le langage vpf6.0 ça marche tres bien, alors que mon but c'est l'execution sans l'aide de vfp6.0.
vraiment il me dérange ce problème aide moi stp?

Répondre à roi_yassin

16

michelatoutfox, le 25 aoû 2008 à 10:11:22

Ah, là, Yassin, c'est que ton programme n'est pas correctement écrit!

Il y a en effet quelques précautions à prendre pour que ton executable fonctionne correctement:

Tu dois avoir un prg de lancement avant ton premier form, qui contient les settings nécessaires (les SET DEFAULT, SET PATH, etc...), et surtout, surtout, qui appelle le premier form par DO FORM <ici_le_nom_de_ton_form>

Et juste en dessous de cette ligne d'appel du form, tu dois avoir READ EVENTS.

Je te conseille de lire l'aide de VFP6 sur ce sujet...

Répondre à michelatoutfox

17

roi_yassin, le 25 aoû 2008 à 23:06:59

Ok merci je vais éssaié de crée ce programme.
mais est ce que je peux enregistrer ce programme par n'importe quel nom?

Répondre à roi_yassin

18

michelatoutfox, le 26 aoû 2008 à 11:19:46

Ah oui, tu peux appeler ce prg de lancement comme tu le veux; en général, on le nomme "principal.prg", ou bien "main.prg", mais ce n'est qu'une habitude.

Par contre (j'ai oublié de le préciser), et c'est super-important, il faut indiquer que ce prg est le programme de démarrage de l'exécutable:
Dans ton projet, tu vas faire un click droit sur le nom de ce prog, puis tu vas cliquer sur "Fixer l'origine". Tu verras que le nom de ce prg passe alors en gras.

Répondre à michelatoutfox

19

roi_yassin, le 26 aoû 2008 à 18:22:13

Oui merci c'est fait et le fichier à executé, mais une autre fenetre vide est ouvert pourquoi et comment empéché cette fenetre de s'ouvrir?

Répondre à roi_yassin

20

michelatoutfox, le 26 aoû 2008 à 21:06:01

Eh bien regarde l'aide sur l'utilisation du config.fpw, et vérifie aussi comment tu as paramétré tes forms pour la propriété ShowWindow:
as-tu un form de premier niveau (dont le ShowWindow est à 2) dans lequel s'exécutent tous les autres (dont le ShowWindow sera à 1)? ou bien as-tu tout laissé à 0?

Répondre à michelatoutfox

21

roi_yassin, le 26 aoû 2008 à 22:33:16

J'ai un form "Fenetre" c'est le form principale de premier niveau (dont le ShowWindow est à 2) dans lequel s'exécutent tous les autres (dont le ShowWindow est à 1).
j'ai réglé le probléme j'ai crée dans le dossier du fichier executable le fichier config.fpw en utilisant juste la commande "screen=off" merci mon ami pour tes infos. autre problème svp :
le format que j'utilise pour les champ numurique est "999,999,999.99" pour avoir par exp : 1 251 325,25 (format français) alors q'il affiche "1,251,325.25" (j'ai coché la case à coché "utiliser les paramétres du system" dans le menu outil--->option-->regionales)---------ce problème est uniquement dans le fichier executable et non quan j'execute avec le vfp------
et merci d'avance........................

Répondre à roi_yassin

22

michelatoutfox, le 27 aoû 2008 à 10:33:20

Content que tu aies réglé le problème de fenètre!

Pour tes champs numériques, tu veux parler de l'affichage dans un browse, ou bien dans un textbox?

Pour les textbox, il te faut jouer à la fois sur les propriétés Format et InputMask. Par exemple, format sera à R, et InputMask à 999,999,999.99

Mais si ton problème est une différence entre l'affichage depuis le mode de développement et l'affichage depuis l'exécutable, alors c'est une question de SET.

Quand tu coches un choix dans les options, en fait, ça revient à définir un SET... (par exemple utiliser les paramètres du système, ça fait un SET SYSFORMAT ON).
Et ces SETtings ne sont pas automatiquement transmis à ton exe, tu dois les définir dans ton "principal.prg". Et si tu utilises des sessions de données privées, tu dois même les redéfinir pour chaque session de données.

Répondre à michelatoutfox

23

roi_yassin, le 27 aoû 2008 à 13:45:30

Merci c'esr réglé j'ai ajouté SET SYSFORMAT ON dans le 1er form de monaplication "Init" et ça marche tres bien une autre fois merci.
autre problème svp:
j'ai crée l'executable et j'ai utilisé l'assistance d'instalation pour crée les disquette d'instalation de mon application ça marche tres bien mais :
1°/ je veux si c'est possible que pendant l'instatation de l'application à l'aide des disquettes d'instalation de crée un racourssi dans le bureau et le menu de démarrage;
2°/ je veux si c'est possible ajoute un icone fichier executable ou minmum au racourssi.
vraiment je ne sais pas comment faire sans toi merci une autre fois.

Répondre à roi_yassin

24

michelatoutfox, le 27 aoû 2008 à 16:26:50

Bon, on y arrive!

pour que ton exe ait une icone, il faut la choisir au niveau du projet:
dans VFP, quand ton projet est ouvert, ou bien tu choisis le menu "Projet->Informations", ou bien tu cliques droit sur la partie basse du gestionnaire de projet (là où tu vois Chemin, et Description).
Tu obtiens alors la fenêtre d'Informations, et là, tu coches la case Attacher l'icone, et tu choisis l'icone... et c'est tout!
Les infos de numéro de version, et de copyright se saisissent ailleurs, dans la fentere "Version" que tu obtiens en cliquant sur le bouton Version depuis les options de génération.

Pour le raccourci sur le bureau et le menu de démarrage, je ne me souviens plus exactement (je n'ai plus VFP6 sur cette machine, et VFP9 utilise InstallShield à la place du AcmSetup de VFP6)
De mémoire, et en relisant l'aide, tu as une option à cocher à l'étape 5.
quand je regarde mes vieux répertoires de distrib, je retrouve un fichier wzsetup.ini, qui contient une ligne DestinationDirectory et une autre ProgManGroup. Ces 2 lignes sont renseignées par l'assistant installation, mais tu peux les modifier à la main dans le fichier ini.

Tu peux aussi utiliser InnoSetup pour faire tes install, c'est gratuit

Répondre à michelatoutfox

25

roi_yassin, le 27 aoû 2008 à 22:16:01

Pour l'icone j'ai tout fais comme tu la dis mais l'icone de l'executable n'est pas changé il est toujour de celui de vfp??????????
pour innosetup je vais essaié de le téléchargé merci .

Répondre à roi_yassin

26

michelatoutfox, le 28 aoû 2008 à 01:12:26

Même en re-générant l'exe, ton icone ne change pas? alors essaie avec une autre icone: de mémoire là aussi, je me souviens de problème si elle ne font pas 16x16, ou 32x32... je vais essayer de regarder ça la semaine prochaine (je ne serai plus disponible d'ici là)

Répondre à michelatoutfox

27

roi_yassin, le 28 aoû 2008 à 08:00:19

Ok merci c'est gentil de ta part à la semaine prochaine

Répondre à roi_yassin

28

roi_yassin, le 31 aoû 2008 à 16:52:11

Salut ami
S.O.S
voila mon ami je veux faire une chose et je ne sais pas si c'est possible dans vfp6.0 :
- dans le fichier .prg de démarage je veux introduire la commande IF FILE("CONFIG.FPW")=.t. pour testé la présence du fichier ok
- probléme c'est comment crée ce fichier en cas si le fichier est manque????
NB : mon but c'est de crée juste le fichier executable seul sans les autres fichier comme les dbf, cdx ...ect et le fichier de configuration, pour les tables c'est bon mais pour le fichier de configuration c'est mon problème et merci d'avance.
- n'oublie pas comment crée les racourssis sur le bureau et le menu de démarage

Répondre à roi_yassin

29

michelatoutfox, le 3 sep 2008 à 10:51:44

Yassin,

un fichier fpw, c'est un simple fichier texte, donc le plus simple est de le créer avec un STRTOFILE.

Pour les raccourcis et les liens dans le menu de démarrage, tu trouveras tout ce qu'il te faut sur le site AtoutFox (http://www.atoutfox.org), dans les contributions, rubrique 09 Automation, sous-Rubrique Windows Scripting.

Répondre à michelatoutfox

30

roi_yassin, le 6 sep 2008 à 22:38:22

Merci
pour strtofile ça marche tres bien.
un autre cas svp
je veux crée un form de sauvegarde et de recuperation des données des tables, un seul probleme c'est :
quand je clique sur le bouton sauvegarde je veux qu'il me demande de parcourir l'emplacement pour sauvegarder mes fichiers, bien sur la meme chose pour le bouton récupéré.

Répondre à roi_yassin

31

michelatoutfox, le 7 sep 2008 à 11:07:44

Regarde l'aide sur GETDIR et ADIR, et aussi sur PUTFILE GETFILE, LOCFILE.

Répondre à michelatoutfox

32

roi_yassin, le 8 sep 2008 à 10:04:58

Bonjour
merci mon ami ça marche tres bien par la commande GETDIR() et se sera manifique si l'option de crée un dossier est integré sur cette commande

Répondre à roi_yassin

33

michelatoutfox, le 8 sep 2008 à 11:57:35

L'option de création de dossier dans GETDIR n'existe qu'à partir de VFP7 !

Si vraiment tu veux que les utilisateurs puissent créer un dossier, alors tu dois créer un form avec l'affichage des dossiers, et un bouton pour leur donner la possibilité d'en créer un.

Je ne t'aiderai pas là-dessus, parce que tu trouveras toutes les informations dans l'aide si tu cherches un peu plus que ce que tu fais jusqu'à maintenant...

Répondre à michelatoutfox

34

roi_yassin, le 8 sep 2008 à 17:23:29

Ok merci mon ami pour tes conseilles.

Répondre à roi_yassin

35

roi_yassin, le 9 sep 2008 à 09:14:23

Salut mon ami
stp aide mois de resoudre cet enigme???????
la procedure :
.
.
.
.
CASE rcodgrd97 = 5
DO case
CASE a_grd97< 2
relon97 = 1
CASE a_grd97>=2 .or. a_eng97>=6
relon97 = 2
CASE a_grd97>=4 .or. a_eng97>=8
relon97 = 3
CASE a_grd97>=6 .or. a_eng97>=10
relon97 = 4
CASE a_grd97>=8 .or. a_eng97>=12
relon97 = 5
CASE a_grd97>=10 .or. (a_grd97>=4 .and. a_eng97>=16)
relon97 = 6
ENDCASE
*---------------------------
et voila mes données
rcodgrd97 = 5
a_grd97=3
a_off97=8
donc............................> relon97 = 3
mais il me donne ....................................>relon97 = 2
c'est quoi le problème?????????????????????????

Répondre à roi_yassin

36

michelatoutfox, le 9 sep 2008 à 10:30:11

Mais il n'y a pas de problème, Yassin, ta structure CASE te renvoie le résultat attendu:
une structure CASE teste chaque CASE en commençant par le premier, et dès qu'elle trouve un CASE qui renvoie .T., elle exécute ce que contient le CASE et elle sort de la structure sans tester les autres!

Donc ici, CASE a_grd97>=2 .or. a_eng97>=6 est vrai: a_grd97 est plus grand que 2, la clause du OR ne sera même pas testée. La structure traite relon97 = 2 et passe au ENDCASE.

Répondre à michelatoutfox

37

roi_yassin, le 12 sep 2008 à 02:23:05

Salut
à quoit sert les classes exacte???

Répondre à roi_yassin

38

michelatoutfox, le 12 sep 2008 à 09:21:30

A quoi servent les classes? il y a tout un chapitre là-dessus dans l'aide de VFP6...

Répondre à michelatoutfox

39

roi_yassin, le 18 sep 2008 à 23:45:11

Salut
j'ai un problème :
j'ai essaie de crée un programme pour regroupé tout mes procedures des forms à l'aide de la commande procedure.... et endproc, et do (nom procedure) in (nom programme) tout est bien mais un message d'erreur est afficher quand il arrive de lire une procedure comporte thisform.num.value=0 par exemple, le message d'erreur est :
"THISFORM peut etre utilisé uniquement dans une méthode"
alors comment je peux evité ce message d'erreur pour atteindre mon but?
et merci d'avanceeeeeeeeeeeeeeeeeeeeeeeeee

Répondre à roi_yassin

40

michelatoutfox, le 19 sep 2008 à 08:41:21

Bonjour Yassin,

la réponse est simple: tu ne peux pas! il est impossible d'utiliser THISFORM dans une procedure, c'est un mot-clé qui ne peut être employé que dans une méthode de form ou de controle qui sera déposé sur un form.

Pour résoudre ton problème, il te faut abandonner l'usage du fichier de procedures:
si tu veux avoir toutes tes "procedures" regroupées au même endroit, tu vas créer un objet basé sur la classe Custom (cette classe est manipulable dans l'interface de développement, mais ne se voit pas à l'exécution), et tu vas créer des méthodes qui vont chacune contenir le code de tes procedures actuelles.
Il suffira de déposer cet objet custom sur un form pour que toutes ses métodes soient disponibles par Thisform.MonCustom.Maméthode...

Mais à mon avis, il vaut mieux séparer tout ça, et avoir un custom qui regroupe les méthodes qui sont utiles partout, et le reste réparti entre différents custom.

Et mieux encore, c'est d'avoir un classe de base pour tous les forms, dans laquelle tu auras créé les méthodes communes, et des dérivations surchargées en fonction de tes besoins. Mais on verra ça plus tard!

Répondre à michelatoutfox

43

roi_yassin, le 2 oct 2008 à 11:17:16

Merci
autre problème
je veux ajouter, supprimer et modifier des champ sur une table
select 90
alter table temp4 drop lot1
alter table temp4 drop lot
alter table temp4 drop tva
alter table temp4 drop sem
alter table temp4 drop annee
for i=1 to nb
champ="p"+allt(str(i))
champ1="u"+allt(str(i))
champ2="q"+allt(str(i))
champ3=vunite(i,1)
alter table temp4 rename &champ2 to &champ3
alter table temp4 drop &champ
alter table temp4 drop &champ1
endfor
pour ajouter et supprimer ça marche tres bien mais pour modifier le nom du champ alors la?????????????
la commande
alter table temp4 rename &champ2 to &champ3
me donne un message d'erreur

Répondre à roi_yassin

44

michelatoutfox, le 2 oct 2008 à 15:57:12

Yassin,

la syntaxe correcte est ALTER TABLE MaTable RENAME COLUMN NomChamp4 TO NomChamp5
(il suffisait de lire l'aide!)

Essaie d'éviter cet horrible Select 90. Quand tu ouvres une table, prends l'habitude de le faire avec la syntaxe:
USE matable IN 0 ALIAS monalias...
Comme ça, VFP attribue automatiquement la première zone de travail disponible, et tu ne t'en occupes plus. Tu as simplement à faire un SELECT monalias . c'est plus simple à s'en souvenir, et on risque moins d'erreurs.

Répondre à michelatoutfox

45

roi_yassin, le 2 oct 2008 à 22:55:40

Meme si
ça na pas marché, toujours il me donne le message d'erreur "ERREUR DE SYNTAXE", j'ai déja consulté l'aide pour savoir la commande alter table ma table rename column champs1 to champ2 mé ce message d'erreur me géne

Répondre à roi_yassin

46

michelatoutfox, le 3 oct 2008 à 11:25:44

Alors c'est que le nom de tes champs n'est pas correct.
Pose un point d'arret au débogueur sur cette ligne, et vérifie la valeur de tes variables champ2 et champ3.

Et c'est quoi, ce nb dans ta boucle for/endfor ? et pourquoi ton alter table est-il dans la boucle? qu'est-ce que tu veux faire exactement, quel est ton objectif?

Répondre à michelatoutfox

47

roi_yassin, le 4 oct 2008 à 08:14:02

Ah oui &champ3 contient ° exemple 1°choix
merci lai enlevé ° pour le rendre choix1 et ça marche tres bien merci.
nb c'est le nombre des choix pour mon application et avant cette procedure j'au créé une table avec des champs variable en fonction de nb.
merci pour ton aide

Répondre à roi_yassin

48

roi_yassin, le 21 oct 2008 à 21:45:20

Salut
j'ai télécharger vfp9.0 mais je trouve pas l'option OUTIL ASSISTANCE INSTALATION pour crée des disquettes d'instalation?????????????
je peux avoit ton aide a ce sujet?

Répondre à roi_yassin

49

michelatoutfox, le 22 oct 2008 à 18:08:18

Bonjour,

il n'y a plus d'assistant installation... VFP9 est livré avec une version d'InstallShield, qui est conforme aux normes actuelles.

Mais tu peux aussi utiliser d'autres installateurs, comme InnoSetup (gratuit, http://www.jrsoftware.org/isinfo.php)

Répondre à michelatoutfox

50

roi_yassin, le 22 oct 2008 à 19:00:52

Merci pour ton aide
si c'est possible d'InstallShield pour vfp9.0 mais en français svp...........

Répondre à roi_yassin

51

michelatoutfox, le 22 oct 2008 à 20:52:46

Dans l'aide de VFP9, tu as toute l'explication nécessaire dans Samples and Walkthroughs, -> Walkthroughs -> Walkthrough:Creating a VisualFoxPro Application Setup using InstallShield.

Tu ne comprends pas du tout l'anglais? Je viens de faire un essai de traduction en utilisant Google, le résultat est très correct. Donc tu vas commencer comme ça, et tu poseras des questions précises si tu as des problèmes.

Répondre à michelatoutfox

52

roi_yassin, le 23 oct 2008 à 06:58:19
  • +1

Ok merci mais l'aide de vfp9 lui aussi en anglais vous n'avez pas la version en français comme vfp6.0

Répondre à roi_yassin

53

roi_yassin, le 24 oct 2008 à 08:51:48

Tu as une idée comment crée des diagrammes dans vfp9.0 sur les états et les formulaires?

Répondre à roi_yassin

54

michelatoutfox, le 26 oct 2008 à 18:27:47
Répondre à michelatoutfox

55

roi_yassin, le 3 nov 2008 à 07:16:02

Salut j'ai un problème exceptionnelle voir cette procédure init:
close data all
set century on
set exact on
set talk off
set escape off
set date to french
set sysformats on
select 2
use article order tag cle of article.cdx
count to nb1
if nb1<>0
dimension varticle(nb1,1)
copy to array varticle fields article
else
dimension varticle(1,1)
endif
*----------
donnée : la table article contient 15 articles
problème : des fois la liste déroulante marche très bien, et des fois je vois qu’un article ou deux manque dans la liste déroulante, je quitte le formulaire et je l'exécute une autre fois j'obtient tout les 15 articles
nb: mon formulaire contient uniquement cette procédure.

Répondre à roi_yassin

56

michelatoutfox, le 6 nov 2008 à 16:29:42

Procedure init de quel objet???? quelle liste déroulante???? avec quel rowsource???

Comment veux-tu que je devine toutça! si tu veux que je t'aides, fais au moins l'effort d'être précis dans tes questions.

Et encore une fois, Select 2 suivi d'un use ..., ça n'est pas correct, il ne faut pas écrire comme ça. Regarde dans l'aide de VFP6 comment il faut écrire (la syntaxe de SELECT et de USE n'a pas changé), et ensuite on pourra continuer.

A quoi te sert ce tableau varticle? pourquoi fais-tu un count to... cette syntaxe est elle aussi dépassée, à ne plus utiliser.

Répondre à michelatoutfox

57

roi_yassin, le 7 nov 2008 à 07:22:49

Bonjour
procedure init de mon formulaire, j'ai crée une liste déroulante à l'aide de la zone de liste modifiable et j'ai précisé sur ASSISTANCE CONTROLE "ARRAY NAME" varticle.
mon but c'est de mettre tout les enregistrement de la table ARTICLE sur une liste déroulante c'est tout.
j'ai fait un COUNT pour vérifier que la table n'est pas vide car si elle vide le vecteur varticle ne sera crée il me donne un MESSAGE D'ERREUR dans ma procedure " SI COUNT=0 varticle=dimension(1,1)" et je vais par la suite ajouter un MESSAGEBOX informant que la table article est vide qui doit etre à jour avant de continu.
mon problème c'est que cette liste déroulante contient tout les enregistrements de la table article c'est en fonction de COUNT mais par fois je constate que la liste déroulante manque un enregistrement ou deux, ce qui ma éttonée et quand je quit ce formulaire et je l'execute encore la liste marche tres bien????????????????!!!!!!!!!!!!!!!!!!!!!!!

Répondre à roi_yassin

58

roi_yassin, le 17 nov 2008 à 05:21:00

Salut
j'ai utilisé InstallShield 2009 pour faire un cd d'instalation de mon application sur vfp9.0 mais quand j'instal mon cd, un message d'erreur reclame que les bibiotèque dll de vfp9.0 non trouver.
svp comment integder les fichier dll necessaire pour instalé ce cdrom et ou se trouve ces fichiers?????????????? urgent

Répondre à roi_yassin

59

roi_yassin, le 28 nov 2008 à 06:18:27

Salut
Suite à tes conseilles d'utilisé InstallShield Express 5.0 for Visual FoxPro pour crée des cd d'installation, j'ai trouvé ce logiciel limité et j'ai besoin d'une solution svp et urgent.
J’ai téléchargé InstallShield 2009 et j'ai essaie de crée un cd d'installation ça marche bien mais un message d'erreur me dis que la bibliothèque de vfp9.0 n'est pas trouvé. C’est un autre problème que je n’arrive pas à le résoudre. Ou se trouve ces fichier dll et comment l'intégré à InstallShield 2009.
svp c'est urgent...............................................

Répondre à roi_yassin

60

michelatoutfox, le 28 nov 2008 à 11:49:28

Si tu avais un peu cherché dans l'aide, tu aurais trouvé la réponse dans le chapitre "Application Distribution Process"

Répondre à michelatoutfox

61

roi_yassin, le 29 nov 2008 à 14:58:44

Si tu avais un peu cherché dans l'aide, tu aurais trouvé la réponse dans le chapitre "Application Distribution Process"
merci mon ami probléme réglé :
J’ai trouvé la solution à l’aide de Mr michelatoutfox et à l’aide de l’aide de vfp9.0
Les bibliothèques sont deux fichiers à copies dans le dossier qui contient le fichier exe
Le fichier .Exe fonctionne avec Visual FoxPro de liens dynamiques (. Dll), les bibliothèques, les VFPVersionNumberR.dll et VFPVersionNumberRENU.dll, dont vous avez besoin pour distribuer avec votre application pour offrir une vision complète de Visual FoxPro environnement d'exécution pour votre application. Numéro_version représente le numéro de version de Visual FoxPro que vous utilisez pour créer le fichier. Exe. Ces fichiers sont situés dans le .. \ Program Files \ Fichiers communs \ Microsoft Shared \ VFP répertoire.
*/-----------------------
mon problème c'est la langue anglaise mon ami c'est tout, alors je cherche quel qu'un qui peut m'aidé et de me guider dans l'aide de vfp9.0.
en tout cas merci mon ami vraiment c'est trés gentille de ta part.

Répondre à roi_yassin

62

roi_yassin, le 30 déc 2008 à 22:26:04

Salut
j'ai besoin de savoir comment configurer vfp (par quelle commande) pour que mon application utilise la langue arabe de mon clavier.
but : saisir des données et enregistrer sur la table en arabe, comment configurer l'application pour que la langue du clavier utilisé par défaut est la langue arabe.

Répondre à roi_yassin

63

roi_yassin, le 6 jan 2009 à 17:55:22

Salut
j'ai besoin de savoir comment configurer vfp (par quelle commande) pour que mon application utilise la langue arabe de mon clavier.
but : saisir des données et enregistrer sur la table en arabe, comment configurer l'application pour que la langue du clavier utilisé par défaut est la langue arabe

Répondre à roi_yassin

65

 Nordine, le 2 nov 2009 à 13:56:47

Bonjour !
Pour avoir la langue arabe par defaut, on fais l'appel à une librairie c++.

Répondre à Nordine

64

roi_yassin, le 31 jan 2009 à 07:28:49

Salut
pour lançé l'apérçu d'un état et vers l'imprimante on fait comme ça :
Select 1
Go Top
Report Form compt Preview
Report Form compt Noconsol To Print Prompt

*--------------
question
pour lançé l'apérçu d'une étiquette et vers l'imprimante on fait comment???????????

Répondre à roi_yassin

5

michelatoutfox, le 26 jan 2005 à 15:55:26

Bonjour Samy,

Le gros avantage d'un index structurel, c'est qu'il contient plusieurs clé d'index (les tag).

Tu les crées soit avec un modif struc (qui ouvre le générateur de table), soit par la commande INDEX ON Expression TAG nom_de_repère

Tu crées les tag qui te sont nécessaires, avec les expression qui te vont bien. Et quand tu en as besoin, SET ORDER TO nom_de_repère, ou set key to... , ou indexseek...

Si tu veux qu'on regarde tes index nécessaires, fais passer la structure de ta table.

Autre chose, pour l'accès en réseau, le plus simple est d'ouvrir les tables dans l'environnement de données des formulaires, et d'utiliser un unvironnement de données privé pour chaque formulaire (propriété DataSession du Formulaire mise à 2).

Michel
PS: bienvenue dans l'assoc!

Répondre à michelatoutfox

6

Samy, le 27 jan 2005 à 06:51:49

Bonjour Michel,
Toujours un grand merci pour ton aide, je commence à te tutoier ...
Le plus simple, c'est que je te fais une petite application (tables, formulaires, états, menus, programme, procédures) à ma façon et je te le passe pour lundi. Le seul problème pour cela, c'est comment te faire passer l'application?
C'est à partir de là que tu me corriges sur mes faiblesses pour que je puisse me rattraper et me mettre à votre niveau d'il y a des années car je comprends que j'ai du retard (rien qu'en te lisant), un énorme retard.
Merci.
Samy

Répondre à Samy

7

michelatoutfox, le 27 jan 2005 à 10:47:07

Pas de problème, Samy

pour me faire passer ton projet, tu zippes tout, et tu me l'envoies par mail (mon adresse est visible sur le site de l'assoc).

Michel

Répondre à michelatoutfox

8

Samy, le 27 jan 2005 à 12:42:05

Bien reçu

Répondre à Samy

9

interessevfp, le 29 oct 2007 à 19:47:40

Salut monsieur
je v'en prie de m'aider
svp suis debutant en programmation vfp 6
j'ai cree une vue distante vue1 qui accede a la base de donnees qui se trouve dans le serveur, dans le bouton ENREGISTRER du formulaire j'ai ecrie le code suivant:
select 1
use vue1
locate for id_employer= m.id_employer
if .not.found()
insert into vue1 from memvar
else
update vue1 set nom=m.nom, prenom=m.prenom where id_employer=m.id_employer
endif
= tableupdate(.T.)
thisforme.annuler.valid

** commentaire
vue1: est une vue distante (avec une connexion reussie au serveur)qui accede à une table employer qui se trouve dans la base de donnees "gestion" creee dans le serveur
par le gestionnaire de la base de donnees visual fp6
pour les variable à saisir dans le formulaire j'ai gardé les champs de la table et j'ai leur ajeter le prefix m.(exp: le nom du champ est nom et la variable à saisir est m.nom)
LE PROBLEME qui se pose c'est la vue1 est mise à jour mais la table EMPLOYER qui se trouve dans le serveur n'est pas mise a jour
svp si vous pouvez m'aider la desuus et merci infiniment

Répondre à interessevfp