PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → lecture csv petit problème
lecture csv petit problème
Iniciado por Max, 15,ago. 2019 16:55 - 2 respuestas
Miembro registrado
40 mensajes
Publicado el 15,agosto 2019 - 16:55
Bonjour,

Je gère des cartes Sim avec des numéros IMSI.
Dans un champ table (table_import), j'ai une liste de numéros IMSI à 15 caractères.
Dans un fichier csv (mcc.csv), j'ai dans une 1ere colonne les 5 caractères(mcc+mnc) des opérateurs mondiaux et dans une 2ème colonne le nom de l'opérateur associé, en 3 le pays.
Quand je clique sur une ligne de ma table, je veux que ca aille lire dans le csv.
Le fonctionnement, regarder dans la 1ere colonne du csv et quand cela trouve la valeur = au 5 premier caractères de ma colonne IMSI de ma table, cela me renvoie le nom de l'operateur dans un libelle (ch_operateur).
Le code ci-dessous fonctionne à merveille sauf dans le cas ou je clique sur une ligne où les 5 premiers caractères ne sont pas trouvés dans le csv. Normal, je ne l'ai pas géré car je ne sais pas comment faire.
3 possibilité donc:
1) Trouvé, donc cela renvoie l'opérateur -> ok
2) Dans le champ IMSI de ma table, je n'ai pas d'ISMI mais N/A -> ok
3) Les 5 premiers caractères de mon IMSI n'ont pas été trouvés dans le csv, doit effacer le contenu du champ (ch_operateur) et c'est là que je "merde"
Merci pour votre aide

nNumFichier est un entier
sLigneLue est une chaîne
NomCheminFichier est une chaîne
Ref_IMSI est une chaîne

// Sélection du nom et du chemin du fichier
NomCheminFichier =fRepEnCours()+"\"+"mcc.csv"

// Ouverture du fichier
nNumFichier = fOuvre (NomCheminFichier, foLecture)

SI nNumFichier <> -1 ALORS
sLigneLue = fLitLigne(nNumFichier) // Lecture de la ère ligne
TANTQUE sLigneLue <> EOT // Test de la fin de fichier
Ref_IMSI=ExtraitChaîne(sLigneLue,1,";")
// Traitement de la ligne
SI Gauche(table_import.IMSI,5)=Ref_IMSI ALORS
ch_operateur=(ExtraitChaîne(sLigneLue,2,";"))+" "+(ExtraitChaîne(sLigneLue,3,";"))
SINON SI table_import.IMSI="N/A" ALORS
ch_operateur="Correspondance non trouvée"
FIN

// Lecture de la ligne suivante
sLigneLue = fLitLigne(nNumFichier)
FIN
fFerme(nNumFichier)
SINON
Info("Le fichier mcc.csv n'existe plus...")
FIN
Mensaje modificado, 15,agosto 2019 - 17:14
Miembro registrado
1.640 mensajes
Publicado el 16,agosto 2019 - 10:27
Hello,

Ce petit bout de code devrait t'aider, à adapter :
sTexte est une chaîne = fChargeTexte(sCheminCSV)
vcLigneCSV est composée de
sMCC est une chaine sur 5
sOperateur est une chaîne
sPays est une chaîne
FIN

POUR TOUTE chaîne sLigne de sTexte SEPAREE PAR RC
vcLigneCSV.sMCC = ExtraitChaîne(sLigne,1,";")
vcLigneCSV.sOperateur = ExtraitChaîne(sLigne,2,";")
vcLigneCSV.sPays = ExtraitChaîne(sLigne,3,";")
SI Gauche(table_import.IMSI,5)=vcLigneCSV.sMCC ALORS
ch_operateur= vcLigneCSV.sOperateur+" "+vcLigneCSV.sPays
RENVOYER Vrai // va stopper le traitement
FIN
FIN

// Ici tu ajoute traitement si rien trouvé, ne sera pas executé si sMCC a été trouvé
Miembro registrado
40 mensajes
Publicado el 16,agosto 2019 - 11:11
Bonjour François, un grand merci, ton code fonctionne à merveille
Bonne journée