ATOUTFOX
    COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO

Forum AtoutFox

Le forum AtoutFox

Forum

RSS © www.atoutfox.org - Forum

Re: importer um fichier XML
Bonjour Luis,

tu devrais utiliser les syntaxes 'modernes' de VFP. D'une part cela va
simplifier le code d'autre part il devrait y avoir une amélioration de la
vitesse d'execution.
je te donne un exemple :

[vfp]
LOCAL mbi AS object
*!* Etiquetas
Create Cursor mbicursor(ref c(18), Design c(60), qtt N(10,3), edebito N(10,3), ;
debito N(10,3), desconto N(10,2), desc2 N(10,2) ,desc3 N(10,2),desc4 N(10,2), ;
desc5 N(10,2), desc6 N(10,2), tabiva N(4,2) , ttdeb N(10,3), ettdeb N(10,3), ;
stns L, Lote c(30), usalote L, Lordem N(20,0), partes N(10,2) , cativo L , ;
stipo N(2,0) , armazem N(5,0), lobs c(10), litem c(20), dedata c(10), ;
atedata c(10)) &&
SCATTER BLANK NAME mbi
mbi.ref = m.OROOT.selectNodes("Documento/Linhas/referencia").Item(0).Text
mbi.Design = m.OROOT.selectNodes("Documento/Linhas/descricao").Item(0).Text
mbi.qtt = m.OROOT.selectNodes("Documento/Linhas/quantidade").Item(0).Text
mbi.lobs =
Alltrim(m.OROOT.selectNodes("Documento/Linhas/lineordernumber").Item(0).Text)
.....
For Each ONODE As 'MSXML2.IXMLDOMNode' In M.ONODELIST
....
mbi.qtt = Val(m.qttetiqueta)
....
mbi.dedata =
Dtoc(m.OROOT.selectNodes("Documento/Linhas/Etiquetas/datarequeridainicial").Item(0).Text)
mbi.desconto = 0.00
....
INSERT INTO mbicursor FROM NAME mbi && c'est simple et rapide !!
...
Endfor

[\vfp]

Bon courage !
Jean à Grenoble

--
Cet e-mail a été vérifié par le logiciel antivirus d'AVG.
www.avg.com
Sat, 01 Oct 2022 18:44:15 GMT

Re: importer um fichier XML
Salut!

Je vous remercie por vos explications. :)

Luis


Wed, 28 Sep 2022 18:44:15 GMT

Re: importer um fichier XML
Salut!
le nom de fichier peut être donné directement en paramètre à nfxml (j'ai utilisé text-endtext juste pour rendre l'exemple plus facile)

Vous pouvez oublier les touches {alt+w} {A} Je ne les ai utilisées que pour organiser les fenêtres en invoquant le menu window-> Arrange All


Wed, 28 Sep 2022 18:44:15 GMT

Re: importer um fichier XML
Merci pour votre aide,

J´ai 2 questions a vous faire:

Est il possible charger le fichier XML cherchant le même sur l´ordinateur e placer tout danas TEXT TO....ENDTEXT ?

Vou avez utilizer : keyboard "{alt+w}{a}" , pouvez vous m´expliquer quel action vá faire cette commande ?

Merci,
Luis


Wed, 28 Sep 2022 18:44:15 GMT

Re: importer um fichier XML
Merci por votre reponse,

Comment placer vou dans TEXT TO ... ENDTEXT le fichier XML, je pense que vous n' avez pas copier le même que je vous ai envoyer ?

Si vous avez copier le même, est il possible de le charger em cherchant le fichier sur l´ordinateur ?

Aussi une curiosité , porquoi :

keyboard "{alt+w}{a}"


Merci por votre aide !
Luis


Wed, 28 Sep 2022 18:44:15 GMT

Re: importer um fichier XML
[VFP]
*
* en utilisant nfxml
* https://github.com/vfpx/nfxml
*

create cursor LINHAS ( ;
CODLOCALENTREGA V(3),;
DESCRICAO V(28),;
LINEORDERNUMBER V(7),;
LINHA V(1),;
NUMDOC V(17),;
QUANTIDADE V(3),;
REFERENCIA V(11))

create cursor embalagem ( codembalagem v(10), total v(12))

create cursor etiquetas ( ;
DATAREQUERIDAFINAL V(8),;
DATAREQUERIDAINICIAL V(9),;
QUANTIDADEREQUERIDA V(1),;
TIPOREQUISICAO V(1))


oData = nfXmlRead( getXml() )

insert into linhas from name oxml.vfpdataset.documento.linhas

insert into embalagem from name oxml.vfpdataset.documento.linhas.embalagem

for each oEtiqueta in oxml.vfpdataset.documento.linhas.etiquetas
insert into etiquetas from name m.oEtiqueta
endfor

select linhas
edit normal nowait

select etiquetas
go top
browse normal nowait

select embalagem
edit normal nowait

keyboard "{alt+w}{a}"








function getxml()

local xml

text to xml noshow



1
Z3505505000
CASQUILLO ADP AR NATU EVOL J
302
5061850
GOU
20220722327506185

Z20CAR12
3000


4
3
20220831
20220831


4
0
20220905
20220911


4
3
20220926
20221002


4
3
20221010
20221016


4
0
20221017
20221023


4
3
20221107
20221113




ENDTEXT

return m.xml
[/VFP]


Wed, 28 Sep 2022 18:44:15 GMT

importer um fichier XML
Bonjour,

j´ai developper une routine em VFP por importer um fichier XML dans mon programme, mais mon probleme cést que je n´arrive pas a créer les 6 lignes por inserer sur ma grid de lignes de mon document.
Je vou envoi mon Code e le fichier XML a importer, ainsi comme le document aprés importer avec mon code.

[vfp]
Local Array MyFiles[1,5]

nFilesFound = Adir( MyFiles, "D:\Trabalho_Clientes\Caimaplas\DELFOR\*.xml" )

If Empty(nFilesFound)
MSG("Não existem encomendas a importar")
Return .F.
Else
For i = 1 To nFilesFound

** Criar Dossiers Programaticamente
fecha("mbocursor")
fecha("mbo2cursor")
fecha("mbicursor")

* usar tabelas de dossiers
Do dbfusebi
Do dbfuseboall

* Utilizar a configuração do tipo de dossier nº1
Do tsread With "",1

* criar os cursores mbocursor, mbo2cursor, mbicursor e mbicursor2 vazios
Create Cursor mbocursor (no N(10), estab N(3), memissao c(10),dataobra d(8),dataopen d(8),datafinal d(10),boano N(4),marca c(20),serie c(20),maquina c(20),obrano N(10),obranome c(30),Nome c(60),morada c(60),Local c(60),codpost c(60),ncont c(60))

u_sqlexec([select * from bo2 (nolock) where 1=0],[mbo2cursor])
u_sqlexec([select * from bi (nolock) where 1=0],[mbicursor])


* CLEAN ALL CURSORS
Select mbocursor
Delete For .T.
Select mbo2cursor
Delete For .T.
Select mbicursor
Delete For .T.

**Inicialização de variáveis locais que irão ser utilizadas mais à frente no código
Local SFILE As String, SDATAXML As String, SSEL As String

**M.sfile é a variável que vai guardar o nome do ficheiro XML a importar. Além do nome também guarda o caminho (path) para o ficheiro.
m.SFILE = "D:\Trabalho_Clientes\Caimaplas\DELFOR\"+MyFiles[i,1]

