Kirjaudu sisään Microsoft-tilillä
Kirjaudu sisään tai luo tili.
Hei,
Käytä toista tiliä.
Sinulla on useita tilejä
Valitse tili, jolla haluat kirjautua sisään.

Tämä sisältö voi koskea Northwind 2.0 Developer Editionia ja Starter Editionia. 

VBA (Visual Basic for Applications) on ohjelmointikieli, jota käytetään kaikissa Office-tuotteissa. Learning VBA:n avulla voit käsitellä kaikkia Office-tuotteita (ei vain Accessia).
Kun etsit toimintaohjeita, etsi access-esimerkkejä ja sisällytä Hakuun Microsoft Access. Usein muiden Office-tuotteiden ratkaisut toimivat , mutta siitä ei ole takeita. Microsoft Access on kypsä tuote; tämä tarkoittaa, että siellä on paljon esimerkkejä; mikä sopii sinulle erinomaisesti! 

Se tarkoittaa myös sitä, että Access-ohjelmointia käsittelevien vanhempien kirjojen tarkasteleminen on edelleen mahdollista. Monet vanhemmista kirjoista ovat edelleen saatavilla käytetyillä kirjasivustoilla murto-osalla alkuperäisistä kustannuksistaan. Tarkista Microsoftin sivustosta, mitä Access-versioita tuetaan edelleen, ja valitse ne.

Officen tukiresurssien päättyminen – Officen käyttöönotto | Microsoft Learn  

Alla on linkkejä Microsoftin Access-ohjeisiin.

Microsoft Access -tiedostot ovat Office-tiedostoja. Office-tiedostojen on oltava luotetussa sijainnissa tai niiden sisällön on oltava käytössä. Näitä kohteita pidetään turvallisina, koska olet luonut ne tai ne ovat peräisin luotettavasta lähteestä. Tarkista, että luotetut sijainnit suoritetaan aina, kun avaat minkä tahansa office-tiedoston. Tästä lähtien kutsumme tätä luotetuksi tai käyttöön otettavaksi. HUOMAUTUS: Jos sovelluksen uusi versio julkaistaan ja avataan ei-luotetusta sijainnista, sisällön käyttöönottoprosessi toistuu.

Lisätietoja luotetuista sijainneista:: 

Makrojen, funktioiden ja alialueiden avulla voit toteuttaa liiketoimintalogiikan Access-tietokannassa. Sinun on tärkeää ymmärtää laajuus ja näkyvyys ennen aloittamista.


Tapahtumat (kuten ohjausobjektin napsauttaminen) lomakkeen ohjausobjekteissa (kuten painikkeet, tekstiruudut, selitteet jne.) käynnistävät muita prosesseja, kuten tietueiden lisäämistä, poistamista tai lomakkeiden avaamista. Nämä prosessit voidaan toteuttaa joko makrojen tai VBA:n avulla. Northwind Starter Edition käyttää enimmäkseen makroja ja joitakin VBA-makroja, joissa makrot eivät pysty suorittamaan tarvittavia funktioita. Northwind Developer Edition käyttää pääasiassa VBA:ta. 

Joissakin ohjaustyypeissä on ohjattu makron automaattinen luominen. Esimerkiksi komentopainikkeen lisääminen lomakkeeseen avaa ohjatun toiminnon, joka tarjoaa useita toimintoja painikkeelle. Yhdistelmäruudun lisääminen avaa ohjatun toiminnon, joka voidaan määrittää etsimään tietty tietue lomakkeesta. 

Siirtymisruutu on tärkein tapa tarkastella ja käyttää kaikkia tietokantaobjekteja, ja se näkyy oletusarvoisesti Access-ikkunan vasemmassa reunassa. 
Northwind-siirtymisruutua on mukautettu. Olemme luoneet mukautetun luokan nimeltä Northwind Starter 2.0. Näin voimme järjestää objektit toiminnallisen alueen mukaan.

Joskus muuttujan on oltava olemassa sen luoneen objektin jälkeen. Katso laajuus ja näkyvyys yllä. Voit tehdä tämän kolmella ensisijaisella tavalla: julkiset muuttujat, tilapäismuuttujat ja arvojen tallentaminen paikalliseen taulukkoon. Monet kehittäjät käyttävät näitä yhdistelmiä. Jokaisella on sen edut ja haitat.  Lisätietoja kustakin: 

