Vpišite se z Microsoftovim
Vpišite se ali ustvarite račun.
Pozdravljeni,
Izberite drug račun.
Imate več računov
Izberite račun, s katerim se želite vpisati.

Vsebina tukaj lahko velja za Northwind 2.0 Developer Edition in Starter Edition. 

VBA (VBA) je programski jezik, ki se uporablja v vseh Officeovih izdelkih. Z učenjem VBA lahko delate z vsemi Officeovimi izdelki (ne le z Accessom).
Ko iščete »navodila«, ne pozabite poiskati določenih primerov v Accessu in v iskanje vključiti Microsoft Access. Pogosto bodo delovale rešitve za druge Officeove izdelke, vendar ni nobenega jamstva. Microsoft Access je zrel izdelek; to pomeni, da obstaja veliko primerov; ki je super za vas! 

To tudi pomeni, da so starejše knjige v Accessovem programiranju še vedno izvedljive, da si jih lahko pogledate. Številne starejše knjige so še vedno na voljo na spletnih mestih za uporabo knjig z ulomkom svojih prvotnih stroškov. Na Microsoftovem spletnem mestu lahko ugotovite, katere različice Accessa so še vedno podprte, in jih uporabite.

Konec virov podpore za Office – uvajanje Officea | Microsoft Learn  

Spodaj je nekaj povezav do Accessove dokumentacije pri Microsoftu.

Microsoft Accessove datoteke so Officeove datoteke. Officeove datoteke morajo biti na »zaupanja vrednem mestu« ali imeti omogočeno »vsebino«. Ti elementi so obravnavani kot »varni«, ker ste jih ustvarili ali pa so prišli iz zaupanja vrednega vira. Preverjanje zaupanja vrednih mest se pojavi vsakič, ko odprete poljubno Officeovo datoteko. Od tu naprej bomo to imenujemo zaupanja vredno/omogočeno. OPOMBA: Če je izdana nova različica programa in se odpre z mesta, ki ni zaupanja vredno, se postopek omogočanja vsebine ponovi.

Več informacij o zaupanja vrednih mestih: 

Makri, funkcije in podzavihki so način, kako v Accessovo zbirko podatkov uvedete poslovno logiko. Pomembno je, da razumete obseg in vidljivost, preden začnete.


Dogodki (na primer klikanje kontrolnika) v kontrolnikih v obrazcu (npr. gumbi, polja z besedilom, oznake itd.) sprožijo druge procese, na primer dodajanje, brisanje zapisov ali odpiranje obrazcev. Te procese lahko uvedete z makri ali vba. Northwind Starter Edition uporablja večinoma makre in nekatere vba, kjer makri ne morejo izvajati potrebnih funkcij. Northwind Developer Edition uporablja predvsem VBA. 

Nekatere vrste kontrolnikov imajo vgrajene čarovnike za samodejno ustvarjanje makra. Če na primer dodate ukazni gumb v obrazec, odprete čarovnika, ki ponuja več možnosti funkcionalnosti gumba. Z dodajanjem kombiniranega polja odprete čarovnika, ki ga je mogoče konfigurirati za iskanje določenega zapisa v obrazcu. 

Podokno za krmarjenje je glavni način za ogled in dostop do vseh predmetov zbirke podatkov, ki je privzeto prikazan na levi strani Accessovega okna. 
Podokno za krmarjenje Northwind je bilo prilagojeno. Ustvarili smo kategorijo po meri, imenovano Northwind Starter 2.0. Tako lahko predmete organiziramo po funkcionalnih prostorih.

Včasih potrebujete spremenljivko, ki obstaja za ustvarjenim predmetom, ki jo je ustvaril, da ne bo več v obsegu. Glejte obseg in vidljivost zgoraj. To lahko naredite na tri načine: Javne spremenljivke, TempVars in Shranjevanje vrednosti v lokalno tabelo. Številni razvijalci uporabljajo kombinacijo teh. Vsak ima svoje prednosti in slabosti.  Več o vsakem od teh člankov: 

Javna spremenljivka modula VBA: 

TempVars (Začasnovar): 

