La prima che mi viene in mente è quella di usare il driver di testo che sfrutta lo Schema.ini:
Schema.ini File (Text File Driver)
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Ecco un esempio.
Questo è il contenuto del file SCHEMA.INI (che deve risiedere nella cartella di destinazione):
codice:
[DL-IMA-PUSH.csv]
ColNameHeader=False
Format=FixedLength
MaxScanRows=0
CharacterSet=ANSI
col1=DataOra Text Width 20
col2=Tipo Text Width 6
col3=Desc Text Width 100
- txtTargetFolder contiene la cartella di destinazione
- l'estensione del file deve essere modificata in CSV, altrimenti ti da errore.
codice:
Imports System
Imports System.Data
Imports System.IO
Imports System.Data.OleDb
Public Class Form1
Private Sub btnImport_Click(sender As Object, e As EventArgs) Handles btnImport.Click
'D:\DL-IMA-PUSH.log
Dim targetFile As String = "DL-IMA-PUSH.csv"
Dim LogFile As String = txtTargetFolder.Text + "\" + targetFile
File.Delete(LogFile)
File.Copy("D:\DL-IMA-PUSH.log", LogFile)
Dim fi As FileInfo = New FileInfo(LogFile)
Dim sFolderPath As String = fi.DirectoryName() '+ "\"
Dim sConnString As String = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & sFolderPath & ";Extended Properties='Text;HDR=NO;'"
Dim sql As String = "SELECT DataOra, Tipo, Desc FROM [" & targetFile & "]"
sql = sql + " WHERE CDate(Left(DataOra, 10)) >= #05/01/2014#"
Using connJET As OleDbConnection = New OleDbConnection(sConnString)
Try
connJET.Open()
Dim aCommand As OleDbCommand = New OleDbCommand(sql, connJET)
Using aReader As OleDbDataReader = aCommand.ExecuteReader()
While aReader.Read()
ListBox1.Items.Add(aReader.GetString(0) + " " + aReader.GetString(1) + " " + aReader.GetString(2))
End While
End Using
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Using
End Sub
End Class
Ho aggiunto alcune righe a quelle che hai postato tu, cambiando la data e funziona.
Avevo anche provato ad impostare il primo campo DataOra come tipo DateTime, ma mi restituiva errore.
Come vedi, la condizione WHERE ti permette di caricare solo le righe che ti interessano.
Poi ci si può lavorare su...