MaxScanRows e lettura di un file Excel tramite una connessione ADO

Questo per segnalare, magari è la scoperta dell'acqua calda che il parametro MaxScanRows non funziona correttamente.
 
Il parametro impostato a zero dovrebbe consentire la lettura di tutto il file per determinare il tipo di ogni colonna.
 
E' il caso di una particolare colonna che ha ad esempio quasi sempre valori numerici e contiene anche qualche valore testuale.
 
Se durante lo "scan" delle righe ADO decide che una particolare colonna contiene valori numerici quando incontrerà dei valori anomali li salterà immettendo dei null nel nostro record "importato" al posto del valore anomalo.
 
Un esempio, inserire un nuovo foglio con 2 colonne intestate es: Codice Descrizione
Sulla colonna "Codice" immettiamo 30 righe 29 con valori numerici, uno con un valore testuale sulla Descrizione immettiamo dei valori.
 
Se poi importiamo i dati su access si potrà notare che le righe sono importate con il null ed eventualmente anche con le segnalazioni di errore ed il campo "Codice" di Access (nella struttura) è considerato "numerico".
 
Se ritorniamo nel foglio e cambiamo nella colonna "Codice" una riga fino alla 26 (sulla 1 c'è il titolo della colonna), tutte le righe sono importate correttamente ed il campo creato sulla tabella è di tipo "testo".
 
A questo punto il workaround dovrebbe consigliare di riordinare i dati del foglio excel in modo tale da far comparire i valori testuali nelle prime righe.
 
Esempio di creazione di una tabella di Access da file excel:
 
Sub ImportExcelToAccess(sAccessDb As String, sExcelDb As String, sAccessTable As String, sExcelTable As String)
 
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
Dim sqlString As String
 
cnn.Open _
   "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & sAccessDb & ";" & _
   "Jet OLEDB:Engine Type=4"
 sqlString = "SELECT * INTO [" & sAccessTable & "] FROM [Excel 8.0;DATABASE=" & sExcelDb & ";MaxScanRows=0;HDR=Yes;IMEX=1].[" & sExcelTable & "$]"
cnn.Execute sqlString
cnn.Close
Set cnn = Nothing
 
End Sub
Funziona (o meglio NON funziona) esattamente come previsto dal link:
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q257/8/19.asp&NoWebContent=1
 
 
 

Print | posted on giovedì 14 luglio 2005 00:56

Feedback

#  Vb net - Excel campi univoci - MasterDrive.it - Information Technology Developers Community

Left by Pingback/TrackBack at 24/11/2008 11:18
Gravatar Vb net - Excel campi univoci - MasterDrive.it - Information Technology Developers Community

# problemi con Office tools for .net | hilpers

Left by Pingback/TrackBack at 23/01/2009 08:54
Gravatar problemi con Office tools for .net | hilpers

Your comment:





 
Please add 2 and 4 and type the answer here:

Copyright © Luciano Bastianello

Design by Bartosz Brzezinski

Design by Phil Haack Based On A Design By Bartosz Brzezinski