PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → pb fichier texte
pb fichier texte
Débuté par jdespe, 20 déc. 2004 16:07 - 6 réponses
Posté le 20 décembre 2004 - 16:07
Bonjour,
Je desire créer un fichier .dat qui me permet de passer des écritures de mon logiciel développer en windev a une comptabilité apisoft.
Le problème c'est que pour que le logiciel apisoft valide mon fichier, je dois l'ouvrir avec le bloc note et l'enregistrer, juste ca sans rien modifier d'autre.
Voila comment je créer mon fichier:

nIdFic = fOuvre(ChFic, foCréationSiInexistant+foAjout+foLectureEcriture)
fEcrit(nIdFic,Cid)
ResPosition = fPositionne(nIdFic,8-TailleCID,fpCourant)
fEcrit(nIdFic,Cptefourn+jj+mm+aa+ch1+" "+CId+" "+CFourn)
ResFermeFichier = fFerme(nIdFic)


Merci d'avance
Posté le 20 décembre 2004 - 15:49
On 20-Dec-2004, "john" <jdespe@hotmail.com> wrote:

Bonjour,
Je desire créer un fichier .dat qui me permet de passer des écritures de
mon logiciel développer en windev a une comptabilité apisoft.
Le problème c'est que pour que le logiciel apisoft valide mon fichier, je
dois l'ouvrir avec le bloc note et l'enregistrer, juste ca sans rien
modifier d'autre.
Voila comment je créer mon fichier:

nIdFic = fOuvre(ChFic, foCréationSiInexistant+foAjout+foLectureEcriture)
fEcrit(nIdFic,Cid)
ResPosition = fPositionne(nIdFic,8-TailleCID,fpCourant)
fEcrit(nIdFic,Cptefourn+jj+mm+aa+ch1+" "+CId+" "+CFourn)
ResFermeFichier = fFerme(nIdFic)


Merci d'avance


Si j'ai bien compris ton problème, ton fichier "ne passe pas" en l'état,
mais il passe si tu l'ouvres avec lNotepad et que tu le sauves.
Tu devrais garder une copie de ton fichier avant sauvegarde par Notepad et
la comparer avec un éditeur Hexa pour voir s'il ne manque pas un/des
caractère(s) de fin de fichier ...
Souvent, les fichiers "DAT" de longueurs variables sont terminés par un
caractère "fin de fichier" ( caract(27) si je ne me trompe pas ) ...
Parfois aussi, ils se terminent par un RC ...
Une fois détecté le(s) caractère(s) qui manque(nt), il te suffira de l'/les
ajouter dans ton fichier avant de le fermer.


--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477
Posté le 20 décembre 2004 - 18:21
Merci pour la réponse,
Le fichier de windev, en hexa, les espace sont remplacé par des . alors que le fichier enregistré les espaces sont des blancs.
Posté le 20 décembre 2004 - 18:41
On 20-Dec-2004, "john" <jdespe@hotmail.com> wrote:

Merci pour la réponse,
Le fichier de windev, en hexa, les espace sont remplacé par des . alors
que le fichier enregistré les espaces sont des blancs.


aahh !
Peut-êtrre devrais-tu enregistrer ton texte en utilisant les fonction
ansiversoem() ou oemversansi() (je ne sais plus trop ...) qui permettent de
passer du codage Windows au codage Dos et vice versa ...

en espérant que cette piste soit la bonne ....

--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477
Posté le 21 décembre 2004 - 10:10
J'ai réalisé un transfert d'éciture pour la compta API qui marche bien

PROCEDURE ecrire_trans(nom_j)
xi,xj sont des entiers
nIdFic est un entier
sMaChaîne est une chaîne
debit est une chaîne
credit est une chaîne
zone_b est une chaîne
sRubCléParcours est une chaîne

POUR xi=1 A 400
zone_b=zone_b+" "
FIN