If Empty(M.SFILE)
Return .F.
Else
**Verifica se o ficheiro é do tipo XML
If .Not. ".XML"$Alltrim(Upper(M.SFILE))
MSG("Tipo de ficheiro inválido!")
Return .F.
Else
**A função Type avalia uma expressão do tipo caracter e retorna o tipo de dados da expressão, e para além disso verificamos aqui se o ficheiro existe ou não
If Type("m.sFile")<>"C" .Or. .Not. File(M.SFILE)
MSG("Ficheiro Não Encontrado!")
Return .F.
Endif
Endif
Endif

**A variável M.sdataxml vai conter o resultado da função Filetostr, esta retorna o conteúdo de um ficheiro como sendo uma string, para ser utilizada em xbase.
m.SDATAXML = Filetostr(M.SFILE)

**Inicialização da variável local que irá conter o XML
Local oXMLDocument As MSXML2.DOMDocument

**Inicialização da variável local que irá conter a lista de Transacções
Local ONODELIST As MSXML2.IXMLDOMNodeList

** Criar o objecto e atribui-lhe o XML
m.oXMLDocument = Createobject("msxml2.domdocument.4.0")
m.oXMLDocument.Load(M.SFILE)
m.oXMLDocument.Async = .F.
m.oXMLDocument.VALIDATEONPARSE = .F.
m.oXMLDocument.PreserveWhiteSpace = .F.

** Define a root do XML (nó principal)
m.OROOT = M.oXMLDocument.DOCUMENTELEMENT

** Lê a tag OrderDate
m.obranome = m.OROOT.selectNodes("Documento/numdoc").Item(0).Text
m.datadoc = m.OROOT.selectNodes("Documento/datadoc").Item(0).Text
m.dataentrega = m.OROOT.selectNodes("Documento/dataentrega").Item(0).Text
m.glnfornecedor = m.OROOT.selectNodes("Documento/glnfornecedor").Item(0).Text
m.idtransporte = m.OROOT.selectNodes("Documento/idtransporte").Item(0).Text

*!* LINES OF DOCUMENT
m.ref = m.OROOT.selectNodes("Documento/Linhas/referencia").Item(0).Text
m.design = m.OROOT.selectNodes("Documento/Linhas/descricao").Item(0).Text
m.qtt = m.OROOT.selectNodes("Documento/Linhas/quantidade").Item(0).Text
m.lineordernumber = m.OROOT.selectNodes("Documento/Linhas/lineordernumber").Item(0).Text

m.boano=Year(Date())

** Embalagem
m.embalagem = m.OROOT.selectNodes("Documento/Linhas/Embalagem/codembalagem").Item(0).Text
m.total = m.OROOT.selectNodes("Documento/Linhas/Embalagem/total").Item(0).Text


*!* Etiquetas
Create Cursor mbicursor( ref c(18), Design c(60), qtt N(10,3), edebito N(10,3), debito N(10,3), desconto N(10,2), desc2 N(10,2) , desc3 N(10,2), desc4 N(10,2), desc5 N(10,2), desc6 N(10,2), tabiva N(4,2) , ttdeb N(10,3), ettdeb N(10,3), stns L, Lote c(30), usalote L, Lordem N(20,0), partes N(10,2) , cativo L , stipo N(2,0) , armazem N(5,0), lobs c(10), litem c(20), dedata c(10), atedata c(10)) &&

m.tiporequisicao = m.OROOT.selectNodes("Documento/Linhas/Etiquetas/tiporequisicao").Item(0).Text

** READ LIST OF ETIQUETAS
m.ONODELIST = M.OROOT.selectNodes("Documento/Linhas/Etiquetas")

For Each ONODE As 'MSXML2.IXMLDOMNode' In M.ONODELIST

m.ONODELISTTRA = M.OROOT.selectNodes("Documento/Linhas/Etiquetas")

** Verifica o nome do elemento e lê o seu valor
Do Case
Case Alltrim(ONODE.NODENAME) == "Etiquetas"

m.qttetiqueta = m.OROOT.selectNodes("Documento/Linhas/Etiquetas/quantidaderequerida").Item(0).Text
If Val(m.qttetiqueta) <> 0

m.qttetiqueta = m.OROOT.selectNodes("Documento/Linhas/Etiquetas/quantidaderequerida").Item(0).Text
m.dedata = m.OROOT.selectNodes("Documento/Linhas/Etiquetas/datarequeridainicial").Item(0).Text
m.atedata = m.OROOT.selectNodes("Documento/Linhas/Etiquetas/datarequeridafinal").Item(0).Text

*!* Date conversion
m.dedata = Ctod(Substr(m.dedata,7,2)+'.'+Substr(m.dedata,5,2)+'.'+Substr(m.dedata,1,4))
m.atedata = Ctod(Substr(m.atedata ,7,2)+'.'+Substr(m.atedata ,5,2)+'.'+Substr(m.atedata,1,4))

Endif

** Percorre a lista de OrderItems
Select mbicursor
Append Blank

Replace mbicursor.ref With m.ref
Replace mbicursor.Design With m.design
Replace mbicursor.qtt With Val(m.qttetiqueta)
Replace mbicursor.edebito With 0.00
Replace mbicursor.debito With 0.00 *200.482
Replace mbicursor.ettdeb With 0.00 * Val(m.qtt)
Replace mbicursor.ttdeb With 0.00 * Val(m.qtt) *200.482
Replace mbicursor.stipo With 4
Replace mbicursor.armazem With 1
Replace mbicursor.desconto With 0.00
Replace mbicursor.desc2 With 0.00
Replace mbicursor.desc3 With 0.00
Replace mbicursor.desc4 With 0.00
Replace mbicursor.desc5 With 0.00
Replace mbicursor.desc6 With 0.00
Replace mbicursor.stns With .F.
Replace mbicursor.Lote With ''
Replace mbicursor.usalote With .F.
Replace mbicursor.lobs With Alltrim(m.lineordernumber)
Replace mbicursor.litem With Alltrim(m.embalagem)
Replace mbicursor.Lordem With 0
Replace mbicursor.partes With 0
Replace mbicursor.cativo With .F.

Replace mbicursor.dedata With Dtoc(m.dedata)
Replace mbicursor.atedata With Dtoc(m.atedata)

If Empty(m.ref)
Select mbicursor
Replace mbicursor.tabiva With 2
Endif

*!* fonction interne pour recalculer les totals por lignes
Do u_bottdeb With 'mbicursor'

Endcase
Endfor

m.eancl= m.OROOT.selectNodes("Documento/eancliente").Item(0).Text

TEXT to m.cSel noshow textmerge
select cl.no,nome,morada,local,codpost,pncont,ncont from cl where cl.eancl='<>' and cl.estab=0
ENDTEXT

If u_sqlexec(m.cSel,"cliente")
If Reccount("cliente")>0
Select cliente
m.no=cliente.no
m.nome=cliente.Nome
m.morada=cliente.morada
m.local=cliente.Local
m.codpost=cliente.codpost
m.codpais=cliente.pncont
m.ncont=cliente.ncont
Endif
Endif


TEXT to m.cSel noshow textmerge
select isnull(max(bo.obrano),0) as obrano from bo where bo.ndos=1 and bo.boano=year(getdate())
ENDTEXT

