Pierakstīties, izmantojot Microsoft
Pierakstīties vai izveidot kontu
Sveicināti!
Atlasīt citu kontu.
Jums ir vairāki konti
Izvēlieties kontu, ar kuru vēlaties pierakstīties.

Šeit ietvertais saturs var tikt lietots izdevumā Northwind 2.0 Developer Edition un Starter Edition. 

VBA (Visual Basic for Applications) ir programmēšanas valoda, kas tiek izmantota visos Office produktos. Mācību VBA ļauj strādāt ar visiem Office produktiem (ne tikai programmu Access).
Meklējot vārdu "how-to", noteikti meklējiet Access konkrētus piemērus un meklēšanā iekļaujiet programmu Microsoft Access. Bieži vien būs pieejami risinājumi citiem Office produktiem, bet nav nekādu garantiju. Microsoft Access ir produkts, kas ir paredzēts pieaugušajiem; tas nozīmē, ka šeit ir daudz piemēru; kas ir lieliski! 

Tas arī nozīmē, ka vecākas grāmatas par Access programmēšanu ir vēl stabilas. Daudzas vecākās grāmatas joprojām ir pieejamas lietoto grāmatu vietnēs bez sākotnējās izmaksas. Skatiet Microsoft tīmekļa vietni, lai noteiktu, kādas Access versijas joprojām tiek atbalstītas, un izmantojiet tās.

Office atbalsta resursu beigas — Office izvietošana | Microsoft Learn  

Tālāk ir dažas saites uz Access dokumentāciju korporācijas Microsoft vietnē.

Microsoft Access faili ir Office faili. Office failiem jāatrodas "uzticamā atrašanās vietā" vai jāiespējo to "saturs". Šie vienumi tiek uzskatīti par "drošiem", jo esat tos izveidojis vai ir nākuši no uzticama avota. Pārbaudīt, vai nav uzticamo atrašanās vietu, tiek veikta katru reizi, kad atverat jebkuru Office failu. No šī saraksta to izmantosim kā Uzticams/iespējots. PIEZĪME. Ja tiek izlaista un no neuzticamām atrašanās vietām atvērta jauna lietojumprogrammas versija, satura iespējošanas process atkārtosies.

Papildinformācija par uzticamajām atrašanās vietām.: 

Makro, funkcijas un apakšas ir veids, kā access datu bāzē ieviešat biznesa loģiku. Pirms darba sākšanas ir svarīgi izprast tvērumu un redzamību.


Notikumi (piemēram, noklikšķināšana uz vadīklas) veidlapas vadīklās (piemēram, pogas, tekstlodziņi, etiķetes utt.) aktivizē citus procesus, piemēram, ierakstu pievienošanu, dzēšanu vai formu atvēršanu. Šos procesus var ieviest, izmantojot makro vai VBA. Northwind Starter Edition galvenokārt izmanto makro un dažus VBA, kur makro nevar izpildīt nepieciešamās funkcijas. Northwind Developer Edition galvenokārt izmanto VBA. 

Dažiem vadīklu tipiem ir iebūvēti vedņi, kas automātiski izveido makro. Piemēram, pievienojot formai komandpogu, tiek atvērts vednis, kas piedāvā vairākas pogas funkcionalitātes iespējas. Pievienojot kombinēto lodziņu, tiek atvērts vednis, ko var konfigurēt, lai veidlapā atrastu konkrētu ierakstu. 

Navigācijas rūts ir galvenais veids, kā skatīt visus datu bāzes objektus un piekļūt tiem, un pēc noklusējuma tas tiek parādīts Access loga kreisajā pusē. 
Northwind navigācijas rūts ir pielāgota. Mēs izveidojām pielāgotu kategoriju ar nosaukumu Northwind Starter 2.0. Tas ļauj mums organizēt objektus pēc funkcionālā apgabala.

Dažreiz pēc objekta, kurš to veido, vairs nav tvēruma, ir nepieciešams mainīgais. Skatiet iepriekš sadaļu Tvērums un redzamība. To var paveikt trīs primārajos veidos: publiskie mainīgie, tempvari un vērtību glabāšana lokālajā tabulā. Daudzi izstrādātāji izmanto vairākus no tiem. Katram ir savs plusi un mīnusi.  Papildinformācija par katru no šeit: 

VBA moduļa publiskais mainīgais: 

TempVars: 

Vērtību glabāšana lokālajā tabulā

  • Publiskie mainīgie un tempVars pastāv pašreizējā sesijā un iziet no apjoma, kad programma tiek aizvērta. Bet ko darīt, ja vēlaties paturēt lietotāja mainīgos visās sesijās? Šo tipu vērtības var saglabāt lokālā tabulā. Northwind 2.0 viens no šiem mainīgajiem tiek saglabāts tabulā, kuras nosaukums ir SystemSettings. Vērtība tabulā ir ShowWelcome. Šī vērtība norāda programmai Access, ja vēlaties redzēt ekrānu Esiet sveicināts! ikreiz, kad piesakāties.

