Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [VBA] Eliminare N record da tabella Access

    Giornalmente trasferisco tutti i dati di una tabella Excel in un file access .mdb
    Ora ho il problema che durante la giornata i dati che devo trasferire possono anche cambiare, quindi in una macro Excel devo gestire anche questa eventualità...
    Devo controllare sé i dati relativi al campo "data" sono già presenti e in quel caso devo posizionarmi nel file .mdb in corrispondenza di tutti i record relativi a quella data per poi reinserire quelli nuovi?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    OK, ma qual'è la domanda?
    Qual'è il tuo problema?
    Cosa hai provato a fare?
    Quale codice hai scritto?
    Ti da errore? Se sì, quale ed in quale riga del codice?

  3. #3
    codice:
    Sub temp3()
    '
    ' temp3 Macro
    
    '
    
    #
    
    '
    
    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=H:\GENERALE MMP 2014\LISTE PRELIEVO MMP 2014\Produzione2014.mdb;"
    
    ' open a recordset
    
    Set rs = New ADODB.Recordset
    
    rs.Open "Lista2014", cn, adOpenKeyset, adLockOptimistic, adCmdTable
    
    ' all record in a table
    
    r = 2 ' The start Raw in the table
    
    #
    
    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("Data") = Range("A" & r).Value
    
    ####### .Fields("Codice") = Range("B" & r).Value
    
    ####### .Fields("Descrizione") = Range("C" & r).Value
    
    ####### .Fields("UM") = Range("D" & r).Value
    
    ####### .Fields("Quantità") = Range("E" & r).Value
    
    ####### '.Fields("Quantità") = Range("E" & r).Value
    
    ####### 'add more fields if necessary...
    
    ####### .Update ' stores the new records
    
    ### End With
    
    ### r = r + 1 'next row
    
    Loop
    
    rs.Close
    
    Set rs = Nothing
    
    cn.Close
    
    Set cn = Nothing
    
    End Sub
    Con questo codice trasferisco i dati del mio Sheen dentro la tabella "Lista2014" nel file "Produzione2014.mdb"

    Il mio problema è che quei dati durante la giornata possono subire delle variazioni. Quindi la mia domanda è
    Come posso Integrare la macro sopra per far sì che apra la tabella access "Liste2014" rilevi tutti i campi con Data "X", si posizioni sui record corrispondenti e li cancelli e poi inserisca i nuovi record che andranno a rimpiazzarli.

    Non mi è ben chiaro com'è il meccanismo di puntamento sui record in linguaggio VB

    Grazie

  4. #4
    I record possono essere indicizzati come gli array?
    Oppure devo posizionarmi sul primo e con l'istruzione movenext devo scansionare 1 a 1 per vedere se soddisfa una determinata condizione?
    Quale potrebbe essere una buona strategia per alleggerire la ricerca?

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.