Shranjevanje vrednosti v lokalno tabelo

  • Javne spremenljivke in TempVars obstajajo za trenutno sejo in po zaprtju programa ne bodo več na voljo. Kaj pa, če želite ohraniti spremenljivke, značilne za uporabnike, v vseh sejah? Te vrste vrednosti lahko shranite v lokalno tabelo. V sistemu Northwind 2.0 je ena taka spremenljivka shranjena v tabeli, ki se imenuje SystemSettings. Vrednost v tabeli je ShowWelcome. Ta vrednost pove Accessu, če želite videti pozdravni zaslon vsakič, ko se prijavite ali ne.

Razvijalci morajo pogosto prenesti parametre iz enega obrazca v drugega ali iz obrazca v poročilo. Ti parametri podajajo pomembne informacije, s katerimi se bo imenovana funkcija konfigurirala. Drugi obrazec ali poročilo lahko pridobi informacije iz prvega obrazca na več načinov. Tukaj je nekaj teh načinov: 

  1. Drugi obrazec se lahko »vrne« v prvi obrazec in tako poišče nekatere vrednosti, morda v vidnem ali nevidnem kontrolniku.  Na primer:
    lngCustomerID = Forms!FirstForm!cboCustomerID 

  2. S prvim obrazcem lahko shranite vrednosti v globalne spremenljivke ali v tempvars. Na primer:
    g_lngUserID = Me.cboUserID 
    TempVars.Dodajte »USERID«, Me.cboUserID 

Način, ki se pogosto uporablja v izdaji Northwind Developer Edition in v našem strokovnem življenju, je uporaba argumenta OpenArgs za DoCmd.OpenForm ali OpenReport. Na primer:

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

Tukaj združujemo dve tehnologiji: (1) uporabo argumentov OpenArgs za posredovanje argumentov VendorID in VendorType in (2) uporabo funkcije StringFormat() za ustvarjanje, na primer tega niza: 

CompanyID=5&CompanyTypeID=2 

Ta niz je zelo podoben nizu poizvedbe, kot se uporablja v brskalniku. Vsebuje enega ali več parov »ime/vrednost«, ločenih z znakom »in«: 

name1=value1&name2=value2


Prednost takšnega niza je v tem, da ima vsaka vrednost ime. Primerjajte to s preprostejšim pristopom, pri katerem bi openArgs nastavili le na »5,2«.  V takem primeru bi se potrudili ugotoviti, kaj vse to zahteva posamezna vrednost. Če poimenovanje posamezne vrednosti, postane niz poizvedbe »samoopis«, kar je dobra praksa programiranja.

Na koncu doCmd.OpenForm , ki se prejme, smo po navadi v dogodku Form_Open ali Form_Load in želite niz OpenArgs razčleniti v njegove komponente.

V sistemu Northwind lahko to naredite s funkcijo StringToDictionary . Funkcija, podobna poizvedbi, jo razčleni v njene komponente. Te komponente so nato shranjene v predmetu Scripting.Dictionary . Upoštevajte, da morate za to uporabiti orodja > Reference in nastaviti sklic na Microsoftov izvajalnik skriptnega izvajanja (scrrun.dll).

Funkcije in prednosti predmeta Slovar vključujejo:  

  • Vrstni red elementov ni pomemben

  • Preproste funkcije za dodajanje in odstranjevanje elementov zbirke

  • Funkcije za ponavljanje zbirke, tako da veste, kaj je v zbirki

  • Funkcija Exists , tako da lahko preskusite, ali je določen element na voljo

Uporaba predmeta slovarja je prikazana v celotnem sistemu Northwind. Primer: dogodek Form_LoadfrmGenericDialog.

Makri, ustvarjeni s čarovniki za kontrolnike v Accessu, redko vključujejo obravnavanje napak; VBA, ustvarjen s čarovniki za kontrolnike, je lahko omejen na splošni opis MsgBox Err.Description.

V razdelku Northwind 2.0 vam bomo pokazali, kako to naredite bolje, ko uporabljate kodo VBA. Izbrali smo tako imenovani globalni način za obravnavo napak. Napake, ki se zgodijo v katerem koli postopku, pokličejo funkcijo na globalni ravni, da pokažejo napako. Velika prednost je v tem, da je obravnavanje napak dosledno. Če se mora sporočilo spremeniti (če želite na primer dodatno prikazati številko napake ali zabeležiti napako v datoteko), morate to narediti le na enem mestu. 

clsErrorHandler je modul razreda, ki izvaja kodo za obravnavanje napak. Modul razreda ohrani vse svoje glavne in pomočne funkcije skupaj v eni napravi, tako da enkapsuliranje kode.

