BUG: Il driver ODBC per Excel ignora le intestazione impostazione FirstRowHasNames

Traduzione articoli Traduzione articoli
Identificativo articolo: 288343 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Quando si utilizza il driver ODBC (Open Database Connectivity) di Microsoft Excel per connettersi a un foglio di lavoro Excel come origine dati ODBC, il driver assume per impostazione predefinita che la prima riga di dati del foglio di lavoro contiene le intestazioni di colonna (nomi di campo). In base alla documentazione del driver, si consente l'impostazione di connessione FirstRowHasNames opzionale di modificare questo comportamento predefinito utilizzando 0 per false e 1 per true. Tuttavia, infatti, il driver ignora questa impostazione e la prima riga di dati è considerata sempre intestazioni di colonna. Se la prima riga di dati non contiene intestazioni di colonna o altre voci, il risultato di efficacia è che la prima riga di dati "scomparirà."

Cause

Il valore del FirstRowHasNames o Header (HDR) parametro non viene mai viene passato al driver ODBC di Excel.

Risoluzione

Il HDR = impostazione sia disponibile e funzioni quando si utilizza il Provider Microsoft Jet OLE DB e il driver ISAM di Excel. Di conseguenza, la soluzione migliore consiste nell'utilizzare il Provider Jet, anziché il driver ODBC di Excel.

Perché il driver ODBC di Excel presuppone sempre che la prima riga contiene i nomi dei campi, la prima riga deve contenere sempre nomi di campo valido, o movimenti fittizi che lo sviluppatore è disposto da ignorare.

Status

Microsoft ha confermato che questo un bug nei prodotti Microsoft elencati all'inizio di questo articolo.

Informazioni

Procedura per riprodurre il problema

  1. Creare una nuova cartella di lavoro di Excel e salvarlo con il nome predefinito nella cartella in cui si creerà il progetto di test Visual Basic.
  2. Nella cella A1, è possibile riempire alcune celle nella prima colonna con dati casuali.
  3. Creare un nuovo progetto di Visual Basic e impostare un riferimento ActiveX Data Objects (ADO).
  4. Immettere ed eseguire il codice riportato di seguito:
    Private Sub Form_Load()
      Dim cn As ADODB.Connection
      Dim rs As ADODB.Recordset
      Set cn = New ADODB.Connection
      With cn
        .Provider = "MSDASQL"
        .ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & App.Path & "\Book1.xls;FirstRowHasNames=0;"
        .Open
      End With
      Set rs = New ADODB.Recordset
      With rs
        Set .ActiveConnection = cn
        .Source = "[Sheet1$]"
        .Open
      End With
      Debug.Print rs.Fields(0).Value
      Debug.Print rs.Fields(0).Name
      rs.Close
      cn.Close
    End Sub
    					
In genere si aspetta di vedere il driver Excel, assegnare il nome di campo predefinito "F1" la colonna di dati e di visualizzare all'inizio dei dati con il primo record immesso nella cella A1. Si noti tuttavia che nella finestra Debug, il valore immesso nella cella che a2 stampato come il valore del record primo di nonostante la presenza di impostare FirstRowHasNames su false . Il valore nella cella A1 è "scomparsa" per diventare il nome di campo per la colonna.

Proprietà

Identificativo articolo: 288343 - Ultima modifica: martedì 16 settembre 2003 - Revisione: 3.2
Le informazioni in questo articolo si applicano a:
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.1 Service Pack 2
  • Microsoft Data Access Components 2.1 Service Pack 1
  • Microsoft Data Access Components 2.1 Service Pack 2
  • Microsoft Data Access Components 2.5 Service Pack 1
  • Microsoft Data Access Components 2.5
Chiavi: 
kbmt kbbug kbmdacnosweep kbpending KB288343 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 288343
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com