Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Grazie ad un mocio rotante che viene costantemente bagnato e pulito, Narwal Flow assicura un completo e capillare lavaggio dei pavimenti di casa. La logica di intellignza artificiale integrata guida nella pulizia tra i diversi locali, sfruttando un motore di aspirazione molto potente e un sistema basculante per la spazzola molto efficace sui tappeti di casa
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi
Con un prezzo di 2.999 euro, il Panasonic Z95BEG entra nella fascia ultra-premium dei TV OLED: pannello Primary RGB Tandem, sistema di raffreddamento ThermalFlow, audio Technics integrato e funzioni gaming avanzate lo pongono come un punto di riferimento
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-09-2007, 09:15   #1
Duce
Senior Member
 
L'Avatar di Duce
 
Iscritto dal: May 2007
Messaggi: 1374
[VB .NET Express] Errore caricamento colonna da file CSV

Buongiorno a tutti, sto creando un'applicazione che prende un file CSV (che usa la , come separatore) e lo inserisce in una tabella SQL. Il mio problema è che quando leggo una colonna nel file del tipo " ,SETTORE TIPO "A" USD, " non riesco + a laggere le colonne successive nel file, in quanto il read() si blocca appena trova nella stringa il carattere ".

Il codice usato è il seguente:
Dim ConnectionString As String = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" & Me.txtDir.Text & ";Extended Properties=Text;FMT=Delimited"

.
.
csvCommand.CommandText = "select * from " & file & ""
csvCommand.CommandType = CommandType.Text
csvReader = csvCommand.ExecuteReader()
.
.
Do While csvReader.Read()
.
.
csvReader(4).ToString().Trim() 'Comando usato per leggere la quarta colonna nel file, quella che mi da problemi.
.
.
loop


Conoscete un modo per poter specificare il fine campo esattamente con la "," in modo da fargli prendere tutto ciò che è compreso tra due "," consecutive?.

Grazie
__________________
“Meglio morire una volta sola, che temere la morte tutta la vita.” (Giulio Cesare)
Duce è offline   Rispondi citando il messaggio o parte di esso
Old 18-09-2007, 09:36   #2
Lehendakari
Member
 
Iscritto dal: Nov 2006
Messaggi: 34
Basta che sostituisci tutte le virgolette del testo (chr(39)) con il doppio apice
Lehendakari è offline   Rispondi citando il messaggio o parte di esso
Old 18-09-2007, 09:38   #3
Duce
Senior Member
 
L'Avatar di Duce
 
Iscritto dal: May 2007
Messaggi: 1374
Il testo mi viene fornito così com'è, non posso modificarlo prima.
__________________
“Meglio morire una volta sola, che temere la morte tutta la vita.” (Giulio Cesare)
Duce è offline   Rispondi citando il messaggio o parte di esso
Old 18-09-2007, 09:49   #4
Lehendakari
Member
 
Iscritto dal: Nov 2006
Messaggi: 34
Non devi modificare il testo che ti passano, semplicemente prima di far partire le operazioni di lettura / query sql gli fai rimpiazzare i caratteri che danno problemi, ad esempio
Testo2=replace(TestoPassato, chr(39),"''")
e poi vai ad operare sul Testo2. In questo modo lasci inalterato il testo che ti arriva, ma nel momento in cui devi leggere i valori non trovi più le virgolette
Lehendakari è offline   Rispondi citando il messaggio o parte di esso
Old 18-09-2007, 11:29   #5
Duce
Senior Member
 
L'Avatar di Duce
 
Iscritto dal: May 2007
Messaggi: 1374
Nel frattempo ho cambiato un pò le cose sperando di risolvere qualcosa ma non ho avuto fortuna. Ho letto anche che per risolvere il problema dovrei creare un file schema.ini presente nella cartella dei file .csv. Il problema è che non ho un solo file .csv e il nome cambia ogni giorno.

Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Me.txtDir.Text + ";Extended Properties='Text;HDR=No;Format=CSVDelimited'"

Dim csvConnection As New System.Data.OleDb.OleDbConnection(ConnectionString)
csvConnection.Open()


For Each file In files
Dim csvCommand As New System.Data.OleDb.OleDbDataAdapter("Select * from " & file, csvConnection)

Dim ds As DataSet = New DataSet("CSVFiles")

csvCommand.FillSchema(ds, SchemaType.Source, "CSV_FILE")
csvCommand.Fill(ds, "CSV_FILE")

Dim tblCSV As DataTable
tblCSV = ds.Tables("CSV_FILE")

Dim drc As DataRowCollection = tblCSV.Rows
Dim drNew As DataRow
Try
Dim numRighe As Integer = drc.Count
MsgBox("Numero righe nel file: " & numRighe)
Dim j As Integer
j = 0

Do While j < numRighe
drNew = drc.Item(j)

For i = 1 To 6
record_str = record_str & drNew(i) & ControlChars.NewLine
Next i
MsgBox(record_str, MsgBoxStyle.Information)
record_str = "Record" & ControlChars.Cr
j = j + 1
Loop


csvConnection.Close()
tblCSV.Dispose()
Catch ex As Exception
MsgBox("Errore nel caricamento dati dal file " & file & ": " & ex.Message)
End Try

Next

Per fare la modifica che tu mi dici dovrei modificare ogni riga , di ogni file, prima di effettuare la query?
__________________
“Meglio morire una volta sola, che temere la morte tutta la vita.” (Giulio Cesare)
Duce è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2007, 10:48   #6
Duce
Senior Member
 
L'Avatar di Duce
 
Iscritto dal: May 2007
Messaggi: 1374
Ho trovato 1 soluzione, non mi piace ma funziona:
For Each file In files
Dim lines() As String
Dim ss As String
Dim j As Integer
lines = IO.File.ReadAllLines(file)
Dim strSplit() As String
For i = 1 To lines.Length - 1
ss = lines(i)
strSplit = ss.Split(",")
For j = 0 To strSplit.Length - 1
record_str = record_str & strSplit(j) & ControlChars.NewLine
Next j
record_str = "Record" & ControlChars.Cr
Next i
Next
__________________
“Meglio morire una volta sola, che temere la morte tutta la vita.” (Giulio Cesare)
Duce è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione HONOR Magic V5: il pieghevole ultra sottile e co...
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro) Recensione Google Pixel 10 Pro XL: uno zoom 100x...
Arrivano le eSIM per iliadbusiness, l'of...
iPhone 17 e 17 Pro senza SIM fisica: non...
Hollow Knight: Silksong, primo record sp...
Public VCF as-a-Service, il nuovo serviz...
GAC annuncia il suo ingresso in Europa: ...
Un rene di maiale potrebbe salvarti la v...
Batterie al litio in aereo, la FAA lanci...
HONOR Magic V5: un tablet a portata di s...
Se non rientrate nei requisiti, non aspe...
È ora di aggiornare Windows 11: c...
Messico: 'aumentare le tasse sui videogi...
Prezzi Amazon a picco: come aggiornare i...
NVIDIA Rubin CPX con 128 GB GDDR7: 30 Pe...
smart #5 Brabus, primo contatto con la s...
Tineco presenta il futuro della pulizia ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:24.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v