If u_sqlexec(m.cSel,"dossier") And Reccount("dossier")>0
Select dossier
m.obrano=dossier.obrano+1
Endif


** DEFINE DOCUMENT TO IMPORT
m.ndos=1

* preencher alguns campos do cabeçalho (mbocursor)
Select mbocursor
Append Blank
Replace mbocursor.no With m.no
Replace mbocursor.estab With 0
Replace mbocursor.memissao With 'EURO'
Replace mbocursor.dataobra With Ctod(m.datadoc)
Replace mbocursor.dataopen With Ctod(m.datadoc)
Replace mbocursor.datafinal With Ctod(m.datadoc)
Replace mbocursor.boano With m.boano
Replace mbocursor.obrano With m.obrano
Replace mbocursor.obranome With m.obranome
Replace mbocursor.Nome With m.nome
Replace mbocursor.morada With m.morada
Replace mbocursor.Local With m.local
Replace mbocursor.codpost With m.codpost
Replace mbocursor.ncont With m.ncont



**Esta função manda uma mensagem ao utilizador enquanto é executada a importação das encomendas
Do ACTFORM With "Estou a importar a encomenda Nº "+m.obranome+" de "+m.nome

If Not criabobi(1,'mbicursor','mbocursor','mbo2cursor',.F.,.F.,,.F.)
mensagem('Erro a gravar dossier','DIRECTA')
Return
Endif

Set Path To "D:\Trabalho_Clientes\Caimaplas\DELFOR\"
Rename MyFiles[i,1] To "D:\Trabalho_Clientes\Caimaplas\DELFOR\"+MyFiles[i,1]+".lido"

Endfor

DEACTFORM()
MSG("Importação de encomendas terminado com sucesso.")

sbo.Refresh
Endif
[/vfp]

mon Fichier XML:
[vfp]


DELFOR
20220722327506185
2022-07-22
2022-08-31
0944502672994
20449
0931344844998
093134484499800155

1
Z3505505000
CASQUILLO ADP AR NATU EVOL J
302
5061850
GOU
20220722327506185

Z20CAR12
3000


4
3
20220831
20220831


4
0
20220905
20220911


4
3
20220926
20221002


4
3
20221010
20221016


4
0
20221017
20221023


4
3
20221107
20221113






Toutes les lignes ont les mêmes valeurs !?

Merci pour vos aides,
Luis












Wed, 28 Sep 2022 18:44:15 GMT

Re: les boutons disparaissent avec le survol de la souris
Bonjour Alain,

dans l'initialisation de ton application, essaie de mettre ce code :
[VFP]
= SYS(2700,0) && désactive les thèmes
_screen.themes = .F.
[\VFP]

Tiens nous au courant !
Bonne journée
Jean

--
Cet e-mail a été vérifié par le logiciel antivirus d'AVG.
www.avg.com
Thu, 15 Sep 2022 18:44:15 GMT

