Questo codice non va sempre errore di file no presente...

martedì 03 febbraio 2009 - 16.16

yag Profilo | Junior Member

Public Function getConnectionCsvFile(ByVal filename As String) As OleDb.OleDbConnection

Dim directory = IO.Path.GetDirectoryName(filename)
Dim nomefile = IO.Path.GetFileName(filename)
If Not directory.EndsWith("\") Then directory += "\"

If Not System.IO.File.Exists(directory + nomefile) Then
MessageBox.Show("File inesistente")
Exit Function
End If

filename = filename.Replace("\\", "\\\\") 'anche se levo questa riga nn funziona

Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='text;HDR=Yes;FMT=TabDelimited;';Data Source=" & filename
Dim conn As New OleDb.OleDbConnection(strConn)

Dim fFile1 As New IO.FileInfo(filename)

'creazione schema.ini (Necessario per il corretto riconoscimento del separatore, in questo caso il carattere tab)

Dim oFile As System.IO.File
Dim oWrite As System.IO.StreamWriter
oWrite = IO.File.CreateText(fFile1.DirectoryName & "\schema.ini")
oWrite.WriteLine("[" & fFile1.Name & "]")
oWrite.WriteLine("Format=Delimited(;)")
oWrite.Close()

conn.Open()
Return conn
End Function

non capisco come risolvere

Jeremy Profilo | Guru

Queste due righe,secondo me, hanno un problema:
>Dim directory = IO.Path.GetDirectoryName(filename)
>Dim nomefile = IO.Path.GetFileName(filename)

Ora non posso fare delle prove, però ti posso dire cosa farei io.


Fermati in debug a questa riga:
>If Not System.IO.File.Exists(directory + nomefile) Then
e controlla nella finestra immediata il valore di directory e nomefile.

Comunque stasera provo anche io e poi....ti faccio sapere.
Ciao.

yag Profilo | Junior Member

ho risolto il problema era che facevo la connessione e davo
il path completo di file, invece lo vuole solo a livello di directory.

però ora ho un altro problema nn capisco quali sono i "limiti" a livello di sql

devo fare un filtro su una data uso CDate ma da errore...

Jeremy Profilo | Guru

>però ora ho un altro problema nn capisco quali sono i "limiti" a livello di sql
>devo fare un filtro su una data uso CDate ma da errore...

Spiegati meglio.

yag Profilo | Junior Member

Nel senso devo fare una query usando dei campi presi da un csv in formato
data gg/mm/aaaa e mi da errore...

Io come criterio usavo

select ... from ... where [miocampodata]=CDate(valorepesodalcsvrigacorrente)

Jeremy Profilo | Guru

Scritta così...suppongo tu intendessi:
SqlString="select ... from ... where [miocampodata]=CDate(valorepesodalcsvrigacorrente)"
e non funzionerebbe di sicuro.....
Se invece tu intendevi:
SqlString="select ... from ... where miocampodata=#" & CDate(valorepesodalcsvrigacorrente) & "#"
allora forse funziona.

Facci sapere...
Ciao

yag Profilo | Junior Member

Questa è la query che faccio!

sql = "SELECT Min([N]) AS MINx, Max([N]) AS MAXx FROM [aa.csv] WHERE aa.csv.Data creazione=#01/01/2000#"

Mi da ora il messaggio di errore "nessun valore specificato nei parametri"

Jeremy Profilo | Guru

Prova un pò così:
sql = "SELECT Min([N]) AS MINx, Max([N]) AS MAXx FROM [aa.csv] WHERE [aa.csv.Data creazione]=#01/01/2000#"

facci sapere...
ciao

yag Profilo | Junior Member

quelle combinazioni le ho provate tutte...
Ma la cosa che mi ha risolto il problema è stato usare l'alias

from table as t ...
where
t.[nomecampo] > ....
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5