Makro AutoExec priklica funkcijo Zagon v modStartup. V izdaji Starter Edition funkcija ustvari primerek clsErrorHandler in jo shrani kot globalno spremenljivko, ki je na voljo za uporabo v celotnem programu. V izdaji Dev je uporabljen statični razred – pripombe si lahko ogledate na vrhu modula razreda.

Pravzaprav je koda za obravnavanje napak v postopkih tako dosledna, da smo jo lahko ustvarili v manj kot petih minutah z uporabo posebne kode VBA, ki je vsak postopek opremila z ustreznim orodjem za obravnavo napak. (Koda ni vključena v predlogo). Obe izdaji predlog Northwind 2.0 Starter in Developer sta bili prvotno opremljena s tem pristopom obravnavanja napak. 
'

IZBOLJŠANO OBRAVNAVANJE NAPAK

Od različice 2.2 izdaje Northwind Developer Edition smo izboljšali funkcijo za obravnavo napak na podlagi povratnih informacij skupnosti za Access. Izdaja Starter je nespremenjena. 

V osnovi je koda za obravnavo napak v različici, ki je bila izdana aprila 2023 (2.0) :

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


V različici 2.2 je nadgrajena na:

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


Če želite razumeti, zakaj je bila ta sprememba narejena, najprej ugotovite, zakaj se izvaja koda:

  • Makro AutoExec pokliče postopek zagona, ki izvede nekatere inicializacije pred odpiranjem prvega obrazca.

  • Uporabnik komunicira s programom, kot je odpiranje obrazca ali klikanje gumba, zaradi česar se dogodkovne procedure zaganjajo, na primer Form_Loadin cmdPrintInvoice_Click.
    '

Poleg dogodkovnih procedb imajo aplikacije podprograme in funkcije, večinoma v modulih, in ta koda je pri poklicna iz dogodkovnih procedu. Ti postopki se imenujejo »standardni« postopki.

V različici 2.0 sistema Northwind so standardni postopki obdelali svoje napake s sporočili, vendar nekako niso obvestili dogodkovne procedure klicanja, da je prišlo do napake. To je lahko slabo, če ima dogodkovna procedura nadaljnjo kodo, ki bi se morala zagnati ne glede na prejšnjo napako, ki jo obravnava imenovana procedura. Seveda lahko podprogram zamenjamo s funkcijo, ki vrne uspeh ali neuspeh, in ustrezno kodimo dogodkovno proceduro, vendar to ni vedno možnost.

V različici Northwind 2.2 standardni postopki ne obdelajo sporočil o napakah, ampak jih s funkcijo Err.Raise prijavite nazaj v dogodkovno proceduro klicanja. Dogodkovna procedura klicanja nato prikaže sporočilo o dvignjeni napaki in nadaljuje Exit_Handler. To je bolje, saj dovoljuje, da postopek klicanja zaključi.

Če želite uporabiti kodo northwind različice 2.2, morajo dogodkovne procedure vsebovati HandleError tretji argument, ki označuje, da je klicatelj dogodkovna procedura. Za to je bila posodobljena izdaja Northwind Dev Edition.

Še zmogljivejši modul za obravnavo napak bi imel podporo za postopke »potiskanja in popping« na »stack« (matrika). Prvi element bi bil vedno dogodkovna procedura, zato ne potrebujete dodatnega argumenta. Ta izvedba presega cilje izdaje Northwind Dev Edition.

»Nedavno uporabljeno« je seznam nedavno uporabljenih naročil in nabavnih nalogov. Morda se boste želeli pogosto vračati nazaj nanje in jih premakniti v naslednje stanje. Seznami mrU so v Officeovih izdelkih pogosto na voljo kot seznam nedavno uporabljenih datotek, ki jih boste morda želeli znova odpreti.

v izdaji Northwind Dev, morate za izvajanje funkcije MRU (ki ne obstaja v izdaji Starter), najprej določiti te elemente: 

  1. Tabela za shranjevanje podatkov o mrU.

  2. Šifra, s katero posodobite tabelo, ko odprete naročilo ali nabavni nalog.

  3. Koda za posodobitev spustnega seznama »MrU« na traku.

  4. Koda za nalaganje elementa, ko je na traku izbran element MRU.

O tem si podrobneje opišite. 


1. Tabela za shranjevanje informacij o MRU.