VBA-moduulin julkinen muuttuja: 

TempVars: 

Arvojen tallentaminen paikalliseen taulukkoon

  • Nykyiselle istunnolle on olemassa julkisia muuttujia ja tempvareja, jotka eivät kuulu sovelluksen sulkemiseen. Entä jos haluat säilyttää käyttäjäkohtaiset muuttujat istuntojen aikana? Voit tallentaa tämän tyyppisiä arvoja paikalliseen taulukkoon. Northwind 2.0:ssa yksi tällainen muuttuja tallennetaan taulukkoon nimeltä SystemSettings. Taulukon arvo on ShowWelcome. Tämä arvo kertoo Accessille, haluatko nähdä aloitusnäytön aina, kun kirjaudut sisään vai et.

Kehittäjien on usein välitettävä parametrit lomakkeesta toiseen tai lomakkeesta raporttiin. Nämä parametrit välittävät tärkeitä tietoja, joita kutsutaan funktioksi. Toisessa lomakkeessa tai raportissa on useita tapoja saada tietoja ensimmäisestä lomakkeesta. Seuraavassa on muutamia näistä tavoista: 

  1. Toinen lomake voi "katsoa taaksepäin" ensimmäiseen lomakkeeseen poimiakseen joitakin arvoja, mahdollisesti joko näkyvissä tai näkymättömässä ohjausobjektissa.  Esimerkki:
    lngCustomerID = Forms!FirstForm!cboCustomerID 

  2. Ensimmäinen lomake voi tallentaa arvoja yleisiin muuttujiin tai tempvareihin. Esimerkki:
    g_lngUserID = Me.cboUserID 
    TempVars.Add "UserID", Me.cboUserID 

Menetelmä, jota käytetään usein Northwind Developer Editionissa ja työelämässämme, on käyttää DoCmd.OpenFormin tai OpenReportin OpenArgs-argumenttia. Esimerkki:

DoCmd.OpenForm "frmCompanyDetail", OpenArgs:=StringFormat("CompanyID={0} &CompanyTypeID={1}", Me.VendorID, ctVendor)

Tässä on kaksi tekniikkaa: (1) OpenArgs-funktion käyttäminen Toimittajan tunnus- ja Toimittajatyyppi-funktiossa ja (2) StringFormat()- funktion käyttäminen esimerkiksi tämän merkkijonon luomiseen: 

CompanyID=5&CompanyTypeID=2 

Tämä merkkijono näyttää pitkälti kyselymerkkijonolta, jota käytetään selaimessa. Se sisältää yhden tai useamman "nimi-/arvoparin", joka on erotettu et-merkillä: 

name1=value1&name2=value2


Tällaisen merkkijonon etuna on, että kullakin arvolla on nimi. Vertaa tätä yksinkertaiseen lähestymistapaan, jossa määrität OpenArgs-arvoksi vain "5,2".  Tällaisessa tapauksessa olisi tarpeen selvittää, mitä kukin arvo merkitsee. Kunkin arvon nimeäminen tekee kyselymerkkijonosta "itseään kuvaavan", mikä on hyvä ohjelmointikäytäntö.

DoCmd.OpenForm-tiedoston vastaanottavassa päässä olemme yleensä Form_Open- taiF-orm_Load-tapahtumassa ja haluamme jäsentää OpenArgs-merkkijonon sen komponentteihin.

Northwindissa voit tehdä tämän StringToDictionary-funktiolla . Se ottaa kyselymäisen funktion ja jäsentää sen komponenteiksi. Nämä osat tallennetaan sitten Scripting.Dictionary-objektiin . Huomaa, että tämä edellyttää, että käytät Työkaluja > viittauksia ja määrität viittauksen Microsoft Scripting Runtimeen (scrrun.dll).

Sanasto-objektin ominaisuuksia ja etuja ovat seuraavat:  

  • Elementtien järjestys ei ole tärkeä

  • Kokoelman osien lisääminen ja poistaminen yksinkertaisilla funktioilla

  • Funktiot, joiden avulla voit kiertää kokoelman, jotta tiedät, mitä siinä on

  • Olemassa-funktio, jonka avulla voit testata, onko tietty elementti käytettävissä

