PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → importation de données d'un fichier .dbf
importation de données d'un fichier .dbf
Débuté par desrimaisd, 06 déc. 2004 18:14 - 5 réponses
Posté le 06 décembre 2004 - 18:14
bonjour a tous,
j'essaye d'importer les données d'un fichier DBF mais j'ai quelques problèmes..

j'arrive a ouvrir mon fichier et a me positionner sur les enregistrements mais je n'arrive pas a récupérer les données... voici mon code :

sNomFichier est le chemin complet du fichier (provenant d'un bouton parcourir)

// j'ouvre l'analyse fourni avec Windev
// car mon fichier n'est pas dans l'analyse de l'appli
SI PAS HInitHF55("C:\syge2td\ForXBase.WDD") ALORS
Erreur(HErreurInfo())
SINON
SI PAS HDBOuvre("DONNEES_OUT","OUT",sNomFichier) ALORS
Erreur("Impossible d'ouvrir le fichier" + sNomFichier)
SINON
Info("Ouverture du fichier " + sNomFichier + " réussie !")

i est un entier
POUR i = 1 A HNbEnr("DONNEES_OUT",hEtatTous)
SI HLit("DONNEES_OUT",i)= Faux ALORS
Erreur("Impossible de lire la ligne " + i)
SINON
test est une chaîne = OUT.IDENT
Info(test)
FIN
FIN
FIN
FIN

voila.. TOUT marche sauf la ligne :
" test est une chaîne = OUT.IDENT "
le programme ne reconnait pas la variable OUT.. pourtant c'est la manière d'accéder aux rubriques (et donc aux données) indiquée dans l'aide de Windev...
je ne comprend pas... si quelqu'un pourrait m'aider

J'ai aussi testé une autre methode qui a priori devrait marcher mais bon :

srcDbf est une Source de Données

SI PAS HOuvreConnexion("ConnectDBF","","",sNomFichier,"",hAccèsNatifXBase,hOLecture) ALORS
Erreur("Pb d'accés au fichier DBF",HErreurInfo())
SINON
Info("La connection a été établie... ca a marché!!!")
reqDbf est une chaîne = "SELECT * FROM OUT"

SI PAS HExécuteRequêteSQL(srcDbf,"ConnectDBF",hRequêteSansCorrection,
"SELECT * FROM OUT") ALORS
Erreur("Impossible d'accéder à la base",HErreurInfo())
SINON
Info("Requete executée avec succès")
FIN
HFermeConnexion("ConnectDBF")
FIN

là encore je reussi a ouvrir le fichier mais le problème est que la requete n'est pas bonne, je pense que le nom de la table est en fait le nom du fichier mais apparement non..

je prefere la premiere methode mais je suis ouvert a toutes propositions.

Merci d'avance
Posté le 06 décembre 2004 - 14:00
> j'essaye d'importer les données d'un fichier DBF mais j'ai quelques
problèmes..

j'arrive a ouvrir mon fichier et a me positionner sur les enregistrements

mais je n'arrive pas a récupérer les données... voici mon code :
>
===============================================

Tout peut être fait sans programmation - transfert de l'analyse et des
données du même coup et automatiquement.

Depuis l'analyse, le menu Structure de fichiers... Importer des descriptions
de fichiers/tables... lance un assistant qui lit la structure des .dBF et
transfère toutes les données. Plusieurs fichiers peuvent être lus et
transférés en même temps. Fonctionne à merveille.

Curieusement, il me semble me rappeler lors d'une démonstration de Windev
qu'on avait qu'un copier/coller à faire dans l'analyse pour récupérer
l'analyse d'une base autre que HF. Mais cela ne semble pas fonctionner.

Réal Phil
Posté le 06 décembre 2004 - 18:56
Et avec {"OUT.IDENT"} ca donne quoi ?

De plus, mettez Test est une chaine au tout début de votre code
l'appel de cette ligne plusieurs fois dans la boucle peut poser des
problemes ( vous déclarez plusieur fois la variable test. On est pas en
C ici ;) )

Denis wrote:
bonjour a tous,
j'essaye d'importer les données d'un fichier DBF mais j'ai quelques problèmes..

j'arrive a ouvrir mon fichier et a me positionner sur les enregistrements mais je n'arrive pas a récupérer les données... voici mon code :