sRubCléParcours=HFiltre(Trans_c, "Journal='"+nom_j+"'")
HLitPremier(Trans_c, sRubCléParcours)
TANTQUE PAS HEnDehors()
w_chaine="ECR"+nom_j+".dat"
w_chaine=SansEspace(rep_transfert)+w_chaine
nIdFic = fOuvre(w_chaine,foCréationSiInexistant+foAjout+foEcriture)
SI nIdFic=-1 ALORS
Ouvre(Fen_Erreur,"Création du fichier de transfert impossible")
SINON
POUR xi=1 A 2
SI Trans_c.Montant[xi]<>0 ALORS
sMaChaîne=NumériqueVersChaine(Trans_c.piece,"-8d")
sMaChaîne=sMaChaîne+Trans_c.Cpt[xi]
sMaChaîne=sMaChaîne+Droite(Trans_c.Dat_ecr,2)+Milieu(Trans_c.Dat_ecr,5,2)+Milieu(Trans_c.Dat_ecr,3,2)
sMaChaîne=sMaChaîne+Complète(Trans_c.Lib_c[xi],60," ")
SI Trans_c.Signe_m[xi]="D" ALORS
debit=NumériqueVersChaine(Trans_c.Montant[xi],"20,2f");credit=Gauche(zone_b,20)
SINON
credit=NumériqueVersChaine(Trans_c.Montant[xi],"20,2f");debit=Gauche(zone_b,20)
FIN
sMaChaîne=sMaChaîne+debit
sMaChaîne=sMaChaîne+credit
POUR xj=1 A 10
sMaChaîne=sMaChaîne+Gauche(zone_b,6)
sMaChaîne=sMaChaîne+Gauche(zone_b,20)
FIN
POUR xj=1 A 10
sMaChaîne=sMaChaîne+Gauche(zone_b,20)
sMaChaîne=sMaChaîne+Gauche(zone_b,20)
FIN
sMaChaîne=sMaChaîne+"E"+Gauche(zone_b,7)+"6.55957"+Gauche(zone_b,13)
sMaChaîne=sMaChaîne+Complète(Trans_c.Lib_ecr,60)
SI xi=1 ALORS sMaChaîne=sMaChaîne+"1" SINON sMaChaîne=sMaChaîne+"0"
sMaChaîne=sMaChaîne+Gauche(zone_b,15)
sMaChaîne=sMaChaîne+Gauche(zone_b,3)
SI xi=1 ALORS sMaChaîne=sMaChaîne+"0"+Gauche(zone_b,29) SINON
sMaChaîne=sMaChaîne+Gauche(zone_b,30)
fEcritLigne(nIdFic, sMaChaîne)
FIN
FIN
HLitSuivant(Trans_c, sRubCléParcours)
FIN
fFerme(nIdFic)
FIN
//on désactive le filtre
HDésactiveFiltre(Trans_c)

Brigitte MOINOT - Viti's
Posté le 21 décembre 2004 - 10:42
Je transferts actuellement les données d'export de journal des ventes
depuis ma gestion commerciale vers une compta apisoft et je n'ai aucun
probleme, le fichier .dat est un fichier texte. De quel fichier
s'agit-il exactement ?

Marcel.berman@managingbusiness.be wrote:

On 20-Dec-2004, "john" <jdespe@hotmail.com> wrote:


Merci pour la réponse,
Le fichier de windev, en hexa, les espace sont remplacé par des . alors
que le fichier enregistré les espaces sont des blancs.


aahh !
Peut-êtrre devrais-tu enregistrer ton texte en utilisant les fonction
ansiversoem() ou oemversansi() (je ne sais plus trop ...) qui permettent de
passer du codage Windows au codage Dos et vice versa ...

en espérant que cette piste soit la bonne ....
Posté le 29 décembre 2004 - 12:24
Ton problème est surement là:
tu fais du Fécrit au lieu fécritligne comme font la plus part des gens...
la différence c'est uniquement des RC en fin d'écriture, mais ça peut faire la différence.

Bon courage.