Migration de code ecris sous foxpro en un code acceptable sous windev

Messages postés
6
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
24 octobre 2011
- - Dernière réponse : michelatoutfox
Messages postés
834
Date d'inscription
mardi 5 octobre 2004
Statut
Membre
Dernière intervention
7 mai 2013
- 12 oct. 2012 à 11:15
voila je debute en programmation et je travail sur WINDEV mais j'ai un programme fais sur foxpro et je veux traduire l'un des codes ne code utilisable sous WINDEV.
Voila le code FOXPRO:

public a,b,i,total,datex,cbank,cgui,ccompte,ccle,clib,cguibank,totcpt,k,servliv,libserv,mat,num,servben
store " " to a,b,cbank,cgui,ccompte,ccle,libserv,mat,servben
store 0 to totcpt,servliv
a=thisform.mois.value
b=thisform.an.value
set excl on
select virlibrop


C'EST VRAIMENT TRES IMPORTANT MERCI

delete all
pack
Select biao
delete all
pack
num=1
****

do case
case val(alltrim(thisform.codbank.value))=0
*** Importation du fichier de base des virements ***
select biao
APPEND FIELDS MATR,NOM,PRENOM,DATE,;
MONTANT,FILLER,CODBANK,FILLER2,CODGUI,FILLER1,CPTE,CLE FROM virement TYPE SDF
total=0
i=1

j="0000"
k="0000000"
select banque
set order to codb
go top
do while not eof()
if (banque.codb)=cbank
else
cbank=alltrim(banque.codb)
clib=alltrim(banque.libbanq)
select biao
go top
do while not eof()
if alltrim(biao.codbank)=cbank and alltrim(biao.codbank)<>'012'
*** Enregistrement des détails ***
if len(alltrim(str(i)))>1
j=left(j,(len(j)-len(alltrim(str(i)))+1))
endif
***
if len(alltrim(str(biao.montant)))=5
k='0000000'
endif
if len(alltrim(str(biao.montant)))=6
k='000000'
endif
if len(alltrim(str(biao.montant)))=7
k='00000'
endif
Select biao
insert into virlibrop(codeop,typenr,nseq,datexe,codbanq,cpte,lcdc,matben,nomben,libanq,libop,montantv,filler,noben) value ;
("02","2",j+(alltrim(str(i))),substr(biao.date,1,2)+substr(biao.date,4,2)+substr(biao.date,7,2),;
cbank,biao.cpte,biao.cle,;
alltrim(biao.matr),(alltrim(biao.nom)+" "+alltrim(biao.prenom)),clib,"Virement de"+" "+thisform.mois.displayvalue+" "+alltrim(str(b)),k+(alltrim(str(biao.montant))),;
"",num)
i=i+1
j='0000'
k='0000000'
total=total+biao.montant
totcpt=totcpt+val(biao.cpte)
endif
select biao
skip
enddo
num=num+1
select banque
endif
skip
enddo
otherwise
select biao
delete all
pack
select virlibrop
delete all
pack
noben=1
cbank=alltrim(thisform.codbank.value)
select banque
set order to guichet
do case
case cbank="008"
cguibank="00711"
case cbank="042"
cguibank="00000"
case cbank="007"
cguibank="01030"
case cbank="006"
cguibank="12345"
case cbank="001"
cguibank="00001"
case cbank="012"
cguibank="00000"
case cbank="000"
cguibank="00000"
endcase
select banque
set order to codb
if seek(alltrim(thisform.codbank.value))
ccompte=banque.compte
ccle=banque.cle
clib=banque.libbanq
endif
a=thisform.mois.value
b=thisform.an.value
datex=ctod('--/--/----')
total=0
i=0
j="0000"
k="0000000"
*** Importation du fichier de base des virements ***
select biao
APPEND FIELDS MATR,NOM,PRENOM,DATE,;
MONTANT,FILLER,CODBANK,FILLER2,CODGUI,FILLER1,CPTE,CLE FROM virement TYPE SDF
*** Fin d'importation

i=i+1
Select Biao
go top
do while .not. eof()

