Fichier csv

lmb19 Messages postés 22 Date d'inscription lundi 21 novembre 2005 Statut Membre Dernière intervention 18 mai 2013 - 25 mars 2007 à 16:01
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 - 30 mars 2007 à 21:51
Bonjour,

Je suis debutant en VB et j'utilise eMbedded Visual Basic 3.0

Avant en VB j'utilisait :
Open "c:\data.csv" For Input As #1
Do While Not EOF(1)
Input #1, Nom, Prenom, Couleur, score
Loop
Close #1

Mais avec eMbedded Visual Basic 3.0 cela ne fonctionne pas

Si quelqu'un connait l'equivalent du code ci-dessus qui pourrait fonctionner sous eMbedded Visual Basic 3.0, je suis preneur

Merci

11 réponses

cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
26 mars 2007 à 21:41
Une fonction split te permettra de séparer tes différentes valeurs

Juste faites-le
0
lmb19 Messages postés 22 Date d'inscription lundi 21 novembre 2005 Statut Membre Dernière intervention 18 mai 2013 1
27 mars 2007 à 10:13
C'est un peu court jeune homme... on pourrait dire bien des choses en somme....

Je suis peut-être un peu exigeant, mais en admettant que j'utilise la fonction split, quelle fonction dois-je utiliser pour extraire les données

Pourrais-tu être plus précis sur ta réponse

Si tu as quelques lignes avec un exemple concret

Merci d'avance
0
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
27 mars 2007 à 18:33
désolé le split sera pour .net
pour evb
Dim Fic As FILECTL.File

Dim Ligne As Variant

Dim Nom, Prenom as string

Dim Score as integer

Set Fic = CreateObject("FILECTL.File")

Call Fic.Open(MonFichier, fsModeInput, fsAccessRead, fsLockReadWrite)

Do While Not Fic.EOF

 Ligne = Fic.InputFields(3)

 Nom = CStr(Ligne(0))

 Prenom = Cstr(Ligne(1))

 Score = CInt(Ligne(2))

'Tu traites l'info ici ligne par ligne

Loop

Call Fic.Close

Cela doit fonctionner
0
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
27 mars 2007 à 18:34
désolé le split sera pour .net
pour evb
Dim Fic As FILECTL.File

Dim Ligne As Variant

Dim Nom, Prenom as string

Dim Score as integer

Set Fic = CreateObject("FILECTL.File")

Call Fic.Open(MonFichier, fsModeInput, fsAccessRead, fsLockReadWrite)

Do While Not Fic.EOF

 Ligne = Fic.InputFields(3)

 Nom = CStr(Ligne(0))

 Prenom = Cstr(Ligne(1))

 Score = CInt(Ligne(2))

'Tu traites l'info ici ligne par ligne

Loop

Call Fic.Close

Cela doit fonctionner
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Baguauda Messages postés 219 Date d'inscription mercredi 31 août 2005 Statut Membre Dernière intervention 28 novembre 2008 1
27 mars 2007 à 22:33
tu radotes ^^
0
lmb19 Messages postés 22 Date d'inscription lundi 21 novembre 2005 Statut Membre Dernière intervention 18 mai 2013 1
29 mars 2007 à 09:53
Tout d'abord merci Stephane33, pour ton aide.

Neanmoins, je rencontre un problème.

En regardant le code :
Ligne = Fic.InputFields(3)

On imagine une separation en trois champs

Puis

Nom = CStr(Ligne(0))
Prenom = Cstr(Ligne(1))
Score = CInt(Ligne(2)

L'extraction des champs de cette ligne se fait dans 3 variables.

mais en faite dans chaque variable, il ne met pas la separation des champs
de la ligne mais la ligne entière

autrement dit:
Nom=Martin;Paul;280
Prenom=Tchang;Lou;100
Score=Bernard;Luc;70

Cdlt
0
lmb19 Messages postés 22 Date d'inscription lundi 21 novembre 2005 Statut Membre Dernière intervention 18 mai 2013 1
29 mars 2007 à 10:07
Re-bonjour,

J'ai trouvé la solution :

Je fais un

Ligne = Fic.InputFields( 1 )
data = CStr(Ligne(0))

puis je split la ligne comme tu me le conseillais tout au début

datasplit = Split(data, ";")

merci bien pour ton aide

A+
0
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
29 mars 2007 à 19:27
De mémoire il faut prendre en compte le séparateur de liste dans les Paramètre régionnaux/ (Paramètre/Système) du PDA, par défaut c'est la virgule, il faut y mettre le point virgule.
Sinon tu splites tout simplement tes lignes, alors une lecture simple suffit sinon change les paramètres régionnaux de ton PDA ou met une virgule comme séparateur dans ton fichier CSV

Juste faites-le
0
lmb19 Messages postés 22 Date d'inscription lundi 21 novembre 2005 Statut Membre Dernière intervention 18 mai 2013 1
29 mars 2007 à 22:08
Par contre j'ai decouvert la rapidité de traitement des PDA. . . . .

La Base de données que j'utilise comporte environ 3000 lignes.

Alors quand ma recherche est dans les 1er ligne c'est rapide mais dans les dernières l'attente est longue.
0
lmb19 Messages postés 22 Date d'inscription lundi 21 novembre 2005 Statut Membre Dernière intervention 18 mai 2013 1
29 mars 2007 à 23:21
Désolé..euh j'ai encore un autre problème..

Habituellement j'utilise la fonction Val() qui apparement n'existe pas sous VB embedded 

Je declare une variable :
a As String
b As Integer

La variable : a  , va voir defiler des données differentes , exemple
1;2;38
18999
azzeerr
12azze
13000

Je voudrais que qd cette donnée peut être convertie en numerique elle le soit sinon on renvoi zero

Avec la fonction val(), il suffisait de faire :
a=azzzeer
b=val(a) on obtenait b=0 (en numerique)
a=13000
b=val(a) on obtenait b=13000 (en numerique)

Connais-tu une solution

Merci
0
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
30 mars 2007 à 21:51
Pour le Traitement : L'accès aux fichiers et beaucoup beaucoup plus rapide sous .net
Je ne connais pas cette fonction Val()  c'est pour convertir un string en Entier Cint(a) par contre crée-toi ta propre fonction par exemple Cint2() qui prend en charge une erreur de conversion
0
Rejoignez-nous