les boutons disparaissent avec le survol de la souris
les boutons de commande disparaissent quand je passe le pointeur puis reapparaissent un par un quand je reviens dessus. Mon Systeme est windows 10 sur mon ordi fixe (ou ce produit ce dysfonctionnement . Cela se fait avec une application et non avec une seconde. En principe ce n'est pas foxpro qui est responsable. Ceci ne se produit pas sur mon portable équipée de windows 7 Pro


Wed, 14 Sep 2022 18:44:15 GMT

Re: Dysfonctionnement ?
OK, merci bien. J'y vais


Mon, 12 Sep 2022 18:44:15 GMT

Re: Dysfonctionnement ?
Bonjour,

Vos fichiers mémo des formulaires (*.sct) (un formulaire c'est un couple *.scx + *.sct) ont été corrompus et sont donc HS.
Il vous faut:
- récupérer une sauvegarde de vos fichiers sources et la remettre en service
- vérifier et exclure de votre anti-virus tous les dossiers et fichiers utilisés par VFP (ceux de vos sources et ceux de VFP)

Bonne journée
Cordialement
GLS


Sun, 11 Sep 2022 18:44:15 GMT

Dysfonctionnement ?
En plein travail, VFP9 cesse de fonctionner et se ferme.
Je redémarre la machine et relance VFP9.
Après exécution de cette application, tous les formulaires sont inaccessibles pour modification. Et le message est le suivant:
Mémo files C:\program files\repertoireapplication\repertoire des formulaires\nom formulaire.SCT is missing or is invalid.
J'ai pensé a des fichiers système de VFP9 endommagés mais les autres applications testés n'ont pas ce problème.
Que faire SVP
Aide


Sat, 10 Sep 2022 18:44:15 GMT

Re: REPORT avec plusieurs pages
Merci beaucoup, je vois bien le principe mais je ne peux pas faire ça, j'ai des titres à mettre et de polices différentes.
Je vais essayer de repenser différemment mon état.
bonne journée,
cordialement


Wed, 07 Sep 2022 18:44:15 GMT

Re: REPORT avec plusieurs pages
Merci beaucoup de votre aide. Mais je vais donc être bloquée ..
Bonne journée,
Cordialement,


Wed, 07 Sep 2022 18:44:15 GMT

Re: Attention avec la fonction MAX(eExpression1, eExpression2 [,eExpression3 ...]) avec des strings...
haha, Jean
C'est ce que j'ai répondu http://www.atoutfox.org/nntp.asp?ID=0000020000
cdlt,



Tue, 06 Sep 2022 18:44:15 GMT

Re: REPORT avec plusieurs pages
Bonjour,
si les textes à imprimer ne font pas appel à des polices différentes, on peut
créer un fichier intermédiaire contenant des champs memo et donc décomposer le
document en plusieurs lignes de ce fichier. Les memos sont imprimés alors dans
la bande détail.

Si le principe te convient, je peux te donner un exemple ...

Cordialement,
Jean à Grenoble

--
Cet e-mail a été vérifié par le logiciel antivirus d'AVG.
www.avg.com
Tue, 06 Sep 2022 18:44:15 GMT

Re: Attention avec la fonction MAX(eExpression1, eExpression2 [,eExpression3 ...]) avec des strings...
Ah ben voilà qu'on a besoin d'un vieux pour résoudre ce problème qui n'en est
pas un !!!!

la comparaison des chaînes se fait caractère par caractère de gauche à droite
mais selon le code ASCII.
Donc "9" ASCII 57 est après "1" ASCII 49
l'espace a pour code ASCII 32 donc bien avant "0" ASCII 48 ou "1" ASCII 49

de même "A" ASCII 65 sera avant "a" ASCII 97

Pour pas compliquer je vous ai indiqué les codes ASCII en décimal mais
normalement on les indique en hexadécimal ;-)

Je sens que je vais avoir un goody aux prochaines rencontres !!

Jean à Grenoble

--
Cet e-mail a été vérifié par le logiciel antivirus d'AVG.
www.avg.com
Tue, 06 Sep 2022 18:44:15 GMT

Re: Ou trouver les fichiers d'installation de VisualFoxPro9?
Bonsoir Sebouille94,

Microsoft ne distribue plus les boites VFP9 depuis de très très nombreuses années...
(j'avais acheté une 15zaines de boites à la fin, toutes vendues).

Ensuite l'iso était téléchargeable avec un abonnement développeur (MSDN) mais plus le cas je crois (à vérifier).

Si tu as l'ancien PC tu peux copier le répertoire VFP9 sur le nouveau PC, ou lancer le VFP9 sur l'ancien PC dans "à propos" noter le code d'activation et installer sur nouveau pc avec ce code. Ou rechercher la boite vfp9 d'origine achetée (c'est une jaquette format DVD)

enfin pour une licence d'occasion : passé un temps on en voyait sur ebay : je ne sais pas si c'est toujours le cas....

Cordialement




Mon, 05 Sep 2022 18:44:15 GMT

Re: REPORT avec plusieurs pages
Un entête d'état peut effectivement faire qu'une seule page... (comme un pied d'état je crois...)
Quand il y a trop de texte (style CGV ou autre) alors effectuer l'état lui même (report) et joindre un document PDF (?)
Perso je ne vois pas comment faire autrement pour un état... ce n'est pas un "traitement de texte" :S
Cordialement

Le ven. 02 septembre 2022, 08h15 shjl a écrit :
> Bonjour, J'ai un report à faire, mais j'ai tellement d'information à y indiquer que ça ne passe pas sur une page. Et VFP9 me bloque en disant que "Pageheader band is too large to fit on page. Quand il y a un détail avec plusieurs lignes, ça c'est bon, ça passe bien sur plusieurs pages et je sais faire.Là c'est que j'ai beaucoup d'info à marquer. Dites moi si je ne suis pas claire, et merci par avance de votre aide.
>




Mon, 05 Sep 2022 18:44:15 GMT

Re: Ou trouver les fichiers d'installation de VisualFoxPro9?
Personne n'a d'idée??

Sébastien


Mon, 05 Sep 2022 18:44:15 GMT

REPORT avec plusieurs pages
Bonjour, J'ai un report à faire, mais j'ai tellement d'information à y indiquer que ça ne passe pas sur une page. Et VFP9 me bloque en disant que "Pageheader band is too large to fit on page. Quand il y a un détail avec plusieurs lignes, ça c'est bon, ça passe bien sur plusieurs pages et je sais faire.Là c'est que j'ai beaucoup d'info à marquer. Dites moi si je ne suis pas claire, et merci par avance de votre aide.


Fri, 02 Sep 2022 18:44:15 GMT

Re: Attention avec la fonction MAX(eExpression1, eExpression2 [, eExpression3 ...]) avec des strings...
Bonjour,

Peut-être, mais pas surprenant

[vfp]
max(padl(ltrim(var1), 16, '0'), padl(ltrim(var2), 16, '0'))
[/vfp]



Wed, 31 Aug 2022 18:44:15 GMT

Re: Attention avec la fonction MAX(eExpression1, eExpression2 [, eExpression3 ...]) avec des strings...
Oui Mike c'est bien ce que je fais et qu'il faudrait faire (je pense) ^^


Wed, 31 Aug 2022 18:44:15 GMT

Re: Attention avec la fonction MAX(eExpression1, eExpression2 [, eExpression3 ...]) avec des strings...
? MAX(VAL("100"),VAL( "99"))



Wed, 31 Aug 2022 18:44:15 GMT

Re: Attention avec la fonction MAX(eExpression1, eExpression2 [, eExpression3 ...]) avec des strings...
Bonjour Gregory,
Possible. mais "problématique"...

Le mer. 31 août 2022, 10h33 Gregory Adam a écrit :
> Bonjour
> > En fait il semble que la longueur de la chaine soit prise en compte ou autre : donc attention.
>
> La longueur n'y est pas pour grand-chose.
> C'est une comparaison caractère par caractère, de gauche à droite.
>
> cdlt
>




Wed, 31 Aug 2022 18:44:15 GMT

Re: Attention avec la fonction MAX(eExpression1, eExpression2 [, eExpression3 ...]) avec des strings...
Bonjour
> En fait il semble que la longueur de la chaine soit prise en compte ou autre : donc attention.

La longueur n'y est pas pour grand-chose.
C'est une comparaison caractère par caractère, de gauche à droite.

cdlt


Wed, 31 Aug 2022 18:44:15 GMT

Attention avec la fonction MAX(eExpression1, eExpression2 [, eExpression3 ...]) avec des strings...


Je dû 'intervenir' sur un programme (que je n'ai pas écris) qui utilise la fonction MAX avec 2 variables de type chaines. (je n'avais pas remarqué que l'on pouvait utiliser des chaines en paramètre)

Après plusieurs heures de débuggage j'ai identifié le problème sur la ligne du type :

[VFP]
sVar = MAX(sVar1, sVar2)
[/VFP]

j'ignorais que l'on pouvait utiliser la fonction MAX() avec des chaines : je l'ai toujours utilisé avec des numériques...

exemple :
[VFP]
sVar = MAX("99", "95") && attendu "99"
* Résultat "99" OK
[/VFP]



mais voilà dans l'exécution du programme c'était (illustration) :

[VFP]
sVar = MAX("100", "99") && attendu "100"
* Résultat "99" KO !
[/VFP]

c'est la misère...
En fait il semble que la longueur de la chaine soit prise en compte ou autre : donc attention...

car les tests suivants fonctionnent
[VFP]
? MAX("100", " 99") && avec un espace
? MAX("100", " 99") && avec 2 espaces
? MAX("100", "099") && préfixée
[/VFP]

juste un partage de galère et de perte de temps...

pour un prochain "Quizz"... (s'il y en a un...)

Cordialement




Tue, 30 Aug 2022 18:44:15 GMT

Re=3a probl=c3=a8me combobox
Le 18/07/2022 à 20:36, Francis Faure a écrit :
> JC
> Comme tu veux...
> il te reste à tester ma proposition de solution...
>
> j'ai pris le temps de tester et debugger avec EVENTTRACKING et à priori c'est MOUSEDOWN() en cause sur l'ascenseur à droite...
>
> (je ne pense pas que l'on puisse désactiver l'ascenseur de la combobox ?)
>
> Faudrait tester avec VB6 ou au autre classes de ms C++ de la même version dans d'autres langages : mais je n'ai pas le temps...
>
> à noter j'ai testé sur un pc sous Windows 7 et c'est pareil : donc ce n'est pas nouveau ni lié à Windows 10.
>
> PS : s'il y a un autre QUIZZ Atoutfox tu auras cette question :-D
>
> Cordialement
> Francis
>
>
>

Je note pour le quizz. Mais d'ici là j'aurais tout oublié. Snif !
Tue, 30 Aug 2022 18:44:15 GMT

Re: vb to vfp
Merci


Mon, 15 Aug 2022 18:44:15 GMT

Re: vb to vfp
https://www.foxite.com/archives/convert-program-0000490129.htm


Sun, 14 Aug 2022 18:44:15 GMT

vb to vfp
sorry for posting in english
can any one help me to convert this code to vfp
Sub RangeToPicture()
Dim filename As String: filename = "c:\123.png"
Dim rPrt As Range: Set rPrt = ThisWorkbook.Sheets("Sheet1").Range("A1:K40")
'Add a Zoom to increase the resolution of the image.
'ActiveWindow.Zoom = 300
Dim chtObj As ChartObject
rPrt.CopyPicture xlPrinter, xlBitmap
Set chtObj = ActiveSheet.ChartObjects.Add(1, 1, rPrt.Width, rPrt.Height)
chtObj.Activate
ActiveChart.Paste
ActiveChart.Export filename
chtObj.Delete
'Reset Zoom to innitial zoom of the image.
'ActiveWindow.Zoom = 100
End Sub
regards




Thu, 11 Aug 2022 18:44:15 GMT

Re: problème combobox
JC
Comme tu veux...
il te reste à tester ma proposition de solution...

j'ai pris le temps de tester et debugger avec EVENTTRACKING et à priori c'est MOUSEDOWN() en cause sur l'ascenseur à droite...

(je ne pense pas que l'on puisse désactiver l'ascenseur de la combobox ?)

Faudrait tester avec VB6 ou au autre classes de ms C++ de la même version dans d'autres langages : mais je n'ai pas le temps...

à noter j'ai testé sur un pc sous Windows 7 et c'est pareil : donc ce n'est pas nouveau ni lié à Windows 10.

PS : s'il y a un autre QUIZZ Atoutfox tu auras cette question :-D

Cordialement
Francis



Mon, 18 Jul 2022 18:44:15 GMT

Re: problème combobox
Perso : jamais eu de retour de ce type...

Je n'ai pas non plus des combos contenant beaucoup de lignes, nécessitant d'envisager de garder clické sur une longue liste et de sortir de la liste par la droite uniquement et de revenir dans la liste...

Si tu avais des retours faisant "souffrir" il fallait maquetter avant et faire un ticket à M$ ^^

Cordialement


Le lun. 18 juillet 2022, 20h00 jcriv a écrit :
> Ce qui me surprend le plus, c'est d'être le seul à avoir reçu des remarques sur ce problème.
> J'ai au moins 4 utilisateurs ne se connaissant pas qui "souffrent" depuis des années de ce comportement et me le font remarquer régulièrement. Sauf qu'aucun n'avait jamais trouvé la procédure qui provoquait le bug (de mon côté, j'ai quand même eu du mal à le reproduire !)
> Enfin, pour faire bonne mesure, j'ai étendu ma solution précédente aux événements mouseup et mousedown. Cela semble résoudre le souci, je vais faire des heureux !
> .



Mon, 18 Jul 2022 18:44:15 GMT

Re: problème combobox
On s'est croisé ! :)
Si ta solution a le même effet que mes wait window, je vais la prendre (j'avais supposé que c'était l'action du wait window qui provoquait un genre de réactivation de la combo).
JC


Mon, 18 Jul 2022 18:44:15 GMT

Re: problème combobox
Ce qui me surprend le plus, c'est d'être le seul à avoir reçu des remarques sur ce problème.
J'ai au moins 4 utilisateurs ne se connaissant pas qui "souffrent" depuis des années de ce comportement et me le font remarquer régulièrement. Sauf qu'aucun n'avait jamais trouvé la procédure qui provoquait le bug (de mon côté, j'ai quand même eu du mal à le reproduire !)
Enfin, pour faire bonne mesure, j'ai étendu ma solution précédente aux événements mouseup et mousedown. Cela semble résoudre le souci, je vais faire des heureux !
Mon, 18 Jul 2022 18:44:15 GMT

Re: problème combobox
Jean-Claude :

Si sur l'événement MOUSEDOWN() du ComboBox tu surcharge ainsi :

[VFP]
LPARAMETERS nButton, nShift, nXCoord, nYCoord
DODEFAULT(nButton, nShift, nXCoord, nYCoord)
[/VFP]

Donc théoriquement ne fait rien :
-> la liste de la ComboBox ne se referme pas en sortant cliqué par la droite MAIS tu n'as plus le bug !
La valeur sélectionnée en sortie ou au retour est bien prise en compte...

Merci de me dire si cela règle bien ton problème ainsi ;)

Cordialement
Francis




Le lun. 18 juillet 2022, 19h33 Francis Faure a écrit :
> En EVENTRACKING la valeur négative est dû au coordonnées de l'ascenseur du combobox à droite...
> donc le bug semble liée à la sortie "coté ascenseur" ... qui ne "referme" pas la liste combo alors qu'il devrait le faire...
>
> Le lun. 18 juillet 2022, 19h18 Francis Faure a écrit :
> > Hello JCloud,
> >
> > Alors j'arrive à reproduire ton problème...
> >
> > il faut vraiment vouloir le faire ^^....
> >
> >
> > En gardant click gauche de la souris appuyé :
> >
> > Ce que je note c'est que si les sorties de la ComboBox : si se font par le bas OU par la gauche OU par le haut -> la combo se "referme" -> pas de problème.
> > Mais : en cas de sortiedu Combo par "La Droite" de celui-ci alors la liste de la combo n'est pas refermée et te permet de revenir et sélectionner dans le "vide" ... donc il y a un bug au niveau de la sortie de liste avec click appuyé coté droit... bon
> >
> > J'ai lancé un set eventtracking pour comparer... il n' y a pas beaucoup de différences...
> > Dans les tous les cas les "MouseLeave()" sont déclenchés
> > c'est ensuite une différence au niveau des MouseUp / MouseDown -> dans le cas à droite qui laisse la liste "ouverte" un MouseDown() avec un Y négatif ! suivi de 2 mousesUp() alors que dans les cas qui fonctionne 1 seul mouseup()
> >
> > Cordialement
> > Francis
> >
> >
>
>
> .
>



Mon, 18 Jul 2022 18:44:15 GMT

Re: problème combobox
En EVENTRACKING la valeur négative est dû au coordonnées de l'ascenseur du combobox à droite...
donc le bug semble liée à la sortie "coté ascenseur" ... qui ne "referme" pas la liste combo alors qu'il devrait le faire...

Le lun. 18 juillet 2022, 19h18 Francis Faure a écrit :
> Hello JCloud,
>
> Alors j'arrive à reproduire ton problème...
>
> il faut vraiment vouloir le faire ^^....
>
>
> En gardant click gauche de la souris appuyé :
>
> Ce que je note c'est que si les sorties de la ComboBox : si se font par le bas OU par la gauche OU par le haut -> la combo se "referme" -> pas de problème.
> Mais : en cas de sortiedu Combo par "La Droite" de celui-ci alors la liste de la combo n'est pas refermée et te permet de revenir et sélectionner dans le "vide" ... donc il y a un bug au niveau de la sortie de liste avec click appuyé coté droit... bon
>
> J'ai lancé un set eventtracking pour comparer... il n' y a pas beaucoup de différences...
> Dans les tous les cas les "MouseLeave()" sont déclenchés
> c'est ensuite une différence au niveau des MouseUp / MouseDown -> dans le cas à droite qui laisse la liste "ouverte" un MouseDown() avec un Y négatif ! suivi de 2 mousesUp() alors que dans les cas qui fonctionne 1 seul mouseup()
>
> Cordialement
> Francis
>
>


Mon, 18 Jul 2022 18:44:15 GMT

Re: problème combobox
Hello JCloud,

Alors j'arrive à reproduire ton problème...

il faut vraiment vouloir le faire ^^....


En gardant click gauche de la souris appuyé :

Ce que je note c'est que si les sorties de la ComboBox : si se font par le bas OU par la gauche OU par le haut -> la combo se "referme" -> pas de problème.
Mais : en cas de sortiedu Combo par "La Droite" de celui-ci alors la liste de la combo n'est pas refermée et te permet de revenir et sélectionner dans le "vide" ... donc il y a un bug au niveau de la sortie de liste avec click appuyé coté droit... bon

J'ai lancé un set eventtracking pour comparer... il n' y a pas beaucoup de différences...
Dans les tous les cas les "MouseLeave()" sont déclenchés
c'est ensuite une différence au niveau des MouseUp / MouseDown -> dans le cas à droite qui laisse la liste "ouverte" un MouseDown() avec un Y négatif ! suivi de 2 mousesUp() alors que dans les cas qui fonctionne 1 seul mouseup()

Cordialement
Francis



Le lun. 18 juillet 2022, 11h51 jcriv a écrit :
> Salut Francis,
>
> C'est vrai que si on a jamais eu le problème, difficile de le trouver. Je suppose qu'en général, ça passe inaperçu.
> Il faut bien suivre la procédure que j'indique pour reproduire, ça parait à la marge, mais j'ai des utilisateurs à qui ça arrive tout le temps, et je ne suis pas sûr que ma description est le seul cas où ça arrive.
>
> Voilà un code :
> [VFP]
> DEFINE CLASS frm_clc1 AS form
>
> DoCreate = .T.
> Caption = "Form"
> Name = "Frm_clc1"
>
> ADD OBJECT combo1 AS combobox WITH ;
> RowSourceType = 5, ;
> RowSource = "tableau", ;
> Height = 25, ;
> Left = 48, ;
> Style = 2, ;
> Top = 24, ;
> Width = 286, ;
> Name = "Combo1"
>
> PROCEDURE Load
> PUBLIC ARRAY tableau(50, 2)
> FOR i = 1 TO 50
> Tableau(i,1) = REPLICATE(ALLTRIM(STR(m.i)), 20)
> Tableau(i,2) = m.i
> NEXT
> ENDPROC
>
> ENDDEFINE
> [/VFP]
>
> La procédure (à suivre à la lettre) :
> Pour ma part, je l'exécute sur un formulaire en visuel, ça ne devrait pas changer les choses.
>
> - ouvrir la combo avec un click sur la flèche, jusqu'ici, ça va.
> - se déplacer dans la combo vers le bas en utilisant la case du bas, mais *en cliquant et en gardant appuyé pour faire dérouler un par un*. Une fois qu'une page complète a défilé, *toujours en gardant appuyée le bouton de la souris*, déplacer le pointeur vers la droite pour sortir de la zone de la liste. Le déroulement s'arrête quand le pointeur sort de la zone de liste.
> - une fois sorti de la zone d'affichage de la combo, relâcher le bouton de la souris. La combo reste développée, pas de souci.
> - là, choisir un des items affiché, La liste se referme, mais rien n'est sélectionné.
> Aucun événement n'est déclenché, il n'y a pas de click, pas de valid...
> Ca marche aussi si on utilise l'ascenseur, mais ça va plus vite. J'ai l'impression que c'est la sortie de la zone d'affichage alors que le bouton est maintenu cliqué qui provoque le problème. Peut-être la longueur des items affichés par rapport à la largeur de la liste ? En plus, il arrive que ça fonctionne quand même !
> Dans cet exemple, on part d'une liste vide, on voit bien que ça n'a pas fonctionné. Mais quand on a déjà une valeur, l'utilisateur ne le voit pas forcément, et c'est la cata.
> La combo est remplie avec un tableau, mais ça fait pareil si on remplit avec une table.
>
> Voilà, ça m'étonnerait quand même que je sois le seul à rencontrer ça, sur le papier, la procédure parait compliquée, mais en fait, quand on le fait machinalement, ce n'est pas exceptionnel.
> Ca le fait sur mon poste, mais aussi chez certains de mes clients, selon la façon dont ils utilisent la souris (ceux qui travaillent au clavier ne semblent pas avoir de souci).
>
> Cordialement,
>
> JC
>
>
>
> .
>



Mon, 18 Jul 2022 18:44:15 GMT

Re: problème combobox
Salut Francis,

C'est vrai que si on a jamais eu le problème, difficile de le trouver. Je suppose qu'en général, ça passe inaperçu.
Il faut bien suivre la procédure que j'indique pour reproduire, ça parait à la marge, mais j'ai des utilisateurs à qui ça arrive tout le temps, et je ne suis pas sûr que ma description est le seul cas où ça arrive.

Voilà un code :
[VFP]
DEFINE CLASS frm_clc1 AS form

DoCreate = .T.
Caption = "Form"
Name = "Frm_clc1"

ADD OBJECT combo1 AS combobox WITH ;
RowSourceType = 5, ;
RowSource = "tableau", ;
Height = 25, ;
Left = 48, ;
Style = 2, ;
Top = 24, ;
Width = 286, ;
Name = "Combo1"

PROCEDURE Load
PUBLIC ARRAY tableau(50, 2)
FOR i = 1 TO 50
Tableau(i,1) = REPLICATE(ALLTRIM(STR(m.i)), 20)
Tableau(i,2) = m.i
NEXT
ENDPROC

ENDDEFINE
[/VFP]

La procédure (à suivre à la lettre) :
Pour ma part, je l'exécute sur un formulaire en visuel, ça ne devrait pas changer les choses.

- ouvrir la combo avec un click sur la flèche, jusqu'ici, ça va.
- se déplacer dans la combo vers le bas en utilisant la case du bas, mais *en cliquant et en gardant appuyé pour faire dérouler un par un*. Une fois qu'une page complète a défilé, *toujours en gardant appuyée le bouton de la souris*, déplacer le pointeur vers la droite pour sortir de la zone de la liste. Le déroulement s'arrête quand le pointeur sort de la zone de liste.
- une fois sorti de la zone d'affichage de la combo, relâcher le bouton de la souris. La combo reste développée, pas de souci.
- là, choisir un des items affiché, La liste se referme, mais rien n'est sélectionné.
Aucun événement n'est déclenché, il n'y a pas de click, pas de valid...
Ca marche aussi si on utilise l'ascenseur, mais ça va plus vite. J'ai l'impression que c'est la sortie de la zone d'affichage alors que le bouton est maintenu cliqué qui provoque le problème. Peut-être la longueur des items affichés par rapport à la largeur de la liste ? En plus, il arrive que ça fonctionne quand même !
Dans cet exemple, on part d'une liste vide, on voit bien que ça n'a pas fonctionné. Mais quand on a déjà une valeur, l'utilisateur ne le voit pas forcément, et c'est la cata.
La combo est remplie avec un tableau, mais ça fait pareil si on remplit avec une table.

Voilà, ça m'étonnerait quand même que je sois le seul à rencontrer ça, sur le papier, la procédure parait compliquée, mais en fait, quand on le fait machinalement, ce n'est pas exceptionnel.
Ca le fait sur mon poste, mais aussi chez certains de mes clients, selon la façon dont ils utilisent la souris (ceux qui travaillent au clavier ne semblent pas avoir de souci).

Cordialement,

JC



Mon, 18 Jul 2022 18:44:15 GMT

Re: problème combobox
Bonjour Jean-Claude,

Pas eu le cas... et sans moyen simple de reproduire... difficile de répondre...

En simple idée :
- as tu vérifié que cette combo ne serait pas dans une classe visuelle et que des méthodes & évenements soient surchargées avec un manque du DODEFAULT() ?

Cordialement
Francis


Sun, 17 Jul 2022 18:44:15 GMT

Re: problème combobox
Au bout de multiples tests et essais parfois désespérés, j'ai ajouté :
WAIT WINDOW "" TIMEOUT 1/1000
dans les événement downclick, upclick et mouseleave.
Et cela semble résoudre le problème.
Si quelqu'un a une autre solution, ça m'intéresse quand même.
JC


Sat, 16 Jul 2022 18:44:15 GMT

problème combobox
Bonjour tout le monde,

Quelqu'un a t'il rencontré, et surtout, résolu, le problème des combobox qui dans certains cas ne sélectionnent pas l'item cliqué ?
Il s'avère que chez certains utilisateurs, ces cas particuliers se répètent souvent.
Merci d'avance...

JC


Fri, 15 Jul 2022 18:44:15 GMT

Ou trouver les fichiers d'installation de VisualFoxPro9?
Bonjour,
un de mes clients possède un vieil ordi sur lequel son ancien informaticien avait développé pour son activité professionnelle un logiciel sour VisualFoxPro
Afin de changer cet ordinateur j'ai copié tout le dossier contenant la base
Lorsque je souhaite l'ouvrir l'ordinateur me demande d'installer VisualFoxPro
Pouvez-vous me dire où je peux trouver ou acheter les fichiers d'installation?

Merci à vous pour votre aide

Sébastien


Sat, 09 Jul 2022 18:44:15 GMT

Re: ... .dbf n'est pas une table
Bonjour,
un excellent utilitaire pour récupérer des tables est CMREPAIR.app
Je l'utilise couramment.

https://esoft.cmstory.com/cm-table-repair

Bonne journée
Cordialement


Tue, 05 Jul 2022 18:44:15 GMT

... .dbf n'est pas une table
Bonsoir à tous!
j'ai vraiment du mal à récupérer les données ou réparer les tables après le message (....dbf n'est pas une table). ceci se passe généralement après une déconnexion brutale du formulaire dont la table était en cours d'utilisation. Du coup, la taille du fichier devient 0 octets. Besoins d'aide


Mon, 04 Jul 2022 18:44:15 GMT

Re=3a R=c3=a9pertoire temporaire
Bonjour à tous,

il semblerait que THOR mette des fichiers temporaires dans c:\users\...\temp

Bonne journée

Jean à Grenoble

--
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com

Fri, 03 Jun 2022 18:44:15 GMT

Re: Répertoire temporaire
L'explorateur de classe est un programme VFP.
Les sources sont disponibles dans XSOURCES : Il est bien possible que cet outil utilise un getenv("temp") pour ses fichiers temporaires.
Cordialement
Francis


Thu, 02 Jun 2022 18:44:15 GMT

Re: Répertoire temporaire
Nulle part dans l'applicatif nous venons forcer le dossier des fichiers temporaires.
D'ailleurs mon test hors applicatif le prouve. Juste en lançant VFP9.exe et en affichant les classes par exemple, certains fichiers se créent bien dans mon répertoire défini dans config.fpw, d'autre non???Mystère!
Merci quand même de vos réponses.


Thu, 02 Jun 2022 18:44:15 GMT

Re: Répertoire temporaire
Bonjour,
1 - dans ce cas, lors de l'utilisation de l'IDE de VFP les fichiers TMP sont dans le dossier de la variable TEMP, il suffit de changer le paramétrage de VFP depuis le menu OUTILS / OPTIONS onglet FICHIERS propriétés Fichiers temporaires
2 - dans le cas d'un exécutable d'une application écrite avec VFP, si ce phénomène persiste malgré la présence d'un fichier CONFIG.FPW correctement paramétré, alors c'est que dans l'application le dossier des fichiers temporaires est modifié dans le code source.

Cordialement
Gilles


Thu, 02 Jun 2022 18:44:15 GMT

Re: Répertoire temporaire
Bonjour,
Je confirme que tout est bien paramétré. Mais il semblerait que malgré cela des fichiers .TMP sont créés dans le répertoire correspondant à la variable système TEMP (ou TMP)


Thu, 02 Jun 2022 18:44:15 GMT

Re: Répertoire temporaire
Bonjour,

Si l'appli VFP a été écrite pour fonctionner avec un seul exécutable pour plusieurs utilisateurs en mode TSE, alors tous les dossiers temporaires sont correctement paramétrés, sinon il y aurait de gros soucis de fonctionnement. Le fichier config.fpw de l'appli est correcte et lu lors de l'exécution de l'appli. (il est soit intégré dans l'exécutable soit présent dans le dossier de l'exécutable)
A vérifier si le fichier config.fpw avec les bons paramètres est aussi présent dans le répertoire de VFP, sinon au démarrage VFP prendra ses paramètres par défaut.

Cordialement
Gilles


Wed, 01 Jun 2022 18:44:15 GMT

Re: Répertoire temporaire
Bonjour,
Merci Gilles,
Même en orientant toutes ces options dans le même répertoire, le comportement reste identique :
Le fichier temporaire créé lorsque je fais Class Browser après lancement de VFP9.exe se crée malgré tout dans le répertoire indiqué par la variable système et non dans le dossier défini dans CONFIG.fpw.
Que veux-tu dire par "Si l'application n'a pas été conçue pour fonctionner en multi-postes en bureau à distance?
Notre application tourne effectivement sur des serveurs TSE en multi-utilisateurs et le problème se pose sur quelques cas seulement, la majorité fonctionne correctement.


Tue, 31 May 2022 18:44:15 GMT

Re: Summary band is too large to fit on page
Bonjour,
l'erreur provient, a priori, du paramétrage des marges de l'état ou de la
dimension des feuilles dans le paramétrage de l'imprimante. Cela se produit
souvent quand on installe une nouvelle imprimante.

Peux-tu voir de ce coté ?

Bonne fin de dimanche

Jean à Grenoble

--
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com

Sun, 29 May 2022 18:44:15 GMT

Summary band is too large to fit on page
salut tous le mende
J'ai ce logiciel de gestion de stock et j'obtiens une erreur (Summary band is too large to fit on page) lorsque j'essaie d'imprimer la facture pour les clients. quelqu'un sait comment le réparer

merci d'avance!
cordialement


Fri, 27 May 2022 18:44:15 GMT

Re: Répertoire temporaire
Bonjour,
comme le précise Francis, il faut dans le config.fpw indiquer les différents dossiers pour les différents dossiers exploités par VFP:

PROGWORK:
"Specifies where Visual FoxPro stores the program cache file.

For faster performance, especially in a multiuser environment, specify a fast disk, such as a local disk or memory, if available. Provide at least 256K for the cache, though the file can grow larger.

Default: Operating system dependent. For more information, see Optimizing the Operating Environment."

SORTWORK:
"Specifies where commands such as SORT and INDEX should place work files.

Because work files can be up to twice as large as the tables being sorted, specify a location with plenty of free space. For faster performance, especially in a multiuser environment, specify a fast disk such as a local disk.

Default: Operating system dependent. For more information, see Optimizing the Operating Environment."

EDITWORK:
"Specifies where the text editor should place its work files. Because work files can become large, specify a location with plenty of free space.

Default: Operating system dependent. For more information, see Optimizing the Operating Environment."

TMPFILES:
"Specifies where temporary work files specified by EDITWORK, SORTWORK, and PROGWORK configuration file settings are stored if they are not specified.

Because work files can become very large, specify a location with plenty of free space. For faster performance, especially in a multiuser environment, specify a fast disk such as a local disk.

Default: Operating system dependent. For more information, see Optimizing the Operating Environment."

Si l'application n'a pas été conçue pour fonctionner en multi-postes en bureau à distance / TSE, Tous ces variables peuvent pointer sur un unique dossier..

Cordialement
GLS


Wed, 25 May 2022 18:44:15 GMT

Re: Répertoire temporaire
Information supplémentaire.
En dehors de mon applicatif, j'exécute vfp9.exe en rajoutant dans C:\Program Files (x86)\Microsoft Visual FoxPro 9 un config.fpw qui oriente sur c:\LouxorTemp.
Au lancement de vfp9.exe, un fichier .TMP se crée dans c:\LouxorTemp. => OK
Si je prend l'option Class browser, il me crée un fichier .TMP dans la variable système %Temp% => KO



Wed, 25 May 2022 18:44:15 GMT

Re: Répertoire temporaire
Bonjour Francis,
Tout d'abord merci pour ta réponse.
RESOURCE avec ou sans S ne change rien car comme tu le dis, il n'impacte pas le répertoire temporaire.
Le problème se produit sur tous les formulaires de notre application.
Nous n'avons aucun script ou procédure au lancement des formulaires qui créerait clairement un fichier .TMP, c'est pourquoi je pensais que c'était Foxpro qui le créait systématiquement.
La création d'un CURSOR ne crée rien ni dans le répertoire défini dans config.fpw, ni dans le répertoire système dédié. Si j'indexe mon curseur, il me crée bien un .CDX dans le répertoire défini dans config.fpw


Wed, 25 May 2022 18:44:15 GMT

Re: Répertoire temporaire
Bonjour Françoise,

Plusieurs points de réponses en "pistes" :

-- le fichier "RESOURCES" (foxuser) se gère effectivement avec :

dans CONFIG.FPW comme indiqué dans ton message

Excepté que dans ton message tu mets un S à RESOURCE alors que la doc donne sans S

mais aussi avec les commandes suivantes :

[VFP] SET RESOURCE ON | OFF [/VFP]

[VFP] SET RESOURCE TO [FileName] [/VFP]

et la fonction permettant d'afficher son chemin et nom :

[VFP] ? SYS(2005) [/VFP]

Pour le formulaire il faudrait vérifier si environnement public ou privé (DATASESSION)
mais d'après la doc
[VFP] HELP SET DATASESSION Command [/VFP]
cela n'impacte normalement pas le fichier "RESOURCES"



-- par contre le message d'erreur mentionné "Erreur 2005 : 'Table foxcode introuvable...' "
N'est pas pas en rapport avec foxuser / ressources

Mais avec la table foxcode : liée à l'intellisense
[VFP] _FOXCODE [= cDBFFileName] [/VFP]


-- d'autre part : tu parles de la création d'un fichier ayant une extension ".TMP" or, que ce soit FOXUSER (ressources) ou FOXCODE (intellisense) c'est des tables .DBF / .FPT

Le fichier temporaire pourrait provenir dans ce formulaire : - peut être - de la création d'un CURSOR ? ou d'un création d'un index, ou l'un "&" ou EXECSCRIPT() d'une commande à compiler à l'exécution ?


-- Dans config.fpw : voir les autre paramètres : PROGWORK, SORTWORK, EDITWORK, RESOURCE , TMPFILES

-- Cela se produit que pour 1 formulaire particulier ou tous ?

Cordialement
Francis



Le mer. 25 mai 2022, 11h15 frg a écrit :
> Bonjour,
> Lorsqu'un formulaire s'ouvre dans un applicatif, un fichier .TMP se crée systématiquement dans le répertoire identifié dans %temp%
> (Dans mon cas C:\Users\gallion\AppData\Local\Temp)
> J'ai modifié mon config.fpw pour forcer le répertoire temporaire à utiliser :
> SCREEN=OFF
> RESOURCES=OFF
> TMPFILES = C:\LouxorTemp\
> ALLOWEXTERNAL=ON
> J'ai recompilé mon exécutable avec cette configuration.
> Malgré cela, ce fichier .TMP se crée toujours à l'emplacement C:\Users\gallion\AppData\Local\Temp
> SYS(2023) me renvoie bien C:\LouxorTemp
> Y a t'il un moyen de forcer ce répertoire par défaut?
> Le problème initial rencontré chez un de nos clients est le suivant : Le répertoire %Temp% oriente sur C:\Users\cisa\AppData\Local\Temp\2 qui n'existe pas (Seul C:\Users\cisa\AppData\Local\Temp existe). Au lancement de notre applicatif, on a un plantage Erreur 2005 : 'Table foxcode introuvable...'
> Merci d'avance pour vos réponses.
> Françoise
>
>
> .
>



Wed, 25 May 2022 18:44:15 GMT

Répertoire temporaire
Bonjour,
Lorsqu'un formulaire s'ouvre dans un applicatif, un fichier .TMP se crée systématiquement dans le répertoire identifié dans %temp%
(Dans mon cas C:\Users\gallion\AppData\Local\Temp)
J'ai modifié mon config.fpw pour forcer le répertoire temporaire à utiliser :
SCREEN=OFF
RESOURCES=OFF
TMPFILES = C:\LouxorTemp\
ALLOWEXTERNAL=ON
J'ai recompilé mon exécutable avec cette configuration.
Malgré cela, ce fichier .TMP se crée toujours à l'emplacement C:\Users\gallion\AppData\Local\Temp
SYS(2023) me renvoie bien C:\LouxorTemp
Y a t'il un moyen de forcer ce répertoire par défaut?
Le problème initial rencontré chez un de nos clients est le suivant : Le répertoire %Temp% oriente sur C:\Users\cisa\AppData\Local\Temp\2 qui n'existe pas (Seul C:\Users\cisa\AppData\Local\Temp existe). Au lancement de notre applicatif, on a un plantage Erreur 2005 : 'Table foxcode introuvable...'
Merci d'avance pour vos réponses.
Françoise


Wed, 25 May 2022 18:44:15 GMT

Rencontres AtoutFox 2022
Bonjour,

Pour les membres ayant des problèmes de mail, nous rappelons ici que les inscriptions aux Rencontres sont ouvertes. Toutes les informations sont sur le site.
Rendez-vous sur :
http://www.atoutfox.org/dates_rencontres_atoutfox_2022-inscription.asp

A noter que cette année, les Rencontres proposent deux sessions de 1h15 sur la présentation de "X#" : un compilateur open source Visual FoxPro sous .Net.
Bien d'autres langages ont été portés dans l'environnement .Net ce qui a assuré en partie leur pérennité. Il s'agit pour nous de l'avenir des langages xBase dans le cadre des nouvelles technologies.

A la différence des années précédentes, les repas ne seront plus à la brasserie Georges, qui par sa taille, pouvait s'adapter à presque toutes les situations.
Il est donc nécessaire de nous prévenir :
- si vous suivez un régime alimentaire particulier ;
- si vous comptez venir aux repas avec un / une accompagnant(e).
En effet, nous devons nous-même prévenir le restaurant quelques jours à l'avance.

Merci de vos retours, et à très bientôt !

Amicalement,

Le comité de l'Association AtoutFox.



Thu, 28 Apr 2022 18:44:15 GMT

Reproduction totale ou partielle strictement interdite • Propulsé par KitWeb • Hébergement Wan AgainValid XHTML 1.0 Transitional