*** Enregistrement des détails ***
if len(alltrim(str(i)))>1
j=left(j,(len(j)-len(alltrim(str(i)))+1))
endif
***
if len(alltrim(str(biao.montant)))=5
k='0000000'
endif
if len(alltrim(str(biao.montant)))=6
k='000000'
endif
if len(alltrim(str(biao.montant)))=7
k='00000'
endif

mat=biao.matr
Select biao
***
if alltrim(biao.codbank)=cbank
insert into virlibrop(codeop,typenr,nseq,datexe,codbanq,codgui,cpte,lcdc,matben,nomben,libanq,libop,montantv,filler,noben) value ;
("02","2",j+(alltrim(str(i))),substr(biao.date,1,2)+substr(biao.date,4,2)+substr(biao.date,7,2),;
cbank,biao.codgui,biao.cpte,biao.cle,;
alltrim(biao.matr),(alltrim(biao.nom)+" "+alltrim(biao.prenom)),clib,"Virement de"+" "+thisform.mois.displayvalue+" "+alltrim(str(b)),k+(alltrim(str(biao.montant))),"",num)
*** Fin de remplissage
i=i+1
j='0000'
k='0000000'
total=total+biao.montant
totcpt=totcpt+val(biao.cpte)

endif
skip
enddo

*** Fin de remplissage
endcase

*** Edition des etats***

*** Etat fichier virlibrop
if reccount('virlibrop')=0
=messagebox('AUCUN VIREMENT POUR CE GUICHET',0,'Vide')
else
report form bordereau1 preview
endif
**** Fin d'édition ****
Afficher la suite 

9 réponses

Messages postés
834
Date d'inscription
mardi 5 octobre 2004
Statut
Membre
Dernière intervention
7 mai 2013
1
0
Merci
voir ma réponse au message précédent. Tu ne veux pas "traduire", tu veux qu'on fasse ton boulot à ta place!
je te rappelle qu'il y a un règlement sur ce forum, qui précise entre autres:
[*] On est poli : «bonjour» et «merci» sont des mots plus qu'appréciés
[*] On demande une explication ou de l'aide sur un sujet précis,

[*] et en particulier le point n°9
On ne demande pas un programme tout fait, on ne demande que de l'aide sur un problème concret.
Dirigez-vous directement dans la recherche de sources pour les programmes complets. Inutile de demander du "code tout cuit", vous n'obtiendrez aucune réponse.
Commenter la réponse de michelatoutfox
Messages postés
12
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
26 mars 2013
0
Merci
Bonjour,

Apparemment tu débutes aussi en politesse...

Je suis passé de FoxPro à Windev... c'est un métier.

Facile mais il s'agit d'environnements très différents.

Tu payes combien ?

Cordialement

Michel Moreau
Commenter la réponse de mpmoreau
Messages postés
6
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
24 octobre 2011
0
Merci
BONJOUR a tous
Je tien a m'excuser pour mon manque de politesse a l’égare de tous.
c'est vrai que je début en programmation mais pas en politesse.
et aussi je n'aurais pas dur demandé que l'on fasse mon travail a ma place mais plutôt demandé que l'on m'explique ce que je ne comprenais pas.
merci et bonne journée.
Commenter la réponse de thiche
Messages postés
12
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
26 mars 2013
0
Merci
Bonjour,
Voici une traduction rapide


// hypothèses:
// procédure dans une fenêtre FEN_test
// champs de saisie SAI_mois, SAI_an,Sai_codeBanque
// fichiers HF virlibrop, biao, banque

// chaque ligne FoxPro est en commentaire (pour Windev), suivie de la ligne Windev
// N.B. en VFP il n'est pas nécessaire de déclarer les variables avant utilisation



// à mettre dans le code global de la fenêtre
//PUBLIC A,b,i,total,datex,cbank,cgui,ccompte,ccle,clib,cguibank,totcpt,k,servliv,libserv,mat,num,servben
A,b,i,total,datex,cbank,cgui,ccompte,ccle,clib,cguibank,totcpt,k,servliv,libserv,mat,num,servben est une chaîne
// pas tout, il y a des dates et des num, mais c'est facile

