Newsgroup: it.comp.appl.access
Titolo: import errato di file excel mi salta primo rigo

Ciao,
Questo codice funziona ma mi salta il primo record...perchè?
Ho provato a mettere rs.MoveFirst ma niente da fare per il codice la prima
riga della selezione "indirizzi" nn la importa...
 Sub CreateTableFromXL()
          On Error GoTo createTableTrap
        Dim cnn1 As ADODB.Connection
        Dim cnn2 As New ADODB.Connection
        Dim rst1 As ADODB.Recordset
        Dim rst2 As ADODB.Recordset
        Dim cat1 As ADOX.Catalog
        Dim tbl1 As ADOX.Table
        Dim pk1 As ADOX.Index
        Dim strSql As String
        'set connection, catalog, and table objects
        Set cnn1 = CurrentProject.Connection
        Set cat1 = New ADOX.Catalog
        cat1.ActiveConnection = cnn1
        Set tbl1 = New ADOX.Table
        ' define table named "indirizzi" and append it to the Tables
collection
        With tbl1
            .Name = "indirizzi"
            .Columns.Append "nome", adWChar
            .Columns.Append "cognome", adWChar
            .Columns.Append "codice", adInteger
            .Columns.Append "matricola", adInteger
        End With
        cat1.Tables.Append tbl1
        ' make connection to excel source
        cnn2.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "data Source=C:\indirizzi.xls;" & _
        "Extended Properties=Excel 8.0;"
        ' open read-only recordset based on Excel source.
        ' Recall default is read-only
        Set rst1 = New ADODB.Recordset
        rst1.Open "indirizzi", cnn2, , , adCmdTable
        Set rst2 = New ADODB.Recordset
        rst2.ActiveConnection = cnn1
        rst2.CursorType = adOpenKeyset
        rst2.LockType = adLockOptimistic
        rst2.Open "indirizzi", cnn1, , , adCmdTable
        Do Until rst1.EOF
        With rst2
            .AddNew
            .Fields("nome") = rst1.Fields(0)
            .Fields("cognome") = rst1.Fields(1)
            .Fields("codice") = rst1.Fields(2)
            .Fields("matricola") = rst1.Fields(3)
            .Update
        End With
        rst1.MoveNext
        Loop
createtableExit:
        Set pk1 = Nothing
        Set tbl1 = Nothing
        Set cat1 = Nothing
        rst1.Close
        rst2.Close
        Set rst1 = Nothing
        Set rst2 = Nothing
        cnn1.Close
        cnn2.Close
        Set cnn1 = Nothing
        Set cnn2 = Nothing
        Exit Sub
createTableTrap:
        If Err.Number = -
2147217857
 Then
            ' if the indirizzitable already exists, delete it
            cat1.Tables.Delete "indirizzi"
        Else
            MsgBox (Err.Description)
        End If
        End Sub

        End Sub
Non è che, parlando ipoteticamente ma non con certezza, la specifica per 
importare da Excel preveda che nella prima riga ci siano i nomi dei campi?
Prova a lasciare la prima riga vuota o prova ad inserire i nomi dei campi 
(se non hai già progvato) e vedi quel che succede.
Michele

 ha scritto nel messaggio 
news:4512ec71$0$15869$4faf...@reader2.news.tin.it...


 riga della selezione "indirizzi" nn la importa...
Ciao Carlox4.
Forse hotrovato quel che ti serve.
Su un esempio di apertura di un file excel su un mio manuale, ho trovato, 
assieme alla specifica "Excel 8.0;"  la specidfica "HDR=No;" che indica 
l'assenza di header nel foglio di lavoro. Forse l'assenza del primo record 
nel tuo collegamento, sta nel fatto che per default, salvo diversa 
specificazione, HDR č postato a Sě.
L'esempio che ho trovato fa capo a DAO, ma penso che per il tuo ADO vada 
bene la sisntassi:
cnn2.Open "Provider=Microsoft.Jet.OLEDB.4.0;data 
Source=C:\indirizzi.xls;Extended Properties=Excel 8.0;HDR=No;"
Guarda comunque alla pagina
http://msdn2.microsoft.com/en-us/library/ms254500.aspx
Alla voce "Connecting to Excel"
Saluti e fammi sapere
Michele