PDA

View Full Version : [vb6] lettura file


vityospi
04-10-2007, 12:18
ciao ragazzi ho questo problema:
sto leggendo un file sequenziale asci con vb,
il problema che quando nel record è presente una virgola, il mio buffer di lettura viene tagliato all'altezza della virgola e non del fine record!!!!

aiuto!!

vi allego codice:
iF_in = FreeFile
Open File1.Path & "\" & File1.FileName For Input As iF_in

While Not (EOF(iF_in))
Input #iF_in, sRowIn

Select Case Mid(sRowIn, 1, 2)

Case "02" 'Intestatario
MyFattureTelecom.Intestatario = Mid(sRowIn, 3, 60)
MyFattureTelecom.ViaInt = Mid(sRowIn, 63, 30)
MyFattureTelecom.CapInt = Mid(sRowIn, 93, 5)
MyFattureTelecom.CittaInt = Mid(sRowIn, 98, 25)
MyFattureTelecom.NumImpianto = Mid(sRowIn, 123, 10)


Case "04" 'Dettagli fattura
MyDettFattureTelecom.CodDettaglio = Mid(sRowIn, 7, 4)
MyDettFattureTelecom.Valore = Mid(sRowIn, 32, 12)
InsertDettaglio

Case "99" 'piede fattura

If Mid(sRowIn, 3, 1) = "1" Then '1 piede fattura, 2 piede file

MyFattureTelecom.TotaleIva = Mid(sRowIn, 5, 12)
MyFattureTelecom.TotaleFattura = Mid(sRowIn, 18, 12)

InsertFattura

DoEvents
End If
End Select
Wend

okay
04-10-2007, 16:11
ciao ragazzi ho questo problema:
sto leggendo un file sequenziale asci con vb,
il problema che quando nel record è presente una virgola, il mio buffer di lettura viene tagliato all'altezza della virgola e non del fine record!!!!

aiuto!!

vi allego codice:
iF_in = FreeFile
Open File1.Path & "\" & File1.FileName For Input As iF_in

While Not (EOF(iF_in))
Input #iF_in, sRowIn

Select Case Mid(sRowIn, 1, 2)

Case "02" 'Intestatario
MyFattureTelecom.Intestatario = Mid(sRowIn, 3, 60)
MyFattureTelecom.ViaInt = Mid(sRowIn, 63, 30)
MyFattureTelecom.CapInt = Mid(sRowIn, 93, 5)
MyFattureTelecom.CittaInt = Mid(sRowIn, 98, 25)
MyFattureTelecom.NumImpianto = Mid(sRowIn, 123, 10)


Case "04" 'Dettagli fattura
MyDettFattureTelecom.CodDettaglio = Mid(sRowIn, 7, 4)
MyDettFattureTelecom.Valore = Mid(sRowIn, 32, 12)
InsertDettaglio

Case "99" 'piede fattura

If Mid(sRowIn, 3, 1) = "1" Then '1 piede fattura, 2 piede file

MyFattureTelecom.TotaleIva = Mid(sRowIn, 5, 12)
MyFattureTelecom.TotaleFattura = Mid(sRowIn, 18, 12)

InsertFattura

DoEvents
End If
End Select
Wend










Non usare input ma line input



ciao

mynos79
04-10-2007, 18:28
Input prende la riga e la suddivide in record separati dal separatore virgola e li assegna alle variabili che seguono il comando input ... se imposti un' unica variabile input prende solo il primo record ...

Line input invece prende tutta la riga e la assegna alla variabile, poi sta a te a suddividere la stringa con le solite funzioni mid, etc etc ...