// emplacement selon portée
//store " " TO A,b,cbank,cgui,ccompte,ccle,libserv,mat,servben
A,b,cbank,cgui,ccompte,ccle,libserv,mat,servben est une chaîne=" "

//store 0 TO totcpt,servliv
totcpt,servliv est un numérique=0

//A=thisform.mois.value
//b=thisform.an.value
A=sai_mois
b=sai_an

//set excl on
//select virlibrop

//delete ALL
//pack
cSql est une chaîne="DELETE FROM virlibrop"
HExécuteRequêteSQL(cSl)

//Select biao
//delete ALL
//pack
cSql est une chaîne="DELETE FROM biao"
HExécuteRequêteSQL(cSl)

num est un entier=1

//DO CASE
//CASE Val(alltrim(thisform.codbank.value))=0
SELON Val(SansEspace(SAI_codeBanque))
CAS 0
//*** Importation du fichier de base des virements ***
//select biao
//APPEND FIELDS MATR,NOM,PRENOM,DATE,;
//MONTANT,FILLER,CODBANK,FILLER2,CODGUI,FILLER1,CPTE,CLE FROM virement TYPE SDF
//total=0
//i=1
//
//j="0000"
//k="0000000"
select banque
set order TO codb // tri sur une colonne déterminée dans l'analyse

//go top
HLitPremier(banque)
//DO WHILE NOT eof()
TANTQUE PAS HEnDehors(banque)
//IF (banque.codb)=cbank THEN
SI banque.codb)=cbank ALORS
//ELSE
SINON

// maintenant je ne traduit que ce qui est nouveau
cbank=alltrim(banque.codb) // sansespace(
clib=alltrim(banque.libbanq)
select biao
go top
DO WHILE NOT eof()

IF alltrim(biao.codbank)=cbank AND alltrim(biao.codbank)<>'012'
*** Enregistrement des détails ***
IF len(alltrim(str(i)))>1 // taille(
j=Left(j,(len(j)-len(alltrim(str(i)))+1)) // gauche(
endif
***
IF len(alltrim(str(biao.montant)))=5 // str( peut-être, suppimé Windev concane chaine+numerique
k='0000000'
endif
IF len(alltrim(str(biao.montant)))=6
k='000000'
endif
IF len(alltrim(str(biao.montant)))=7
k='00000'
endif
Select biao
Insert into virlibrop(codeop,typenr,nseq,datexe,codbanq,cpte,lcdc,matben,nomben,libanq,libop,montantv,filler,noben) value ;
("02","2",j+(alltrim(str(i))),substr(biao.date,1,2)+substr(biao.date,4,2)+substr(biao.date,7,2),; //substr=milieu
cbank,biao.cpte,biao.cle,;
alltrim(biao.matr),(alltrim(biao.nom)+" "+alltrim(biao.prenom)),clib,"Virement de"+" "+thisform.mois.displayvalue+" "+alltrim(str(b)),k+(alltrim(str(biao.montant))),;
// je m'aperçois que mois devait être une combo. thisform.mois.displayvalue est la valeur affichée
"",num)
i=i+1
j='0000'
k='0000000'
total=total+biao.montant
totcpt=totcpt+Val(biao.cpte)
endif
select biao
skip // HAvance
enddo
num=num+1
select banque
endif
skip
enddo
otherwise // AUTRES CAS
select biao
delete ALL
pack
select virlibrop
delete ALL
pack
noben=1
cbank=alltrim(thisform.codbank.value)
select banque
set order TO guichet
DO CASE // SELON cbank
CASE cbank="008" // CAS "008"
cguibank="00711"
CASE cbank="042"
cguibank="00000"
CASE cbank="007"
cguibank="01030"
CASE cbank="006"
cguibank="12345"
CASE cbank="001"
cguibank="00001"
CASE cbank="012"
cguibank="00000"
CASE cbank="000"
cguibank="00000"
endcase // fin
select banque
set order TO codb
IF Seek(alltrim(thisform.codbank.value)) // recherche suivant une clé de tri
ccompte=banque.compte
ccle=banque.cle
clib=banque.libbanq
endif
A=thisform.mois.value
b=thisform.an.value
datex=ctod('--/--/----') // création d'une date vide
total=0
i=0
j="0000"
k="0000000"
*** Importation du fichier de base des virements ***
select biao
APPEND FIELDS MATR,NOM,PRENOM,DATE,; // insert
MONTANT,FILLER,CODBANK,FILLER2,CODGUI,FILLER1,CPTE,CLE FROM virement TYPE SDF
*** FIN d'importation

