Accesso ad Excel con ADO e tipi di dati misti

Quando ci connettiamo ad Excel tramite ADO i tipi delle colonne non sono definiti in uno schema, quindi il driver deve analizzare qualche riga per poter capire il tipo di dati contenuto.

Se i dati non sono coerenti, di default viene scelto il tipo di dati preponderante e restituito NULL per gli altri. Se i due tipi di dati sono presenti in uguale misura il tipo di dati sarà numerico.

Il numero di righe da analizzare di default è 8 ma può essere modificato tramite il parametro di configurazione MaxScanRows (da 1 a 16 o 0 per analizzarle tutte), peccato che a causa di un bug nel driver ODBC non funzioni.
L'alternativa è modificare la chiave di registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows

Il parametro nella stringa di connessione IMEX che sta per Import Mixed Types se impostato a 1 impone che i dati misti vengano importati come testo.

Però se le N righe in analisi (TypeGuessRows) sono tutte numeriche, il tipo di dati non verrà convertito in testo e rimarrà numerico.
L'unico modo per risolvere questa ultima problematica è impostare nel registro di sistema TypeGuessRows=0 in modo da analizzare tutte le righe.

 

Riferimenti:

How to Utilizzare ADO con dati di Excel da Visual Basic o VBA
PRB: i valori di Excel restituiti come NULL tramite DAO OpenRecordset
Dati troncati a 255 caratteri con driver ODBC di Excel

Registrate script durante una chiamata asincrona

Oggi mi è capitato di dover registrare uno script durante un PostBack asincrono e non riuscire a capire perchè non funzionasse con la chiamata Page.ClientScript.RegisterClientScriptBlock.

Il metodo corretto da utilizzare è ScriptManager.RegisterClientScriptBlock che si trovava in nell'assembly System.Web.Extensions.

La classe ClientScriptManager permette di gestire script client nelle applicazioni Web invece ScriptManager è stata creata appositamente per lavorare con AJAX.

Precompilazione di Siti Web con Asp.Net

Per velocizare il primo caricamento di un sito web creato con asp.net è possibile utilizzare il tool a riga di comando aspnet_compiler (vedi MSDN).

Se durante la precompilazione si riceve il messaggio di errore error ASPRUNTIME: This application is already precompiled il problema è dovuto alla presenza del file PrecompiledApp.config nella directory virtuale del sito.

É sufficente eliminare il file e rieseguire il comando.

«gennaio»
domlunmarmergiovensab
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567