ATOUTFOX
    COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO

Forum AtoutFox

Le forum AtoutFox

Forum

RSS © www.atoutfox.org - Forum

Re: Comment récupérer Foxpro 2.6 ?
Il se trouve que JMN a formulé :
> Bonjour à tous et bonne année.
> Je suis à la recherche d'une méthode de récupération du logiciel Foxpro 2.6.
> J'ai les disquettes 5 pouces de Foxbase et les disquettes 3,5 pouces de
> Foxpro.2.6 Le but étant de faire revivre mes anciennes applications de
> gestion de bibliothèque et en développer d'autres. Merci par avance à ceux
> qui pourraient m'aider. Bien cordialement
> Jean-Michel NOLLEAU

Le plus simple installer une machine virtuelle, et une version Dos.
Vous pourrez réinstallet 2.6 et faire tourner vos anciennes
applications. Pour le développement de nouvelles...Les versions
actuelles sont plus appropiées.

--
Guy Bonemme

--
Cet e-mail a été vérifié par le logiciel antivirus d'AVG.
www.avg.com
Wed, 25 Jan 2023 20:55:45 GMT

Re: Imprimante sauvegardée dans un état ignorée suite MAJ windows 11 22H2
Finalement nous avons fini par trouver une solution : On a modifié la clé de registre pour pouvoir continuer à utiliser l'ancienne boite de dialogue d'impression.
[HKEY_CURRENT_USER\Software\Microsoft\Print\UnifiedPrintDialog]
"PreferLegacyPrintDialog"=dword:00000001



Wed, 18 Jan 2023 20:55:45 GMT

Comment récupérer Foxpro 2.6 ?
Bonjour à tous et bonne année.
Je suis à la recherche d'une méthode de récupération du logiciel Foxpro 2.6.
J'ai les disquettes 5 pouces de Foxbase et les disquettes 3,5 pouces de Foxpro.2.6
Le but étant de faire revivre mes anciennes applications de gestion de bibliothèque et en développer d'autres.
Merci par avance à ceux qui pourraient m'aider.
Bien cordialement
Jean-Michel NOLLEAU


Tue, 17 Jan 2023 20:55:45 GMT

Imprimante sauvegardée dans un état ignorée suite MAJ windows 11 22H2
Bonjour,
Chez plusieurs de nos clients ayant passé la dernière MAJ de windows 11, la dérivation automatique d'une édition vers une imprimante sauvegardée dans le .FRX ne fonctionne plus. Le choix des imprimantes est systématiquement proposé (printdialog.exe) en se positionnant sur l'imprimante par défaut du poste.
Même constat en utilisant Foxypreviewer.
Avez-vous déjà constaté ce problème et si oui y a t'il une parade pour retrouver le comportement attendu?
Merci d'avance pour vos réponses.
Bonne journée,
Françoise



Fri, 13 Jan 2023 20:55:45 GMT

Re: plus de fenetre de commande
Bonjour,
essayer de supprimer tous les fichiers foxuser.* présents sur votre machine..puis redémarrez VFP8.
Cela devrait permettre de faire revenir la fenêtre de commande.

Cordialement
GLS


Wed, 11 Jan 2023 20:55:45 GMT

plus de fenetre de commande
Bonjour à tous

Je n'arrive plus à afficher le fenêtre de commande dans vfp8, même en tapant CTR + F2

Ou est elle passée?

Si qq a des lumières!!!

merci


Tue, 10 Jan 2023 20:55:45 GMT

Python sous VS Code (presque un hors-sujet).
Bonjour tout le monde et bonne année à toutes et à tous.

Je profite du temps libre que me laisse la retraite pour passer sous Python mes programmes VFP automatisant des tâches Excel.

Les données techniques : Windows 10 Professionnel 64 bits version 22H2 (05/11/2020), Python 3.9.0 et Visual Studio Code 1.74.2 avec l'extension Python dernier cri v2022.21.13491005

Jusqu'aux dernières mise à jour de VS Code et de l'extension Python, pas trop de problèmes. Depuis c'est la catastrophe. La vérification et la coloration syntaxique ne fonctionne pas dans certains modules. Je n'arrive pas à déterminer pourquoi certains modules sont touchés et pas d'autres. Résultat : je peux taper n'importe quoi, aucun problème n'est détecté et la mise en forme (si importante sous Python) peut rester chaotique.

J'ai essayé de revenir à la version précédente de VS Code. L'extension Python n'était pas compatible et je n'ai pas trouvé comment charger une ancienne version. En plus VS Code s'est automatiquement mis à jour pour revenir dans sa dernière version.

Toute idée sur la manière de résoudre ces problèmes serait la bienvenue.