sNomFichier est le chemin complet du fichier (provenant d'un bouton parcourir)

// j'ouvre l'analyse fourni avec Windev
// car mon fichier n'est pas dans l'analyse de l'appli
SI PAS HInitHF55("C:\syge2td\ForXBase.WDD") ALORS
Erreur(HErreurInfo())
SINON
SI PAS HDBOuvre("DONNEES_OUT","OUT",sNomFichier) ALORS
Erreur("Impossible d'ouvrir le fichier" + sNomFichier)
SINON
Info("Ouverture du fichier " + sNomFichier + " réussie !")

i est un entier
POUR i = 1 A HNbEnr("DONNEES_OUT",hEtatTous)
SI HLit("DONNEES_OUT",i)= Faux ALORS
Erreur("Impossible de lire la ligne " + i)
SINON
test est une chaîne = OUT.IDENT
Info(test)
FIN
FIN
FIN
FIN

voila.. TOUT marche sauf la ligne :
" test est une chaîne = OUT.IDENT "
le programme ne reconnait pas la variable OUT.. pourtant c'est la manière d'accéder aux rubriques (et donc aux données) indiquée dans l'aide de Windev...
je ne comprend pas... si quelqu'un pourrait m'aider

J'ai aussi testé une autre methode qui a priori devrait marcher mais bon :

srcDbf est une Source de Données

SI PAS HOuvreConnexion("ConnectDBF","","",sNomFichier,"",hAccèsNatifXBase,hOLecture) ALORS
Erreur("Pb d'accés au fichier DBF",HErreurInfo())
SINON
Info("La connection a été établie... ca a marché!!!")
reqDbf est une chaîne = "SELECT * FROM OUT"

SI PAS HExécuteRequêteSQL(srcDbf,"ConnectDBF",hRequêteSansCorrection,
"SELECT * FROM OUT") ALORS
Erreur("Impossible d'accéder à la base",HErreurInfo())
SINON
Info("Requete executée avec succès")
FIN
HFermeConnexion("ConnectDBF")
FIN

là encore je reussi a ouvrir le fichier mais le problème est que la requete n'est pas bonne, je pense que le nom de la table est en fait le nom du fichier mais apparement non..

je prefere la premiere methode mais je suis ouvert a toutes propositions.

Merci d'avance
Posté le 06 décembre 2004 - 18:57
Et une chose aussi que je viens de voir :
HDBOuvre("DONNEES_OUT","OUT",sNomFichier) <--- le second parametre (
abréviation ) est sur 2 caracteres et pas 3.

Denis wrote:

bonjour a tous,
j'essaye d'importer les données d'un fichier DBF mais j'ai quelques problèmes..

j'arrive a ouvrir mon fichier et a me positionner sur les enregistrements mais je n'arrive pas a récupérer les données... voici mon code :

sNomFichier est le chemin complet du fichier (provenant d'un bouton parcourir)

// j'ouvre l'analyse fourni avec Windev
// car mon fichier n'est pas dans l'analyse de l'appli
SI PAS HInitHF55("C:\syge2td\ForXBase.WDD") ALORS
Erreur(HErreurInfo())
SINON
SI PAS HDBOuvre("DONNEES_OUT","OUT",sNomFichier) ALORS
Erreur("Impossible d'ouvrir le fichier" + sNomFichier)
SINON
Info("Ouverture du fichier " + sNomFichier + " réussie !")

i est un entier
POUR i = 1 A HNbEnr("DONNEES_OUT",hEtatTous)
SI HLit("DONNEES_OUT",i)= Faux ALORS
Erreur("Impossible de lire la ligne " + i)
SINON
test est une chaîne = OUT.IDENT
Info(test)
FIN
FIN
FIN
FIN

voila.. TOUT marche sauf la ligne :
" test est une chaîne = OUT.IDENT "
le programme ne reconnait pas la variable OUT.. pourtant c'est la manière d'accéder aux rubriques (et donc aux données) indiquée dans l'aide de Windev...
je ne comprend pas... si quelqu'un pourrait m'aider

J'ai aussi testé une autre methode qui a priori devrait marcher mais bon :

srcDbf est une Source de Données

SI PAS HOuvreConnexion("ConnectDBF","","",sNomFichier,"",hAccèsNatifXBase,hOLecture) ALORS
Erreur("Pb d'accés au fichier DBF",HErreurInfo())
SINON
Info("La connection a été établie... ca a marché!!!")
reqDbf est une chaîne = "SELECT * FROM OUT"

SI PAS HExécuteRequêteSQL(srcDbf,"ConnectDBF",hRequêteSansCorrection,
"SELECT * FROM OUT") ALORS
Erreur("Impossible d'accéder à la base",HErreurInfo())
SINON
Info("Requete executée avec succès")
FIN
HFermeConnexion("ConnectDBF")
FIN

là encore je reussi a ouvrir le fichier mais le problème est que la requete n'est pas bonne, je pense que le nom de la table est en fait le nom du fichier mais apparement non..

je prefere la premiere methode mais je suis ouvert a toutes propositions.

Merci d'avance
Posté le 07 décembre 2004 - 10:42
merci pour vos réponses Sébastien B. et Phil !
mon code marche maintenant.


Réponse a Phil : le problème était que je ne voulais justement pas intégrer le/les fichiers dbf à l'analyse, ces fichiers étant "ponctuels" et irréguliers.. enfin, je ne sais pas si j'arrive à me faire comprendre mais bon...

En fait, l'aide de Sébastien B. m'a aidé à résoudre mon problème, j'ai mis l'abréviation sur 2 caractères au lieu de 3 (j'ai essayé sur 3 et effectivment ca ne marche pas) : RO.IDENT et dans ma boucle j'ai mis test = {"RO.IDENT"} et... ca marche !!! MERCI

et oui merci pour la remarque "test est une chaine" dans la boucle, c'est pas top, mais c'était une petite erreur d'inatention.

Merci à vous deux.
a bientot
Posté le 07 décembre 2004 - 12:48
C'est l'oeuf de Christophe Colomb, on a une solution hypersimple offert par PCSOFT et on cherche complique.
En effet structure de fichier marche a merveille et c'est si simple.