|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
| 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. |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|