19 messaggi dal 02 febbraio 2006
Ciao a tutti, su questo argomento si trovano vari esempi in rete, tuttavia non riesco a risolvere un problema che io ho.

Ho una cartella con i miei files .DBF nella cartella C:\DBF; si tratta di files DBASE III.

Per aprire il database utilizzo il seguente codice:


 
Dim ReadSRC As OleDbDataReader 
Dim cmdOLEDB As OleDbCommand 
Dim ConnSRC As New OleDbConnection 
Dim SQLSrc As String = "" 
 
ConnSRC.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\DBF;Extended Properties=DBASE III;User ID=Admin;Password=;" 
 
Try 
  ConnSRC.Open() 
Catch ex As Exception 
  MsgBox("Errore DB Origine: " & ex.Message, MsgBoxStyle.Critical) 
End Try 
 


...e fin qui tutto bene. Ora però provo a leggere un record....
Finché il campo in questione è TESTO non ho problemi, ma gia un campo char mi legge un carattere strano: esempio mi legge "<" dal campo che contiene al massimo i valori "D", "N", "A".
Ho controllato il contenuto del database tramite un programmino (DBF VIEWER) che ho trovato in rete, e in effetti il contenuto del campo me lo visualizza correttamente! (Ho controllato lo stesso record che provo a prelevare).

Quindi sono io che sbaglio qualcosa?
Ecco cosa faccio per leggere il Record:
 
Dim Tempo as String = "" 
Dim cmdOLEDB as New OleDbCommand("SELECT * FROM ECOPRO", ConnSRC) 
ReadSRC = cmdOLEDB.ExecuteReader 
Do While ReadSRC.Read 
    Tempo=ReadSRC("ECODIS") 'Mi restituisce "<" invece di "D" 
Loop 
ReadSRC.Close 
cmdOLEDB.Dispose() 


Spero di aver riportato tutto correttamente...
DA NOTARE: se leggo invece del campo "ECODIS" (di tipo CHAR, lungh=1) provo a leggere il campo "ECOCOD" (di tipo char, lungh=10), tutto fila liscio!
Ho invece problemi nella lettura dei valori numerici.
AIUTO!

Buona Giornata
Dario.
Modificato da skini82 il 15 settembre 2009 17.24 -
Molto probabilmente è un problema di encoding allora. Usando ReadSRC("qualcosa") vai dedurre il tipo dal provider che potrebbe sbagliare. Probabilmente lui alla fine fa un ReadSRC.GetChar o ReadSRC.GetString usando l'encoding ASCI o Unicode, dipende.
Io proverei ad usare GetBytes per riempire un array di byte e provare a fare una decodifica con i vari encoding:
byte[] data = new byte[1000];
int n = ReadSRC.GetBytes(indiceColonna, 0, data, 0, data.Length);
System.Text.Encoding.ASCII.GetString(data, 0, n)

Puoi provare ASCII, Unicode, UTF8, UTF7 ecc

Ciao

Il mio blog
Homepage

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.