Fri, 06 Jan 2023 20:55:45 GMT

Chatgpt et foxpro
Bonjour à tous,

Je vous souhaite une excellente année 2023,

Je m'amusais à tester l'implémentation de code sur chatgpt en c# ,

et je lui ai demandé de le convertir de c# en Visual Fox pro, ce qu'il a fait très facilement,

L'intelligence artificielle va aider les développer à coder ou à traduire des morceaux de code pour aller beaucoup plus rapidement.

Avez vous testé https://chat.openai.com/chat ?

A très bientôt
Olivier


Mon, 02 Jan 2023 20:55:45 GMT

Re: Calendrier
bonjour à tous,

j'aime bien le calendrier présent dans _datetime.vcx ...

Jean à Grenoble

--
Cet e-mail a été vérifié par le logiciel antivirus d'AVG.
www.avg.com
Thu, 29 Dec 2022 20:55:45 GMT

Re: Calendrier
Bonjour,
une recherche sur les contributions de ce forum te donne au moins 2 solutions..

http://www.atoutfox.org/articles.asp?ACTION=FCONSULTER&ID=0000000204

http://www.atoutfox.org/articles.asp?ACTION=FCONSULTER&ID=0000000136
Il y a aussi un OCX de Microsoft qui pourrait faire l'affaire..

Cordialement
GLS



Wed, 28 Dec 2022 20:55:45 GMT

Calendrier
Bonjour chers tous! VFP 9 permet -il de sélectionner les dates affichées sous forme de calendrier dans un champ? Si oui, je voudrais savoir comment? Merci d'avance


Wed, 28 Dec 2022 20:55:45 GMT

Re: Changer la couleur d'un trait fait avec .Line
Auto-réponse,
Je me suis trompé entre FillColor et ForeColor.
c'est bien ForeColor qu'il faut utiliser...


Sun, 25 Dec 2022 20:55:45 GMT

Changer la couleur d'un trait fait avec .Line
Bonjour,
je souhaite dessiner un motif par programmation, et j'utilise la méthode Line
ThisForm.Line(x1,y1,x2,y2)

La couleur du trait est noire par défaut, comment changer la couleur de dessin ?



Sun, 25 Dec 2022 20:55:45 GMT

Re: ... .dbf n'est pas une table
Ce pbs surgit avec les fichier index ouverts ...suite à un arrêt de la machine (coupure de courant) ce fichier index prendra la valeur 0 dans sa taille. dans ce cas supprimer ce fichier index puis lancer sa création de nouveau. Mais le problème que vous soulever avec le fichier .DBF sincèrement je travaille avec VFP depuis 1990 (fox) à ce jour, je n'ai jamais rencontré de problème avec les tables *.dbf


Mon, 19 Dec 2022 20:55:45 GMT

Re=3a Objet wzimport exig=c3=a9 pendant la reconstruction ou la compilation d'un projet VFP
Bonsoir,

les objets wz.... sont des assistants de VFP (wz pour wizard). Il n'est pas trop
étonnant qu'à un moment où l'autre il soit inclus dans le projet. Il suffit d'un
clic mal placé ...

Bonne soirée et bon courage
Jean à Grenoble

--
Cet e-mail a été vérifié par le logiciel antivirus d'AVG.
www.avg.com
Tue, 13 Dec 2022 20:55:45 GMT

Re: Objet wzimport exigé pendant la reconstruction ou la compilation d'un projet VFP
Chers collègues, j'ai trouvé une solution à mon problème. J'ai reconstitué le projet classe par classe, et à chaque fois je lançais le build. Ainsi j'ai décelé le problème au moment où j'ai ajouté les reports, j'ai alors récupéré une ancienne sauvegarde qui n'était pas contaminée. Mais je ne sais pas comment cet intrus s'est retrouvé dans mon projet. Merci à vous tous.
Damonzon.


Tue, 13 Dec 2022 20:55:45 GMT

Re: Ou trouver les fichiers d'installation de VisualFoxPro9?
Bonjour,
Si le problème n'est pas déjà réglé, je vous pose la question suivante : Est ce que l'application existe en format .EXE ? Si oui je crois qu'il vous suffit d'installer le moteur VFP9 sur la nouvelle machine.
Damonzon.


Tue, 13 Dec 2022 20:55:45 GMT