Sanasto-objektin käyttö näkyy koko Northwindissa. Esimerkiksi Form_Load-tapahtumafrmGenericDialogissa.

Accessin ohjattujen ohjausobjektien luomisen avulla luodut makrot sisältävät harvoin virheiden käsittelyä. Ohjattujen ohjausobjektien luomisen avulla luotu VBA voi olla rajoitettu yleiseen MsgBox Err.Descriptioniin.

Northwind 2.0:ssa opit tekemään sen paremmin VBA-koodia käytettäessä. Olemme ottaneet käyttöön niin sanotun yleisen virheenkäsittelytoiminnon. Virheet, jotka tapahtuvat missä tahansa toimenpiteessä, kutsuvat funktiota yleisellä tasolla näyttämään virheen. Suuri etu tässä on se, että virheiden käsittely on yhdenmukaista. Jos viestin on muututtava (esimerkiksi näyttämään virhenumero tai kirjaamaan virhe tiedostoon), se on tehtävä vain yhdessä paikassa. 

clsErrorHandler on luokkamoduuli, joka toteuttaa virheenkäsittelykoodin. Luokkamoduuli pitää kaikki pää- ja tukitoiminnot yhdessä yhdessä yksikössä ja kapseloi siten koodin.

AutoExec-makro kutsuu Käynnistys-funktiota modStartupissa. Starter Editionissa funktio luo clsErrorHandler-esiintymän ja tallentaa sen yleisenä muuttujana, joka on käytettävissä koko sovelluksessa. Dev-versiossa käytetään staattista luokkaa – katso kommentit luokkamoduulin yläosassa.

Itse asiassa menettelyjen virheenkäsittelykoodi on niin yhdenmukainen, että pystyimme luomaan sen kaiken alle viidessä minuutissa käyttämällä tiettyä VBA-koodia, joka asensi jokaisen menettelyn asianmukaisella virheenkäsittelytoiminnolla. (Koodi ei sisälly malliin). Sekä Northwind 2.0 Starter- että Developer-malliversiot oli alun perin varustettu tällä virheenkäsittelytavalla. 
'

PARANNETTU VIRHEENKÄSITTELY

Northwind Developer Editionin versiosta 2.2 alkaen virheenkäsittelyä on parannettu Access-yhteisön palautteen ansiosta. Starter-versio ei muutu. 

Pohjimmiltaan virheenkäsittelijä aiemmassa versiossa (2.0 - julkaistu huhtikuussa 2023) on:

Public Sub HandleError(…)
    MsgBox Err.Description
End Sub


Versiossa 2.2 se päivitetään:

Public Sub HandleError (…, Optional ByVal IsEventProcedure As Boolean = False)
    If Not IsEventProcedure Then
        Err.Raise lngError, strErrSource
    End If
    MsgBox Err.Description
End Sub


Jos haluat tietää, miksi tämä muutos on tehty, katsotaan ensin, mikä saa koodin toimimaan:

  • AutoExec-makro kutsuu käynnistystoimintosarjaa, joka suorittaa joitakin alustuksia ennen ensimmäisen lomakkeen avaamista.

  • Käyttäjä käyttää sovellusta, kuten lomakkeen avaamista tai painikkeen napsauttamista, jolloin tapahtumatoimintosarjat, kuten Form_Load ja cmdPrintInvoice_Click, käynnistyvät.
    '

Tapahtumatoimintojen lisäksi sovelluksilla on alireitit ja funktiot, joista suurin osa on moduuleissa, ja kyseinen koodi kutsutaan tapahtumatoiminnoista. Näitä kutsutaan vakiomenettelyiksi.

Northwindin versiossa 2.0 vakiomenettelyt käsittelivät omia virheitään viesteissä, mutta ne eivät jotenkin ilmoittaneet puhelutapahtuman toimenpiteelle, että tapahtui virhe. Tämä voi olla huono virhe, jos tapahtumatoimintosarjalla on seuraava koodi, joka pitäisi suorittaa riippumatta edellisestä virheestä, jota kutsutaan toimintosarjaksi. Toki voimme korvata alirutiinin funktiolla, joka palauttaa onnistumisen tai epäonnistumisen, ja koodata tapahtumatoimintosarjan vastaavasti, mutta se ei aina ole vaihtoehto.