i=i+1
Select Biao
go top
DO WHILE .NOT. eof()

*** Enregistrement des détails ***
IF len(alltrim(str(i)))>1
j=Left(j,(len(j)-len(alltrim(str(i)))+1))
endif
***
IF len(alltrim(str(biao.montant)))=5
k='0000000'
endif
IF len(alltrim(str(biao.montant)))=6
k='000000'
endif
IF len(alltrim(str(biao.montant)))=7
k='00000'
endif

mat=biao.matr
Select biao
***
IF alltrim(biao.codbank)=cbank
Insert into virlibrop(codeop,typenr,nseq,datexe,codbanq,codgui,cpte,lcdc,matben,nomben,libanq,libop,montantv,filler,noben) value ;
("02","2",j+(alltrim(str(i))),substr(biao.date,1,2)+substr(biao.date,4,2)+substr(biao.date,7,2),;
cbank,biao.codgui,biao.cpte,biao.cle,;
alltrim(biao.matr),(alltrim(biao.nom)+" "+alltrim(biao.prenom)),clib,"Virement de"+" "+thisform.mois.displayvalue+" "+alltrim(str(b)),k+(alltrim(str(biao.montant))),"",num)
*** FIN de remplissage
i=i+1
j='0000'
k='0000000'
total=total+biao.montant
totcpt=totcpt+Val(biao.cpte)

endif
skip
enddo

*** FIN de remplissage
endcase

*** Edition des etats***

*** Etat fichier virlibrop
IF reccount('virlibrop')=0 // numEnr(virlibrop)
=messagebox('AUCUN VIREMENT POUR CE GUICHET',0,'Vide') // Info(
ELSE
//
//report form bordereau1 preview
iAperçu(iPage, "Aperçu écran", Vrai)
iImprimeEtat(ETAT_test)

endif
**** FIN d'édition ****

Bon, j'espère que ça ira... (je me demande si c'est bien clair, mais avec tes connaissances de Windev ça devrait aller).
Bon amusement.
Cordialement,

Michel
Commenter la réponse de mpmoreau
Messages postés
6
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
24 octobre 2011
0
Merci
BONJOUR Mr Michel

merci d'avoir traduire le code que j'ai posté.Normalement je devrais sauté de joie et me pressée de copie cet code derrière mon bouton mais je ne le ferais pas parce que je veux comprendre comment faire.
j'ai tirer la lite du lexique de SQL je voudrais savoir comment je dois fais pour savoir leurs correspondance sous windev.

quand j'aurais compris ça je serais a même de réécris cet code sans regardé celui que vous avez fais.
je veux vraiment apprendre.

Merci
Commenter la réponse de thiche
Messages postés
12
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
26 mars 2013
0
Merci
Bon eh bien... bon courage !
Commenter la réponse de mpmoreau
Messages postés
6
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
24 octobre 2011
0
Merci
MERCI
Commenter la réponse de thiche
0
Merci
bonjour; ma question en vfoxpro9
requete select champ1_table1,champ2_table1,sum(plusieurs champ_table2) lien code_table1=code_table2 group by champ1_table1
"message erreur vfoxpro9 : sql.clause group by manquante ou non valide.
la meme requete est executée sous foxpro 2.6 dos et vfoxpro 5 , 6
merçi pour votre aide
Commenter la réponse de tahird
Messages postés
834
Date d'inscription
mardi 5 octobre 2004
Statut
Membre
Dernière intervention
7 mai 2013
1
0
Merci
Bonjour,

Merci de re-poster ta question sous un nouveau sujet.
Et également de mettre le code exact, précis. je te répondrai à ce moment-là.
Commenter la réponse de michelatoutfox