begin process at 2008 07 25 20:02:09
1 216 468 membres
421 nouveaux aujourd'hui
14 182 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Vérification des fichiers en format .dbf [ Archives / Formulaires ] (devham)

Vérification des fichiers en format .dbf le 24/04/2006 02:00:40

devham

salut,
je developpe en VB.net , mais cette fois je suis obligé à faire une appliquation en VFP, l'objectif de cette appliquation c'est de verifier la structure de quatre fichiers en format .dbf .
la premiere étape c'est de comparer les champs de la column bac au fichier1.dbf, avec l'entete du fichier2.dbf :
fichier1.dbf =
x         column1        x         column2        x      bac         x      column3      x
x            a                x               b             x     nom        x           a1          x
x            b                x               b1           x   prenom     x           a2          x
x            c                x               b2           x   numero     x           a3          x
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

fichier2.dbf =
x         nom        x         prenom        x     numero     x     
x                       x                             x                      x 
x                       x                             x                      x 
x                       x                             x                      x
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Comment faire pour verifier la structure de ces deux fichiers(tables) ?

merci. apres cette étape j V vous donnez la deuxieme étape.


Re : Vérification des fichiers en format .dbf le 24/04/2006 17:05:05

Mike Gagnon
Membre Club
Regarde l'aide en ligne pour AFIELDS() Cela va te donner un bon point depart pour determiner le nom des champs dans la table fichier.dbf >>apres cette étape j V vous donnez la deuxieme étape. J'espere que TU vas en faire un bout toi-meme ;-)

Re : Vérification des fichiers en format .dbf le 24/04/2006 22:47:53

devham


Merci, Merci,  ca me donne de la force pour chercher et travailler mieux sur ce projet, je te promet, je trouverais la solution, et je vous lacherais le code.


Re : Vérification des fichiers en format .dbf le 26/04/2006 03:15:24

devham

j'ai posé le problem et maitenant je pose la solution , LOL
ce code est la solution :

close all
clear

*on selectionne le premier fichier gen
select 0
use "C:\FICHIERS\fichier1.dbf" alias gen

*on met les champs du colonne qui nous interesse dans un vecteur
i=1
declare vgen(100)
do while not eof()
*bac est l'alias du colonne que j'utilise
vgen(i)= alltr (gen.bac)
i=i+1
skip
enddo
nbrLigne = i

select 0
use "C:\FICHIERS\fichier2.dbf" alias dbff
nbrColumn = fcount()

*la commande afields()
*pour transformer notre tableau au vecteur deux dimensions
afields(dbff)
for i=1 to nbrColumn
if vgen(1) = dbff(i,1)

*c'est juste pour marquer le point de départ de comparaison
*parceque le bon truc, qu'on ne sais jamais notre point de depart
?'La premiere ligne du colonne BAC dans le fichier GEN du controle est : ' + dbff(i,1)
debutCompar = i
i=nbrColumn
endif
next

*une boucle pous parcourir les deux vecteur
*et comparaison en meme temps
j=1
m = debutCompar
nbrErreur = 0
do while j <> nbrLigne
if vgen(j) == dbff(m,1)
j=j+1
else
?'Erreur entre la Colonne '+dbff(m,1)+' et la Ligne '+vgen(j)
j=j+1
nbrErreur = nbrErreur + 1
endif
m = m+1
enddo

*nbrErreur est un compteur d'erreurs
if nbrErreur = 0
etat = .T.
else
etat = .F.
endif

if etat = .T.
?'La structure de de votre fichier est correcte'
else
?'Il existe'+str(nbrErreur)+' Erreur dans votre fichier '
endif

REMARQUE : la fonction afields() rend le fichier dbf ou (le tableau) sous forme d'un vecteur en deux dimensions, qu'on peut parcourir,
ca ve dire que l'emplacement de la colonne bac dans notre fichier1.dbf devien fichier1(3,1), biensur apres de faire afields(fichier1).

Merci bien, monsieur Mike Gagnon .
et Merci de m'alérter s'il y a une information ou expression, incorrecte,

 "ne me donne pa du poissons, mais aprend moi comment le pecher"


Re : Vérification des fichiers en format .dbf le 26/04/2006 03:26:45

devham
j m'excuse,

"ne me donne pas du poissons, mais dit moi comment le faire"