Northwindin versiossa 2.2 vakiotoiminnot eivät käsittele virhesanomia, vaan ilmoittavat ne Err.Raise-toiminnon avulla takaisin kutsuvan tapahtuman toimintosarjaan. Kutsuvan tapahtuman toimintosarja näyttää korotetun virheen ja jatkuu Exit_Handler. Tämä on parempi, koska sen avulla kutsuminen voidaan päättää sulavasti.

Jos haluat käyttää Northwindin version 2.2 koodia, tapahtumatoimintosarjat on välitettävä HandleErriin kolmannen argumentin kautta, joka ilmaisee, että soittaja on tapahtumatoimintosarja. Northwind Dev Edition on päivitetty tekemään niin.

Vielä tehokkaampi virheenkäsittelymoduuli tukisi "työntö- ja ponnahdustoimintoja" pinossa (matriisissa). Ensimmäinen elementti on aina tapahtumatoimintosarja, joten lisäargumenttia ei tarvita. Tämä käyttöönotto ylittää Northwind Dev Editionin tavoitteet.

MRU eli Viimeksi käytetty on luettelo viimeksi käytetyistä tilauksista ja ostotilauksista. Voit halutessasi palata näihin usein, jotta voit asettaa ne seuraavaan tilaan. Mru-luettelot näkyvät usein Office-tuotteissa viimeksi käytettyjen tiedostojen luettelona, jonka haluat ehkä avata uudelleen.

Northwind Dev -versiossa, jotta voit ottaa käyttöön MRU-ominaisuuden (jota ei ole Starter-versiossa), sinun on ensin määritettävä seuraavat kohteet: 

  1. Taulukko, joka tallentaa MRU-tiedot.

  2. Koodi taulukon päivittämiseen, kun tilaus tai ostotilaus (PO) avataan.

  3. Koodi valintanauhan avattavan MRU-valikon päivittämiseen.

  4. Koodi kohteen lataamiseen, kun valintanauhasta valitaan MRU-kohde.

Tarkastellaan näitä kaikkia yksityiskohtaisemmin. 


1. Taulukko mru-tietojen tallentamista varten.

Taulukon MRU:n rakennetta kannattaa tarkastella, erityisesti sen indeksejä. Huomaa, että indeksin SortIdx-kaksoiskappaleen avulla voit lajitella nopeasti valintanauhan avattavan luettelon MRU-kohteet sekä yksilöllisen indeksin, joka pakottaa liiketoimintasäännön, jonka mukaan kullekin käyttäjälle kohde voi esiintyä vain kerran. Esimerkiksi saman tilauksen avaaminen kahdesti ei luo kahta tietuetta MRU-taulukkoon.


Taulukossa hyödynnetään sitä, että kaikki tietokannan MRU-kentät (perusavain) ovat Laskuri, joten Pitkä kokonaisluku -tietotyyppiä voidaan käyttää PKValue-funktiossa.

2. Koodi taulukon päivittämiseen, kun tilaus tai P.O. avataan.

NW2:ssa päätettiin lisätä MRU-luetteloon vain silloin, kun uusi tietue luotiin, ei silloin, kun aiemmin luotu tietue päivitettiin uudelleen. Voimme varmasti siirtää AddToMRU-puhelun Form_AfterInsertForm_AfterUpdate tukemaan sitä.

AddToMRU- ja DeleteFromMRU-toimenpiteet toteutetaan modGlobalissa, joka on vakiomoduuli, jonka julkiset toimenpiteet näkyvät mistä tahansa lomakkeesta.

AddToMRU (kuten nimestä voi päätellä) lisää uuden kohteen MRU-taulukkoon ja rajaa sen sitten valinnaisesti takaisin ja poistaa vanhimman tietueen, jos se on kasvanut enimmäiskoon (MAX_MRU_COUNT) yli. Viimeinen vaihe on luultavasti Vähiten tunnettu Access-kehittäjille: avattava valintanauha on päivitettävä, ja se tehdään kutsumalla InvalidateControl. Tämä on merkki valintanauhalle sen alustusprosessin uudelleen suorittamisesta. 

3. Koodi valintanauhan avattavan MRU-valikon päivittämiseen. 

Käynnistyksen yhteydessä ja sen jälkeen, kun InvalidateControl on kutsuttu, monimutkaiset funktiot suoritetaan valintanauhan täyttämiseksi.  Näitä ohjeita kutsutaan taulukko-uSysRibbons-taulukon valintanauhan XML-koodilla, jossa lukee osittain:

