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

thiche Messages postés 6 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 24 octobre 2011 - 21 oct. 2011 à 16:56
michelatoutfox Messages postés 828 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 ****

9 réponses

michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
21 oct. 2011 à 18:34
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.
0
mpmoreau Messages postés 12 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 26 mars 2013
23 oct. 2011 à 16:27
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
0
thiche Messages postés 6 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 24 octobre 2011
24 oct. 2011 à 11:44
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.
0
mpmoreau Messages postés 12 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 26 mars 2013
24 oct. 2011 à 14:05
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
thiche Messages postés 6 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 24 octobre 2011
24 oct. 2011 à 16:17
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
0
mpmoreau Messages postés 12 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 26 mars 2013
24 oct. 2011 à 16:37
Bon eh bien... bon courage !
0
thiche Messages postés 6 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 24 octobre 2011
24 oct. 2011 à 16:51
MERCI
0
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
0
michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
12 oct. 2012 à 11:15
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à.
0
Rejoignez-nous