Izstrādātājiem bieži nepieciešams nodot parametrus no vienas formas citā vai no formas uz atskaiti. Šie parametri sniedz svarīgu informāciju, ko izsauktā funkcija pēc tam izmantos, lai konfigurētu pati sevi. Ir vairāki veidi, kā otrajai formai vai atskaitei iegūt informāciju no pirmās formas. Lūk, daži no šiem veidiem: 

  1. Otrā forma var "meklēt atpakaļ" pirmajā formā, lai paņemtu dažas vērtības, kas, iespējams, atrodas redzamā vai neredzamā vadīklā.  Piemēram:
    lngCustomerID = Forms!FirstForm!cboCustomerID 

  2. Pirmā forma var saglabāt vērtības globālajiem mainīgajiem vai tempVars. Piemērs.
    g_lngUserID = Me.cboUserID 
    TempVars.Add "UserID", Me.cboUserID 

Metode, kas bieži tiek izmantota Northwind Developer Edition un mūsu profesionālajā dzīvē, izmanto DoCmd.OpenForm vai OpenReport argumentu OpenArgs. Piemēram:

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

Šeit kombinējam divas metodes: (1) OpenArgs izmantošanu, lai nodotu VendorID un VendorType, un (2) funkcijas StringFormat() izmantošanu, lai izveidotu, piemēram, šo virkni: 

CompanyID=5&CompanyTypeID=2 

Šī virkne ļoti līdzīga vaicājuma virknei, kas tiek izmantota pārlūkprogrammā. Tajā ir viens vai vairāki "nosaukumu/vērtību pāri", kas atdalīti ar zīmi "un": 

name1=value1&name2=value2


Šādas virknes priekšrocība ir tā, ka katrai vērtībai ir nosaukums. Salīdziniet šo ar vienkāršāku pieeju, kurā OpenArgs var iestatīt tikai uz "5,2".  Šādā gadījumā būtu jāveic pūles, lai noskaidrotu katras vērtības zīmi. Katras vērtības nosaukšana padara vaicājuma virkni "patstāvīgi aprakstīt", kas ir laba programmēšanas prakse.

Saņemšanas beigās DoCmd.OpenForm parasti ir Form_Open vai Form_Load un vēlamies parsēt virkni OpenArgs tā komponentos.

Northwind to var izdarīt, izmantojot funkciju StringToDicrium . Tā izmanto vaicājumam līdzīgu funkciju un parsē to komponentos. Šie komponenti pēc tam tiek glabāti skriptēšanas.vārdnīcas objektā . Ņemiet vērā, ka, lai to izdarītu, ir jāizmanto rīki > atsauces un jāiestata atsauce uz Microsoft Scripting Runtime (Microsoft Scripting Runtime scrrun.dll).

Vārdnīcas objekta līdzekļi un priekšrocības ir šādas:  

  • Elementu secība nav svarīga.

  • Vienkāršas funkcijas elementu pievienošanai un noņemšanai kolekcijā

  • Funkcijas, kas darbojas pa kolekciju, lai jūs varētu uzzināt, kas tajā atrodas

  • Funkcija Exists , lai jūs varētu pārbaudīt, vai ir pieejams noteikts elements

Vārdnīcas objekta lietošana tiek parādīta visā Northwind. Piemēram, cēloņu Form_Load laukā frmGenericDialog.

Makro, kas izveidoti, izmantojot vadīklu vedņus programmā Access, reti ietver kļūdu apstrādi; Izmantojot vadīklu vedņus, izveidotais VBA var aprobežoties tikai ar generic MsgBox Err.Description.

Northwind 2.0 parāda, kā to paveikt labāk, izmantojot VBA kodu. Mēs esam ieviesuši globālu kļūdu apdarinātāju. Kļūdas, kas rodas jebkurā procedūrā, izsauc funkciju globālajā līmenī, lai parādītu kļūdu. Šeit lielā priekšrocība ir tas, ka kļūdu apstrāde ir konsekventa. Ja ziņojums ir jāmaina (piemēram, lai papildus tiktu rādīts kļūdas numurs vai lai kļūdu pieteiktu failā), tas jādara tikai vienuviet. 

clsErrorHandler ir klases modulis, kas ievieš kļūdu apstrādes kodu. Klases modulis uztur visas galvenās un palīgfunkcijas kopā vienā vienībā, tādējādi iekopējot kodu.

Makro AutoExec izsauc startēšanas funkciju modStartup. Izdevumā Starter Edition funkcija izveido clsErrorHandler instanci un saglabā to kā globālu mainīgo, kas ir pieejams lietošanai visā lietojumprogrammā. Izdevumā Dev tiek izmantota statiska klase — skatiet komentārus klases moduļa augšdaļā.