Pregledati je treba načrt tabele MRU, zlasti indekse. Upoštevajte, da obstaja podvojen indeks SortIdx za pomoč pri hitrem razvrščanju elementov MRU na spustnem seznamu traku, pa tudi enolični indeks za uveljavljanje poslovnega pravila, ki ga lahko za vsakega uporabnika izvedete le enkrat. Če na primer odprete isti vrstni red dvakrat, ne ustvarite dveh zapisov v tabeli »MRU«.


Tabela izkorišča dejstvo, da so vsa polja s PK (primarni ključ), povezana z MRU, v zbirki podatkov samoštevilčna, zato je podatkovni tip »Dolgo celo število« mogoče uporabiti za vrednost PKValue.

2. Koda za posodobitev tabele, ko je odprt nalog ali P.O.

V NW2 smo na seznam mrU dodali le takrat, ko je bil ustvarjen nov zapis, ne takrat, ko je bil obstoječi zapis znova posodobljen. Klic AddToMRU bi lahko k Form_AfterInsert Form_AfterUpdate premaknili.

Postopki AddToMRU in DeleteFromMRU se izvajata v modGlobalu, ki je standardni modul, katerega javni postopki so vidni v poljubni obliki.

AddToMRU (kot pove že ime) doda nov element v tabelo mrU in ga nato po želji obreže nazaj, pri tem pa izbriše najstarejši zapis, če je presegal največjo dovoljeno velikost (MAX_MRU_COUNT). Zadnji korak je verjetno najmanj poznan razvijalcem Accessa: spustni seznam traku je treba osvežiti, kar dosežete tako, da pokličete invalidateControl. To je signal na traku za vnovični zagon postopka inicializacije. 

3. Koda za posodobitev spustnega seznama mrU na traku. 

Ob zagonu in po pri klicu InvalidateControl se izvede zapleten nabor funkcij, ki zapolnijo trak.  Te postopke imenuje trak XML v tabeli uSysRibbons , ki delno pove:

<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>

Spustni seznam so dopolnjene s temi štirimi funkcijami povratnega klica. Upoštevajte, da je to zelo ista zamisel, kot je opisana v tem članku za standardne kombinirane polja.

Če razčlenite črte Debug.Print v modRibbonCallback in znova zaženete aplikacijo, se bo v neposrednem oknu prikazalo tako zaporedje: 

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


Tukaj lahko vidite, da Access najprej kliče postopek, ki vrne število elementov, ki jih je treba naložiti v argumentu ByRef funkcije ddMRU_GetItemCount. To je tudi čas, ko odpremo poizvedbo v tabeli MRU in jo predpomnimo, ker bo poizvedba uporabljena večkrat. 

Trak nato večkrat pokliče dva postopeka, da pridobi vrednosti ID in Oznaka za spustni seznam dveh stolpcev. 

Na koncu poziva postopek, da onemogočite, kateri element naj bi bil izbran. (V našem primeru je to prvi.) 

4. Koda za nalaganje elementa, ko je na traku izbran element MRU.

Tako kot pri drugih elementih traku lastnost OnAction v XML-jem traku določa funkcijo povratnega klica, ki bo uporabljena za izvajanje dejanja:

onAction="ddMRU_OnAction"

Ta postopek se izvaja v modRibbonCallback. Znova uporabi že odprti niz zapisov, da poišče zapis z izbranim elementom, nato pa glede na zahtevano Ime_tabele odpre ustrezen obrazec, ki poda vrednost PK, ki jo želite naložiti.

Ali potrebujete dodatno pomoč?

Ali želite več možnosti?

Raziščite ugodnosti naročnine, prebrskajte izobraževalne tečaje, preberite, kako zaščitite svojo napravo in še več.

Skupnosti vam pomagajo postaviti vprašanja in odgovoriti nanje, posredovati povratne informacije in prisluhniti strokovnjakom z bogatim znanjem.

Vam je bila informacija v pomoč?

Kako ste zadovoljni s kakovostjo jezika?
Kaj je vplivalo na vašo izkušnjo?
Če pritisnete »Pošlji«, bomo vaše povratne informacije uporabili za izboljšanje Microsoftovih izdelkov in storitev. Vaš skrbnik za IT bo lahko zbiral te podatke. Izjavi o zasebnosti.

Zahvaljujemo se vam za povratne informacije.

×