Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    2

    [VBA+EXCEL+ADO+ACCESS] Da Excel ad Access

    Salve a tutti. Sono nuovo del "settore" e ho subito un bel problema impegnativo da risolvere.
    Ve lo espongo brevemente per punti.

    1) Un file Excel (un ottimizzatore) contiene un database che di mese in mese viene aggiornato con una nuova riga e i relativi record.

    2) Questa nuova riga deve essere "caricata" all'interno di un database Access, per essere disponibile ad altre elaborazioni anche da parte di differenti utenti.

    3) Il problema fondamentale da risolvere è come sfruttare ADO per "appendere" solo l'ultima riga disponibile (o meglio, incominciare ad "appendere" solo le righe successive alla più recente già presente nel database Access) e non tutto l'intero database ogni volta.

    Ho trovato il seguente codice su un sito, ma non fa altro che trasferire un intero database. Com'è possibile customizzarlo secondo quanto indicato dal punto 3? Sarei eternamente grato al genio che potesse aiutarmi!! Sostanzialmente credo che ci sia qualcosa a che fare con la variabile r o in generale con i Recordset..

    Sub ADOFromExcelToAccess()
    ' exports data from the active worksheet to a table in an Access database
    ' this procedure must be edited before use
    Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
    ' connect to the Access database
    Set cn = New ADODB.Connection
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
    "Data Source=C:\FolderName\DataBaseName.mdb;"
    ' open a recordset
    Set rs = New ADODB.Recordset
    rs.Open "TableName", cn, adOpenKeyset, adLockOptimistic, adCmdTable
    ' all records in a table
    r = 3 ' the start row in the worksheet
    Do While Len(Range("A" & r).Formula) > 0
    ' repeat until first empty cell in column A
    With rs
    .AddNew ' create a new record
    ' add values to each field in the record
    .Fields("FieldName1") = Range("A" & r).Value
    .Fields("FieldName2") = Range("B" & r).Value
    .Fields("FieldNameN") = Range("C" & r).Value
    ' add more fields if necessary...
    .Update ' stores the new record
    End With
    r = r + 1 ' next row
    Loop
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
    End Sub

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Ho spostato la discussione nel forum dedicato ai linguaggi trattati e corretto il titolo della discussione. Leggi il Regolamento per conoscere tutte le norme da seguire per partecipare correttamente a quest'area del forum.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    2

    hai ragione!!!

    Perdonami l'errore...mi sono accorto solo ora che c'era la categoria precisa...sorry!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.