Faktiski kļūdu apstrādes kods procedūrās ir tik konsekvents, ka mēs varjām to visu izveidot mazāk nekā piecu minūšu laikā, izmantojot noteiktu VBA kodu, kas pārveidojiet katru procedūru ar pareizu kļūdu apdarinātāju. (Kods nav iekļauts veidnē). Gan Northwind 2.0 Starter, gan izstrādātāju veidņu izdevumi sākotnēji tika pārkārti, izmantojot šo kļūdu apstrādes metodi. 
'

UZLABOTA KĻŪDU APSTRĀDE

Sākot ar Northwind Developer Edition versiju 2.2, kļūdas apstrādātājs ir uzlabots, pateicoties Access kopienas atsauksmēm. Izdevums Starter netiek mainīts. 

Būtībā kļūdas apstrādātājs iepriekšējā versijā (2,0 – izlaists 2023. gada aprīlī) ir:

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


Versijā 2.2 tā ir jaunināta uz:

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


Lai saprastu, kāpēc tika veiktas šīs izmaiņas, vispirms izpratsim, kas ļauj izpildīt kodu:

  • Makro AutoExec izsauc startēšanas procedūru, kas veic dažas inicializācijai pirms pirmās veidlapas atvēršanas.

  • Lietotājs sadarbojas ar lietojumprogrammu, piemēram, atver veidlapu vai noklikšķinās uz pogas, izraisot notikumu procedūras, piemēram, Form_Loadun cmdPrintInvoice_Click.
    '

Papildus notikumu procedūrām lietojumprogrammām ir apakšrutīnas un funkcijas —galvenokārt moduļos, un šo kodu izsauc notikumu procedūras. Tās tiek dēvētas par standarta procedūrām.

Northwind 2.0 versijā standarta procedūrās tiktu izlabota paši savas kļūdas saistībā ar ziņojumiem, taču tām nav iespējas paziņot izsaukšanas notikuma procedūrai, ka ir radusies kļūda. Tas var būt slikts, ja notikuma procedūrai ir turpmāks kods, kas jāpalaiž neatkarīgi no iepriekšējās procedūras apstrādātās kļūdas. Protams, mēs varētu aizstāt apakšrutīna ar funkciju, kas atgriež izdošanos vai kļūmi, un attiecīgi kodēt notikuma procedūru, bet ne vienmēr tā ir opcija.

Northwind versijā 2.2 standarta procedūrās netiek apstrādāti kļūdu ziņojumi, bet, izmantojot Err.Raise, ziņojiet par to atpakaļ izsaukšanas notikuma procedūrā. Zvanu notikuma procedūra pēc tam parāda kā paaugstināto kļūdu un CV Exit_Handler. Tā ir labāk– tā ir iespēja izsaukšanas procedūrai pabeigt ar elegantu darbu.

Lai izmantotu Northwind versijas 2.2 kodu, notikuma procedūrām ir jāpāriet uz HandleError — trešo argumentu, kas norāda, ka zvanītājs ir notikuma procedūra. Northwind Dev Edition ir atjaunināts, lai to izdarītu.

Vēl jaudīgāks kļūdu apdarinātāja modulis atbalsta "stumšanas un iznirstēšanas" procedūras "grēdā" (masīvā). Pirmais elements vienmēr būtu notikuma procedūra, tāpēc papildu arguments nav nepieciešams. Šī ieviešana nav Northwind Dev Edition mērķi.

Pēdējo lietoto vienumu saraksts ir nesen lietoto pasūtījumu un pirkšanas pasūtījumu saraksts. Iespējams, vēlēsities atgriezties pie šīm bieži lietotajām lapām, lai tās ievietotu nākamajā statusā. MrU saraksti bieži vien tiek skatīti Office produktos kā nesen lietoto failu saraksts, kurus, iespējams, vēlēsities atkal atvērt.

Northwind Dev izdevumā, lai ieviestu MRU līdzekli (kas nepastāv izdevumā Starter), vispirms ir jāizveido šādi vienumi: 

  1. Tabula MRU informācijas glabā saglabāšanai.

  2. Kods, lai atjauninātu tabulu, kad tiek atvērts pasūtījums vai pirkšanas pasūtījums (PP).

  3. Kods Lentei, lai atjauninātu MRU nolaižamo izvēlni.

  4. Kods, kas ielādē vienumu, ja lentē ir atlasīts MRU vienums.

Papildinformāciju apskatīsim katrā no tiem. 


1. Tabula MRU informācijas glabā saglabāšanai.