Re : Vérification des fichiers en format .dbf le 26/04/2006 11:18:39

Mike Gagnon
Membre Club
Ok, parfait. Maintenant que tu as compris le concept et en Foxpro en plus, voici comment moi j'aurais fais. Le principe est les meme que le tien, mais quelques raccourcis. use "C:\FICHIERS\fichier1.dbf" ALIAS gen exclusive IN 0 INDEX ON BAC TAG BAC ** On crée un index sur le champ bac pour faire notre recherche use "C:\FICHIERS\fichier2.dbf" alias dbff SHARED AGAIN IN 0 SELECT dbff nCount = AFIELDS(leschamps,'dbff') && Compte les champs FOR i = 1 TO nCount SELECT gen IF SEEK(leschamps[i,1]) && On cherche le nom du champs la premiere table ** On a trouvé le champs ELSE ** les champs n'existe pas endif ENDFOR

Re : Vérification des fichiers en format .dbf le 27/04/2006 01:22:29

devham

Merci, Votre méthode est plus simple que la mienne.


Re : Vérification des fichiers en format .dbf le 06/05/2006 18:05:04

devham
SVP,
j veux savoir comment faire pour parcourir un dbf ligne par ligne, en verifiant les colonnes de chaque ligne.
Merci.

Re : Vérification des fichiers en format .dbf le 06/05/2006 18:25:26

Mike Gagnon
Membre Club
Réponse acceptée !
select matable CLEAR USE ? ALIAS maTable && Va chercher ta table select matable nCount = AFIELDS(MESCHAMPS,'MATABLE') ? nCount && Combien de champs on a. select matable scan for i = 1 to nCount ?"Champs: "+ FIELD(i,ALIAS(),0)+ " Valeur :" +TRANSFORM(evaluate(field[i])) && De donne la value du champs endfor endscan Ceci va te donner le nom du champ et la valeur du champs.

Le Code le 11/05/2006 14:27:00

devham

Voici mon code :

CLOSE TABLES
CLEAR

SELECT 0
USE "c:\fichiers\control\monop1.gen" ALIAS monGen
genCount=AFIELDS(monGen)
i=1
DECLARE vecLgrille(3,500)
DO WHILE NOT EOF()
vecLgrille(1,i)= ALLTRIM(monGen.get)
vecLgrille(2,i)= ALLTRIM(monGen.Lgrille)
i=i+1
skip
ENDDO

SELECT 0
USE "c:\fichiers\control\monop1.dbf" ALIAS monDbf
nCount= AFIELDS(monDbf)
*?nCount
i=1
DO WHILE i<>nCount
IF ALLTRIM(vecLgrille(1,1))==ALLTRIM(monDbf(i,1))
debutCompar=i
i=nCount
ELSE
i=i+1
ENDIF
ENDDO
*?debutCompar
*LEN(ALLTRIM(TRANSFORM(evaluate(field[i]))))

SCAN
i=debutCompar
j=1
compErr=0
DO WHILE i<>genCount
*?mapof(i,1)
*?"Champs: "+FIELD(i)+" Valeur :"+TRANSFORM(evaluate(field[i]))+" Longueur "+STR(LEN(ALLTRIM(TRANSFORM(evaluate(field[i]))))) && De donne la value du champs
*?TRANSFORM(evaluate(field[i]))
*?ALLTRIM(STR(LEN(TRANSFORM(evaluate(field[i])))))
*?vecLgrille(2,j)
IF vecLgrille(2,j) < ALLTRIM(STR(LEN(TRANSFORM(evaluate(field[i])))))
?"Erreur"
?ALLTRIM(STR(LEN(TRANSFORM(evaluate(field[i])))))+'  '+FIELD(i)
?vecLgrille(2,j)+'  '+vecLgrille(1,j)
j=j+1
i=i+1
compErr=compErr+1
ELSE
j=j+1
i=i+1
ENDIF
ENDDO
ENDSCAN

IF compErr==0
?'bien'
ELSE
?ALLTRIM(STR(compErr))+' Erreur'
ENDIF



Classé sous : xx, format, fichiers, dbf, étape

Participer à cet échange

Pub



Appels d'offres

Animation Flash alimen...
Budget : 6 000€
Intranet client pour t...
Budget : 5 000€
Creation portail video
Budget : 3 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS