Tietokannan paisumisen estäminen Access-objektien (DAO) käytön jälkeen

Huomautus

Office 365 ProPlus nimetään uudelleen Microsoft 365 Apps for enterprise -sovellukseksi. Lisätietoja tästä muutoksesta on tässä blogikirjoituksessa.

Keskitaso: Edellyttää makrojen, koodauksen ja yhteensopivuuden perustaitoja.

Tämä artikkeli koskee vain Microsoft Access -tietokantaa (.mdb).

Oireet

Microsoft Access -tietokanta on alkanut kasvattaa (tai kasvaa nopeasti) sen jälkeen, kun olet aloittanut tieto access-objektien (DAO) avaamisen.

Syy

Jos et vapauta tietueiden muistia aina, kun käyt läpi tietuesarjakoodin, DAO saattaa kääntää uudelleen käyttämällä enemmän muistia ja suurentamalla tietokannan kokoa.

Ratkaisu

Voit välttää tarpeettomien resurssien käytön ja tietokannan koon kasvattamisen sulkemalla tietueet eksplisiittisesti tietueet-objektin Sulje-menetelmällä, kun et enää tarvitse tietuesarjaa.

Jos tietokannan koko on kasvanut, koska et käytä Tietuesarja-objektin Sulje-menetelmää, voit pienentää tietokannan kokoa suorittamalla Järjestä ja korjaa -apuohjelman (Työkalut-valikossa).

Lisätietoja

Kun luot Tietuesarja (tai QueryDef) -objektin koodissa, sulje objekti eksplisiittisesti, kun olet valmis. Microsoft Access sulkee tietueet- ja Kyselymääritä-objektit automaattisesti useimmissa tapauksissa. Jos kuitenkin suljet objektin koodissa, voit välttää satunnaisia esiintymät, kun objekti pysyy avoimena. Seuraavissa ohjeissa näytetään, miten DAO:n avulla voi sulkea Tietuesarja- tai QueryDef-objektin.

  1. Käynnistä Microsoft Access.

  2. Avaa mallitietokanta Northwind.mdb.

    HUOMAUTUS Tämän artikkelin esimerkkikoodi käyttää Microsoft Data Access -objekteja. Jotta tämä koodi toimisi oikein, sinun on viitatttava Microsoft DAO 3.6 -objektikirjastoon. Valitse Viittaukset Visual Basic Editorin Työkalut-valikosta ja varmista, että Microsoft DAO 3.6 -objektikirjasto -valintaruutu on valittuna.

  3. Kopioi seuraava koodi uuteen moduuliin. Seuraava esimerkkikoodi avaa ja sulkee Tietueet- ja Kyselymääritä-objektit ja näyttää sekä Tietueet- että Kyselymääritä-tiedot sanomaruuduissa.

    Option Compare Database
    Option Explicit
    
    Sub subCloseObjects()
        Dim db As DAO.Database
        Dim rs As DAO.Recordset
        Dim qd As DAO.QueryDef
    
    Set db = CurrentDb
        Set rs = db.OpenRecordset("Employees", dbOpenTable)
        Set qd = db.QueryDefs("Invoices")
    
    rs.MoveLast    'Move to the last record in the Recordset.
    
    MsgBox "The Employees Recordset is open." & vbCrLf & _
               "The last Employee ID is " & rs![EmployeeID] & "."
        MsgBox "The Invoices query definition is open." & vbCrLf & _
               "The first field in the query is " & qd.Fields(0).Name
    
    'Explicitly close the Recordset and QueryDef objects.
        rs.Close
        qd.Close
    End Sub
    
    
  4. Suorita SubCloseObjects-rutiini.