Objet wzimport exigé pendant la reconstruction ou la compilation d'un projet VFP
Chers Collègues,
Depuis quelques temps je suis confronté à une erreur chauqe fois que je lance le build ou compile de mon projet. L'erreur se produisait par moment, maintenant elle est devenue constante au cours du Build ou du Compile. Le message qui s'affiche est le suivant : "Memo file c:\projet\wzimport\ missing or invalid"
Je me demande comment un tel objet s'est retrouvé dans mon projet. Si quelqu'un d'entre vous a déjà eu à faire à ce genre de situation, ou en a t-il connaissance autrement, je 'sollicite votre concours précieux.
Merci d'avance.
AtoutFoxement vôtre.


Tue, 13 Dec 2022 20:55:45 GMT

Re: Codification des articles
Bonjour Monsieur Abdelrrazak,

Merci pour votre réponse, enfin j'ai quelqu'un qui a compris ma question, je crois de je vais opter pour la première solution un seul code pour toutes les prestations.

Meilleures salutations.


Sun, 30 Oct 2022 20:55:45 GMT

Re: importer um fichier XML
Salut mplaza2

Excusez moi, mais l´ erreur est:

Object OXML is not found

Merci,
Luis



Tue, 25 Oct 2022 20:55:45 GMT

Re: importer um fichier XML
Salut Jean,

Merci beaucoup por votre example que je vais essayer.

Luis


Tue, 25 Oct 2022 20:55:45 GMT

Re: importer um fichier XML
Salut mplaza2,

Je suis en train d´essayer votre programme, mais le même retourne une erreur sue les ligne qui ont : oxml.

J´ai changer le chemin de l´executable comme ça :

oData = "C:\Users\LG\Downloads\nfXML-master\nfXML-master\nfXmlRead" +( getXml() )


L´erreure est lá suivante :

OXML is not an object.

Pouvez vous m´aider sur cette erreur?

Merci,
Luis Santos



Tue, 25 Oct 2022 20:55:45 GMT

Re: Codification des articles
Bonjour,

Vous pouvez créer un seul code article pour toutes les prestations des services ou créer autant de code que des prestation qui pourrons vous interesser dans les statistiques ou le calcul des coûts.
Mais l'approche n'est pas la bonne. Vous devez utiliser une des méthodes d'analyse et de conception, genre Merise ou autres.


Wed, 19 Oct 2022 20:55:45 GMT

Re: propriétés desktop reste visible après modif d'une Form
Question inutile désolé, il fallait décliquer droit "ancrable" et "masquer" de la fenêtre proriétés ...


Mon, 17 Oct 2022 20:55:45 GMT

propriétés desktop reste visible après modif d'une Form
Le titre de la question résume le sujet !
Je ne retrouve pas comment faire pour que la fenêtre "propriétés" se ferme systématiquement après les modifications apportées à un écran.
Merci à tous
JM André



Sun, 16 Oct 2022 20:55:45 GMT

Codification des articles
Bonjour les foxeurs,

Je suis confronté actuellement à une problématique de codification des articles.
Je n'ai pas de problème avec la codification articles de stock mais des articles de prestation de service telle que les expertise nettoyage fraisage entretien diagnostique étude etc sachant que nous une entreprise de maintenance d'équipement s.
Ma question est : es ce que je peux m'en passer de la codification avec les prestation toute en gardant la notion de famille et sous famille des prestations?
Si quelqu'un a compris ma question prière me faire part de votre contribution SVP


Sat, 15 Oct 2022 20:55:45 GMT

Re: Connection à une BD sqlite

Vous devez utiliser

[VFP]
SELECT name FROM sqlite_master
[/VFP]


Wed, 12 Oct 2022 20:55:45 GMT

Re: Connection à une BD sqlite
Bonjour et merci pour votre réponse.

C'est la bonne syntaxe.
Çà marche. Je vais pouvoir m'atteler aux formulaire de mon appli dédiée au medical.

Bonne journée.
A.MAHALLA


Mon, 10 Oct 2022 20:55:45 GMT

Re: Connection à une BD sqlite
Bonjour,

je dirais plutôt:
[VFP]SELECT name FROM sqlite_master WHERE type='table';[/VFP]


Mon, 10 Oct 2022 20:55:45 GMT

Re: Connection à une BD sqlite
Bonjour et merci à tous pour vos réponses.

1- la BD SQLITE est sur le même répertoire courant que l'appli.
2- ConSqLite prend une valeur > 0. ce qui me permet d'exécuter 2 requêtes sur main.db.
3- " La table main.db existe-elle bien dans la base de données (de même nom) main.db ?" : Non, il n'y a pas de table 'main' dans la BD.
4- Voila ce que je voulais :

a-Lister les tables qui existe dans main.db avec (Selectsql = SQLEXEC(conSqLite, "SELECT name FROM main.db"), apparemment c'est la mauvaise commande.
Y a t'il une commande qui le permet(Lister les tables d'une BD)?

