Errore di runtime 3020



  • Errore di run-time 3020
    di Gianluca (utente non iscritto) data: 26/07/2014 15:21:46

    Ciao,

    ho una macro excel che deve aggiornare un campo di una tabella access.

    Il comando che deve effettuare l'aggiornamento mi da il seguente errore:

    Errore di run-time '3020':
    Metoro Update o CancelUpdate senza AddNew o Edit.

    I riferimenti che ho abilitato sono:

    Visual basic for application
    Micorsoft Excel 14 Object library
    OLE Automation
    Micorsoft Office 14 Object library
    Microsoft DAO 3.6 Object library
    Microsoft ADO Ext. 2.8 for DDL and Security

     
    Sub Stampa()
    '
    ' Macro gestione ordine
    
    Dim miodb As Database
    
    '----- Apre il database che si chiama Prova -----
    Set miodb = OpenDatabase(ThisWorkbook.Path & "Ristorante TreVie.mdb")
    '------------------------------------------------
    
    '----- Apre le tabelle "menu" e "a_finire" -----
    Set disp = miodb.OpenRecordset("a_finire", dbOpenDynaset)
    Set archivio = miodb.OpenRecordset("menu", dbOpenDynaset)
    Set cancella = miodb.OpenRecordset("undo", dbOpenDynaset)
    '-----------------------------------------------
    
    Range("M3").Select
    
    '----- Coloro di rosso gli alimenti mancanti e disponibilità per tutti -----
    scorretti = 0
    nonsuff = 0
    cont = 1
    inizio = Sheets("Buono Ristorante").Range("f45").Value
    fine = Sheets("Buono Ristorante").Range("f46").Value
    inizio_a_finire = inizio
    Do Until disp.EOF
      cont = cont + 6
      valore_terminati = disp.Fields("disponibili")
      portata_terminati = disp.Fields("portata")
      For x = inizio To fine
        Sheets("Oggi").Cells(cont, 1).Value = portata_terminati
        Sheets("Oggi").Cells(cont + 1, 1).Value = Cells(inizio_a_finire, 6).Value
        If Cells(inizio_a_finire, 6).Value = portata_terminati Then
            If Cells(inizio_a_finire, 13).Value <> "" Then
                Sheets("Oggi").Cells(cont + 2, 1).Value = Cells(inizio_a_finire, 13).Value
                Sheets("Oggi").Cells(cont + 3, 1).Value = valore_terminati
                If valore_terminati > 0 Then
                    If valore_terminati - Cells(inizio_a_finire, 13).Value < 0 Then
                        nonsuff = nonsuff + 1
                        Sheets("Oggi").Cells(cont + 4, 1).Value = "nonsuff"
                    Else
                        Sheets("Oggi").Cells(cont + 5, 1).Value = "Buono"
                        disp!disponibili = disp.Fields("disponibili") - Cells(inizio_a_finire, 13).Value
                    End If
                End If
            End If
        End If
      Next x
    inizio_a_finire = inizio_a_finire + 1
    disp.movenext
    Loop
    
    '----- Chiusura tabella -----
    disp.Close
    archivio.Close
    cancella.Close
    '----------------------------
    
    '----- Chiusura DB -----
    miodb.Close
    '-----------------------
    End Sub



  • di lepat (utente non iscritto) data: 26/07/2014 15:35:14

    allega i due file per permettere un test