<group id="gCurrentStatus" label="MRU">
    <box id="bxMRU" boxStyle="vertical">
        <dropDown id="ddMRU"
                  getItemCount="ddMRU_GetItemCount"
                  getItemLabel="ddMRU_GetItemLabel"
                  getSelectedItemIndex="ddMRU_GetSelectedItemIndex"
                  getItemID="ddMRU_GetItemID"
                  onAction="ddMRU_OnAction"
                  screentip="Most Recently Used Objects">
        </dropDown>
    </box>
</group>

Nämä neljä takaisinkutsufunktiota täyttävät avattavan valikon. Huomaa, että tämä on pitkälti sama ajatus kuin tässä kuvataan tavallisissa yhdistelmälaatikoissa.

Jos poistat Virheenkorjaus.Tulosta-rivitmodRibbonCallbackissa ja käynnistät sovelluksen uudelleen, välitön ikkuna esittää seuraavanlaisen sarjan: 

ddMRU_GetItemCount    ddMRU    6 
ddMRU_GetItemLabel    ddMRU    0      Order 60, Proseware, Inc.
ddMRU_GetItemID       ddMRU    0       2 
ddMRU_GetItemLabel    ddMRU    1      Order 62, Best For You Organics Company
ddMRU_GetItemID       ddMRU    1       4 
ddMRU_GetItemLabel    ddMRU    2      Order 63, Wide World Importers
ddMRU_GetItemID       ddMRU    2       5 
ddMRU_GetItemLabel    ddMRU    3      Order 66, Proseware, Inc.
ddMRU_GetItemID       ddMRU    3       8 
ddMRU_GetItemLabel    ddMRU    4      Order 67, Best For You Organics Company
ddMRU_GetItemID       ddMRU    4       9 
ddMRU_GetItemLabel    ddMRU    5      Order 68, Adatum Corporation
ddMRU_GetItemID       ddMRU    5       10 
ddMRU_GetSelectedItemIndex  ddMRU    0


Tässä näkyy, että Access kutsuu ensin toimintosarjaa, joka palauttaa ladattavien kohteiden määrän ddMRU_GetItemCount ByRef-argumentissa. Tämä on myös aika, jolloin avaamme kyselyn MRU-taulukossa ja tallennamme sen välimuistiin, koska sitä on tarkoitus käyttää useita kertoja. 

Valintanauhassa on kaksi toimintoa, joiden avulla kaksi saraketta sisältävän avattavan tunnuksen ja selitteen arvot saadaan. 

Lopuksi siinä pyydetään menetelmää, jolla poistetaan se, mikä kohde valitaan. (Meidän tapauksessamme se on ensimmäinen.) 

4. Koodi kohteen lataamiseen, kun MRU-kohde valitaan valintanauhasta.

Kuten muissakin valintanauhan kohteissa, Valintanauhan XML:n OnAction-ominaisuus määrittää toiminnon suorittamiseen käytettävän takaisinsoittofunktion:

onAction="ddMRU_OnAction"

Tämä toimenpide on käytössä modRibbonCallbackissa. Se käyttää jo avattua tietuejoukkoa uudelleen löytääkseen tietueen, jossa on valittu kohde, ja avaa sitten tarvittavan Taulukonnimi-kohdan mukaan vastaavan lomakkeen, joka siirtyy ladattavaan PK-arvoon.

Tarvitsetko lisäohjeita?

Haluatko lisää vaihtoehtoja?

Tutustu tilausetuihin, selaa harjoituskursseja, opi suojaamaan laitteesi ja paljon muuta.

Osallistumalla yhteisöihin voit kysyä kysymyksiä ja vastata niihin, antaa palautetta sekä kuulla lisää asiantuntijoilta, joilla on runsaasti tietoa.

Oliko näistä tiedoista hyötyä?

Kuinka tyytyväinen olet käännöksen laatuun?
Mikä vaikutti kokemukseesi?
Kun valitset Lähetä, palautettasi käytetään Microsoftin tuotteiden ja palveluiden parantamiseen. IT-järjestelmänvalvojasi voi kerätä nämä tiedot. Tietosuojatiedot.

Kiitos palautteesta!

×