Ir vērts pārskatīt tabulas noformējumu, it īpaši tās indeksus. Ņemiet vērā, ka pastāv indeksa SortIdx dublikāts, kas palīdz ātri kārtot lentes nolaižamā saraksta MRU vienumus, kā arī unikāls indekss, kas ļauj katram lietotājam izmantot biznesa kārtulu, kura vienumam var parādīties tikai vienreiz. Piemēram, ja vienu un to pašu pasūtījumu atver divreiz, netiek veidoti divi ieraksti MRU tabulā.


Tabula izmanto priekšrocības, ko sniedz tas, ka visi ar MRU saistītie PK (primārās atslēgas) lauki datu bāzē ir AutoNumber, tāpēc datu tipu Long Integer var izmantot vērtībai PKValue.

2. Kods, lai atjauninātu tabulu, kad tiek atvērts pasūtījums vai pirkšanas pasūtījums.

NW2 mēs izvēlējāmies pievienot MRU sarakstam tikai tad, kad tika izveidots jauns ieraksts, nevis tad, kad vēlreiz tika atjaunināts kāds ieraksts. Mēs noteikti varētu pārvietot AddToMRU zvanu no Form_AfterInsert uz Form_AfterUpdate, lai to atbalstītu.

Procedūras AddToMRU unDeleteFromMRU ir ieviestas modGlobal, kas ir standarta modulis, kura publiskās procedūras ir redzamas no jebkuras formas.

AddToMRU (kā norāda nosaukums) pievieno jauno vienumu MRU tabulai un pēc tam pēc izvēles apgriež to atpakaļ, dzēšot vecāko ierakstu, ja tas pārsniedz maksimālo lielumu (MAX_MRU_COUNT). Pēdējā darbība, iespējams, ir vismazāk zināmā Access izstrādātājiem: lentes nolaižamā izvēlne ir jāatsvaidzina, un tas ir paveikts, zvanot uz InvalidateControl. Šis ir signāls uz lenti, lai atkārtoti palaistu tās inicializācijas procesu. 

3. Kods, lai lentē atjauninātu MRU nolaižamo sarakstu. 

Startēšanas laikā un pēc tam, kad tiek izsaukta funkcija InvalidateControl , tiek izpildīta sarežģīta funkciju kopa, lai aizpildītu lenti.  Šīs procedūras izsauc lentes XML tabulā uSysRibbons, kas daļēji norāda:

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

Šīs četras atzvanes funkcijas aizpilda nolaižamo izvēlni. Ņemiet vērā, ka tas ir ļoti līdzīgi šeit aprakstītajiem standarta kombinētajiem lodziņiem.

Ja atkļūdošanas.drukāt līnijas modRibbonCallback un restartējat lietojumprogrammu, tūlītējā logā tiek parādīta šāda secība: 

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


Šeit redzams, ka Access vispirms izsauc procedūru, kas atgriež ielādējamo vienumu skaitu argumentā ByRef ddMRU_GetItemCount. Tas ir arī laiks, kad mēs atverat vaicājumu MRU tabulā un to kešatmiņā, jo tas aptuveni tiks izmantots vairākas reizes. 

Pēc tam lente atkārtoti izsauc divas procedūras, lai iegūtu ID un Label vērtības divu kolonnu nolaižamajā izvēlnē. 

Visbeidzot, tā izsauc procedūru, lai pārlēktu, kurš vienums ir jāatlasa. (Mūsu gadījumā tas ir pirmais.) 

4. Vienuma ielādes kods, ja lentē ir atlasīts MRU vienums.

Tāpat kā jebkurš cits lentes vienums, rekvizīts OnAction LENTES XML norāda atzvanīšanas funkciju, kas jāizmanto, lai veiktu darbību:

onAction="ddMRU_OnAction"

Šī procedūra ir ieviesta modRibbonCallback. Tā atkārtoti izmanto jau atvērto ierakstkopu, lai atrastu ierakstu ar atlasīto vienumu, pēc tam atkarībā no nepieciešamā TableName atver atbilstošo veidlapu, nododot ielādēto PK vērtību.

Nepieciešama papildu palīdzība?

Vēlaties vairāk opciju?

Izpētiet abonementa priekšrocības, pārlūkojiet apmācības kursus, uzziniet, kā aizsargāt ierīci un veikt citas darbības.

Kopienas palīdz uzdot jautājumus un atbildēt uz tiem, sniegt atsauksmes, kā arī saņemt informāciju no ekspertiem ar bagātīgām zināšanām.

Vai šī informācija bija noderīga?

Cik lielā mērā esat apmierināts ar valodas kvalitāti?
Kas ietekmēja jūsu pieredzi?
Nospiežot Iesniegt, jūsu atsauksmes tiks izmantotas Microsoft produktu un pakalpojumu uzlabošanai. Jūsu IT administrators varēs vākt šos datus. Paziņojums par konfidencialitāti.

Paldies par jūsu atsauksmēm!

×