b-J'ai une table deviceTable dans main.db qui s'ouvre et j'ai un cursor que je liste.

[VFP]
**-- Connection à une base de donnees Sqlite située sur le répertoire courant
conSqLite = SQLSTRINGCONNECT("DRIVER=SQLite3 ODBC Driver;Database=.\main.db;")

IF conSqLite < 0
* Erreur de création de connection
=MESSAGEBOX("ERREUR Connection " + CHR(13) + ;
"1-Code Erreur : "+STR(errcon1[1])+CHR(13)+ ;
"2-" + errcon1[2]+CHR(13)+ ;
"4-Etat courant ODBC SQL : " + errcon1[4]+CHR(13)+ ;
"5-N° Erreur source de données ODBC : " + STR(errcon1[5])+CHR(13)+ ;
"6-Descripteur Con ODBC : " + STR(errcon1[6]))
ELSE
**-- a- Lister les tables de la base de données
Selectsql1 = SQLEXEC(conSqLite, "SELECT name FROM main.db")
IF Selectsql1 < 0
=AERROR(errdel)
=MESSAGEBOX("ERREUR1 Connection " + CHR(13) + ;
"1-Code Erreur : "+STR(errdel[1])+CHR(13)+ ;
"2-" + errdel[2]+CHR(13)+ ;
"4-Etat courant ODBC SQL : " + errdel[4]+CHR(13)+ ;
"5-N° Erreur source de données ODBC : " + STR(errdel[5])+CHR(13)+ ;
"6-Descripteur Con ODBC : " + STR(errdel[6]))
ELSE
BROWSE
ENDIF

**-- b- Ouvrir la table deviceTable de main.db
Selectsql2 = SQLEXEC(conSqLite, "SELECT* FROM deviceTable")
IF Selectsql2 < 0
=AERROR(errdel)
=MESSAGEBOX("ERREUR2 Connection " + CHR(13) + ;
"1-Code Erreur : "+STR(errdel[1])+CHR(13)+ ;
"2-" + errdel[2]+CHR(13)+ ;
"4-Etat courant ODBC SQL : " + errdel[4]+CHR(13)+ ;
"5-N° Erreur source de données ODBC : " + STR(errdel[5])+CHR(13)+ ;
"6-Descripteur Con ODBC : " + STR(errdel[6]))
ELSE
BROWSE
ENDIF
= SQLDISCONNECT(conSqLite)
ENDIF

[/VFP]

Merci pour votre aide et bonne journée.
A.MAHALLA


Mon, 10 Oct 2022 20:55:45 GMT

Re: Connection à une BD sqlite
Bonjour

je mettrais le chemin complet au lieu de .\main.db
\
eg: C:\SQL\main.db




Mon, 10 Oct 2022 20:55:45 GMT

Re: Connection à une BD sqlite
Bonjour,
quelle valeur prend conSqLite avant le SQLEXEC ?
La table main.db existe-elle bien dans la base de données (de même nom) main.db ?

Cordialement
GLS


Mon, 10 Oct 2022 20:55:45 GMT

Re: Connection à une BD sqlite
Rebonjour,
Merci pour toute aide
Bonne journée

A.MAHALLA


Sun, 09 Oct 2022 20:55:45 GMT

Connection à une BD sqlite
Bonjour à tous
Je bloque sur ce sujet :
me connecter à une base de donnée SQLITE (main.db).
Voici mon code :

[vfp]
conSqLite = SQLSTRINGCONNECT("DRIVER=SQLite3 ODBC Driver;Database=.\main.db;")
Selectsql = SQLEXEC(conSqLite, "SELECT name FROM main.db")
[/vfp]

J'ai une erreur:
1-Code erreur 1526
2- Erreur de connectivité; no such table: main.db (1)


Sun, 09 Oct 2022 20:55:45 GMT

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 20:55:45 GMT

Re: importer um fichier XML
Salut!

Je vous remercie por vos explications. :)

Luis


Wed, 28 Sep 2022 20:55:45 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 20:55:45 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 20:55:45 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 20:55:45 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 20:55:45 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 20:55:45 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 20:55:45 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 20:55:45 GMT

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


Mon, 12 Sep 2022 20:55:45 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 20:55:45 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 20:55:45 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 20:55:45 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 20:55:45 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 20:55:45 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 20:55:45 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 20:55:45 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 20:55:45 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 20:55:45 GMT

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

Sébastien


Mon, 05 Sep 2022 20:55:45 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 20:55:45 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 20:55:45 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 20:55:45 GMT

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



Wed, 31 Aug 2022 20:55:45 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 20:55:45 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 20:55:45 GMT

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