Migration de code ecris sous foxpro en un code acceptable sous windev
thiche
Messages postés6Date d'inscriptionjeudi 8 février 2007StatutMembreDernière intervention24 octobre 2011
-
21 oct. 2011 à 16:56
michelatoutfox
Messages postés828Date d'inscriptionmardi 5 octobre 2004StatutMembreDerniè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 ****
michelatoutfox
Messages postés828Date d'inscriptionmardi 5 octobre 2004StatutMembreDernière intervention 7 mai 20131 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.
thiche
Messages postés6Date d'inscriptionjeudi 8 février 2007StatutMembreDernière intervention24 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.
mpmoreau
Messages postés12Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention26 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
//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
Vous n’avez pas trouvé la réponse que vous recherchez ?
thiche
Messages postés6Date d'inscriptionjeudi 8 février 2007StatutMembreDernière intervention24 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.
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