|
Débuté par guest, 01 fév. 2006 17:27 - 6 réponses |
| |
| | | |
|
| |
Posté le 01 février 2006 - 17:27 |
Bonjour,
Je souhaite extraire des données lignes par lignes d'un fichier texte pour les implanter directement dans la base de données hyperfile. J'utilise extraitchaine(). Je n'arrive pas à extraire entierement le réel, alors que le séparateur est ";" et la séparation des entiers/décimal est ",".
Voici mon code:
//ouverture du fichier achaart.txt indicefichier = fOuvre(repertoire_txt + "achaart.txt") //gestion d'erreur de l'ouverture du fichier achaart.txt SI indicefichier = -1 ALORS Erreur("Impossible d'ouvrir le fichier achaart.txt" + RC + ErreurInfo(errMessage)) SINON //écriture des données dans la table achaart texte = fLitLigne(indicefichier) TANTQUE texte <> EOT Achaart.artref = ExtraitChaîne(texte,1,";") Achaart.artpie = ExtraitChaîne(texte,2,";") Achaart.artqtf = ExtraitChaîne(texte,3,";") Achaart.artsli = ExtraitChaîne(texte,4,";") Achaart.artes = ExtraitChaîne(texte,5,";") Achaart.artlia = ExtraitChaîne(texte,6,";") HAjoute(Achaart) texte = fLitLigne(indicefichier) FIN
Exemple: La ligne est : 145000;008;52,30;;10/01/2006;L;
Quand j'extrais les chaines, elles me donnent ceci : artref = 145000 artpie = 008 artqtf = 52 //la chaine ne prend que la partie entière artsli = artes = 10/01/2006 artlia = L
Comment je peux faire pour que artqtf = 52.30 et pas 52. |
| |
| |
| | | |
|
| | |
| |
Posté le 01 février 2006 - 17:55 |
Quand mon champ artqtf est déclaré du type chaine, tout se passe bien,artqtf = 52.30
Quand je le déclare du type numérique(réel sur 4 octets), artqtf = 52 |
| |
| |
| | | |
|
| | |
| |
Posté le 01 février 2006 - 18:19 |
salut
je vois une soluce qui consiste à récupérer extraitchaine(texte,3,";") dans une chaine
faire un remplace(chaine,",",".") // remplacer virgule par point
et ensuite faire artqtf=chn |
| |
| |
| | | |
|
| | |
| |
Posté le 01 février 2006 - 19:09 |
Fabien a écrit :
Quand mon champ artqtf est déclaré du type chaine, tout se passe bien,artqtf = 52.30
Quand je le déclare du type numérique(réel sur 4 octets), artqtf = 52
attention : tu importes 52,30 donc ton réel ne comprend pas la virgule. peut-être avec : Achaart.artqtf = val(remplace(ExtraitChaîne(texte,3,";"),",","."))
-- Jacques Trepp Albygest - 81160 - St Juery jacques-pas de spam.trepp@free.fr (enlever '-pas de spam' pour me joindre) http://www.albygest.com |
| |
| |
| | | |
|
| | |
| |
Posté le 01 février 2006 - 19:09 |
Achaart.artqtf = Val(ExtraitChaîne(texte,3,";")) |
| |
| |
| | | |
|
| | |
| |
Posté le 02 février 2006 - 10:48 |
andrianne a écrit : > Achaart.artqtf = Val(ExtraitChaîne(texte,3,";"))
non. ça renvoie 52. aaa est une chaine = "52,30" bbb est un reel = val(aaa) info(bbb) donne 52
-- Jacques Trepp Albygest - 81160 - St Juery jacques-pas de spam.trepp@free.fr (enlever '-pas de spam' pour me joindre) http://www.albygest.com |
| |
| |
| | | |
|
| | |
| |
Posté le 02 février 2006 - 11:43 |
Merci a tous, la solution avec remplace(chaine,",",".") marche très bien. Le champ table affcihe même 52,30 sans lui demander de remplacer le "." par une "," .
Bon Dev a tous |
| |
| |
| | | |
|
| | | | |
| | |
|