30 messaggi dal 13 giugno 2011
Salve, ho la necessità di importare i dati contenuti in un file *.csv al database, ovvero mostrarli a video tramite gridview.

Ho trovato numerose risorse in rete e, utilizzando Visual Web Developers 2010 Express, funziona tutto benissimo; inoltre sono riuscito ad adattare il codice reperito alle mie esigenze.
Il problema è sorto dopo la pubblicazione sul server di produzione, che si trova su una intranet, ed utilizza come sistema operativo W 2003 SP2 - SQL 2000.

Sostanzialmente il codice che ho reperito svolge le seguenti operazioni:
1.upload del file csv
2.lettura dei dati dal file caricato
3.creazione del datatable
4.inserimento dei dati caricati in memoria nel db

Quando effettuo ciò dalla rete aziendale invece, dopo aver eseguito l?upload del file mi viene segnalato l?errore:

?Column 'Nome' does not belong to table?
Dove ?Nome? dovrebbe essere la prima Colonna del datatable.
Il file viene correttamente scritto/caricato nella directory dell?applicazione.

Ho inserito quindi un gridview e, dopo la lettura dei dati dal file csv, lo popolo con il datatable.
Il gridview effettivamente contiene i dati prelevati dal file csv che ho selezionato, ma non le colonne, e mi viene mostrato a video in maniera disordinata; tra una parole e l?altra, che dovrebbero corrispondere ai nomi delle colonne, c?è la virgola, cioè come se il codice non intrerpretasse la virgola come delimitatore, cosa che invece non accade quando utilizzo Visual Web Developers 2010 Express, in quanto, oltre ad importare correttamente i dati nel Db, il gridview viene mostrato correttamente.


Ieri ho trovato anche un altro semplicissimo codice che sostanzialmente carica un file csv. e popola un gridview; anche in questo caso con Visual Web Developers 2010 Express funziona benissimo e con il server di produzione no, cioè il gridview non viene caricato e restituisce questo errore:

Could not find a part of the path 'C:\Users\XXXXXXXX\Desktop\GridViewExport.csv'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\XXXXXXXX\Desktop\GridViewExport.csv'.

Source Error:


Line 19: Private Function ReadToEnd(filePath As String) As Object
Line 20: Dim dtDataSource As New DataTable()
Line 21: Dim fileContent As String() = File.ReadAllLines(filePath)
Line 22: ' Dim fileContent As String() = File.ReadAllLines(Server.MapPath(""))
Line 23: If fileContent.Count() > 0 Then


Source File: C:\Documents and Settings\Administrator\Desktop\Scadenzario\rubrica\test.aspx.vb Line: 21

Grazie
30 messaggi dal 13 giugno 2011
Ho risolto il mistero;
l'errore era causato dalle differenti impostazioni internazionali tra i due SO utilizzati e il delimitatore predefinito nella chiave di registro del W 2003, utilizzato in azienda, è il ';' punto e virgola e non ',' la virgola.

Praticamente il delimitatore scritto nel codice che riporto sotto viene completamente ignorato e viene considerato solo il valore indicato nella chiave di registro; è bastato sostituirlo ed ha funzionato tutto (cioè nel codice potete inserire quello che volete, punto, virgola, punto e virgola, etc ma non verrà considerato):

strConnString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath(strPath) & _
";Extended Properties='TEXT;HDR=Yes;FMT=Delimited;Format=Delimited(,)'"

La chiave in questione è (come riportato qui: http://www.connectionstrings.com/textfile#p20):

The delimiter can be specified in the registry at the following location:<br/> HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Jet \ 4.0 \ Engines \ Text <br/> "Format" = "TabDelimited"<br/> or<br/> "Format" = "Delimited(;)"<br/>

La dritta giusta l'ho trovata qui: http://forum.aspitalia.com/forum/post/353671/File-CSV-OleDB.aspx

saluti
Sto impazzendo con lo stesso problema E PURTROPPO non posso adoperare la tua soluzione perchè, il mio sito web, stando su Server ARUBA, non mi consente la modifica del registro. Ci sono delle soluzioni alternative?

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.