3.3. Програмиране в Access

3.3.1. Уводни бележки

За програмиране в Access се използва процедурният език Visual Basic за приложения (Visual Basic for Applications - VBA) с добавяне на обектни разширения и SQL елементи. VBA е стандартно подмножество на Visual Basic, което поддържа основно същите обекти, свойства, методи и други езикови елементи. Освен това VBA е разширяем език, който може да бъде обогатен чрез свързване на външни библиотеки. Въпреки че е възможно да създавате полезни приложения в Access без програмиране, в повечето случаи ще трябва да напишете поне няколко реда код, за да укажете поведението на обектите и компонентите на приложението. Ако разработчикът започва да създава мощен, високофункционален продукт, познаването на основите на програмирането, съчетано с разбиране на обектния модел, ще бъде много полезно.

Програмни модули.Програмата не е нищо повече от набор от инструкции, които информират компютъра как да изпълни дадена задача или задачи. Структурата на програмната процедура е начин за организиране на инструкции, тоест редът, в който те се съхраняват и изпълняват.

Простите приложения, състоящи се само от няколко реда програмен текст, имат проста структура; организацията им не е толкова важна. Тъй като приложението расте и става все по-сложно, необходимостта от организация и оптимизация на структурата му става очевидна. Структурата е важна за ориентиране и намиране на конкретни инструкции в програмата, когато тя се поддържа.

Тъй като програмирането на Visual Basic се основава на обекти, структурата на кода е близка до модела на физическото представяне на обектите на екрана. По дефиниция обектите съдържат данни и код. Формата, която потребителят вижда на екрана, е представяне на свойствата, които определят нейния външен вид и поведение.Всеки формуляр и отчет в Access има модул, който съдържа свързан код, който ги описва.

Програмните модули санай-важният компонент на приложенията на Access. Има два вида модули: класови модули и стандартни модули.Модулът на класасе използва за създаване на обекти, които могат да бъдат извикани от процедурите на приложението. За разлика от стандартния модул, който съдържа само код, модулът клас съдържа както код, така и данни. Нов обект, създаден в модул на клас, може да включва персонализирани свойства и методи. Модулът на клас може да се разглежда като контрол без физическо представяне.

Модулите на класа и стандартните модули, представени с различни икони, могат да бъдат прегледани и избрани за работа в разделаМодулина прозореца на базата данни. Формуляр, отчет и стандартни модули също се показват вВизуализатор на обекти.

Едно просто приложение или приложение в ранен етап на разработка може да се състои от един формуляр и целият код на приложението ще бъде поставен в този модул на формуляр. С нарастването на сложността на приложението към него се добавят нови формуляри и отчети. На някакъв етап от разработката може да се окаже, че достъпът до някои части на кода трябва да се извърши от няколко форми и други обекти. В този случай е по-добре да не дублирате този код във всички форми, а да създадете отделен модул за него, съдържащ процедурите за споделяне. Този отделен модул трябва да бъде стандартен модул.

Стойността на това свойство показва наличието или отсъствието на модул, свързан с формуляра или отчета. Тъй като модул за формуляр или отчет не се създава, докато не трябва да добавите код към него, проектът съдържа по-малко модули. Това води до увеличаванепроизводителност. Формуляри и отчети без модули се зареждат много по-бързо от формуляри и отчети с модули.

ПроектиВизуалниОсновниза приложения. Всяка база данни на Access, база данни на библиотека или добавка, съдържаща се в .mde файл, включва проект на Visual Basic, който е колекцията от всички модули в проекта, включително стандартни модули и модули на класове.

Името на базата данни и името на проекта може да не съвпадат. Името на базата данни се определя от името на .mdb файла (.mda или .mde), а името на проекта се определя от опциятаИме на проектав разделаДругина диалоговия прозорецОпции, който се показва, когато изберете командатаОпцииот менютоИнструменти.Когато създавате база данни, нейното име и името на проекта по подразбиране са еднакви . Преименуването на базата данни обаче не променя автоматично името на проекта. По същия начин промяната на името на проекта не засяга името на базата данни.

За да създадете връзка към проект от друг проект:

1. Отворете прозореца на модула.

2. Изберете командатаВръзкив менютоИнструментии изберете необходимата база данни, библиотека от списъка или натиснете бутонаПрегледв диалоговия прозорецВръзки.

3. Изберете елемента с разширение на името, съответстващо на базата данни (*.mdb, *.mda, *.mde) в падащото полеТип файл.

4. Намерете желания файл и натиснете бутонаOK. Файлът ще бъде добавен към списъка с връзки, показан в диалоговия прозорецВръзки..

5. Поставете отметка в квадратчето до елемента от списъка.

Има смисъл да установите връзки към проект в друга база данни на Access, ако искате да извикате обща процедура, описана в стандартен модул на тази база данни. Не е разрешено извикване на процедури, описани в модули за формуляри или отчети, както и процедури, описани с ключова думачастен.

Препратките към конкретен проект на база данни на Access са разрешени само в други бази данни на Access. За да установите връзка към проект в база данни, създадена в предишна версия на Microsoft Access, първо трябва да конвертирате тази база данни във формата, зареден от Access.

Създаване на модули.Можете да създадете нов модул от всеки прозорец на база данни на Access. За целта са ви необходими:

1. Изберете командатаМодулилиМодул на класв менютоВмъкванеили в списъка на бутонаНов обект.Ще се отвори празен прозорец на модула.

2. Добавете необходимите процедури и описания към модула.

3. За да запишете модула, щракнете върху бутонаЗапазванев лентата с инструменти и задайте името на модула в диалоговия прозорецЗапазване..

След като запазите модул, името му се появява в разделаМодулина прозореца на базата данни. За да отворите модула, натиснете бутонаКонструкторот прозореца на базата данни или бутонаПрограмаот лентата с инструменти.

Често срещани въпроси по програмиране.Когато започнете да програмирате, е важно да разберете механиката на писане на код във Visual Basic. Както всеки език за програмиране, Visual Basic за приложения има специфични правила за организиране, редактиране и форматиране на код. Следващите раздели подчертават основните правила и предоставят някои насоки за писане на код.

Преди да започнете да пишете код.Може би най-важната (и често пренебрегвана) част от процеса на програмиране на Visual Basic за приложения е фазата на проектиране. Въпреки че е очевидно, че потребителският интерфейс на приложението трябва да бъде проектиран, не винаги се признава, че софтуерната структура също трябва да бъде внимателно проектирана. Структура на приложениетоможе да има значително влияние както върху производителността, така и върху поддържаемостта на кода.

Програмният код в приложение на Access е организиран по йерархичен начин. Типично приложение съдържа един или повече модули: модул за всеки формуляр и отчет в приложението, незадължителни стандартни модули за глобален код и незадължителни модули за клас. Всеки модул съдържа една или повече процедури, които съдържат код: процедури за събития, процедури за под или функции и процедури за свойства.

Ограничения, свързани с програмния код.

1. Модул от всякакъв тип може да съдържа не повече от 55534 реда код.

2. Един ред код може да съдържа до 1023 знака.

3. Същинският текст в един ред може да бъде предшестван от не повече от 255 интервала.

Препоръки за писане на програмен текстРазбиване на дълъг оператор на няколко реда.Дълъг оператор в прозореца за редактиране на код може да бъде разделен на няколко реда с помощта на знака за продължение на реда (интервал, последван от долна черта). Използването на този знак може да подобри четливостта на кода, както на екрана, така и при печат.

Свързване на изрази на един ред.Обикновено един ред код съдържа един израз, без индикация за края на оператора. Въпреки това, две или повече изявления могат да бъдат поставени на един ред, като се разделят с двоеточие (:). Въпреки това, за да направите кода по-четлив, все още е по-добре да поставите всеки оператор на отделен ред.

Конвенции за именуване въвVisualBasic.Когато пишете код на Visual Basic, вие декларирате много езикови елементи (подчинени и функционални процедури, променливи, константи и т.н.). Имената на декларираните елементи трябва да отговарят на следните изисквания:

• те трябва да започнат списма;

• могат да съдържат до 255 знака. Имената на контролите, формулярите, класовете и модулите не трябва да надвишават 54 знака. Тези имена могат да включват произволна комбинация от букви, цифри, интервали и специални знаци с изключение на точка (.), удивителен знак (!), ударение (') и скоби ([ ]);

• името трябва да е уникално в своя контекст (обхват). Например, за локална променлива, това е процедурата, в която е декларирана;

• По правило не трябва да използвате имена, които съвпадат с имената на функции, инструкции и методи на езика Visual Basic.

Ако формулярите и контролите са именувани с ключова дума, тогава при достъп до тях контролата трябва или да бъде квалифицирана (например чрез принадлежност към определен контейнер), или името трябва да бъде оградено в квадратни скоби [ ].

Както всеки друг съвременен език за програмиране, Visual Basic за приложения поддържа редица общи програмни конструкции и езикови елементи.

Езикови компоненти.В процедурите на Visual Basic, когато се извършват изчисления, често е необходимо да се съхраняват някои временни стойности - да се изчислят няколко стойности, да се сравнят и в зависимост от резултата от сравнението да се извършат различни операции върху тях. Например, може да искате да запомните стойностите за продажбите и общите разходи, така че да можете да ги използвате, когато изчислявате общия доход. Възможно е да се съхраняват стойности в свойствата на обектите, но това стеснява възможностите на програмиста и не винаги е възможно. Във Visual Basic, както и в повечето езици за програмиране, временните стойности най-често се съхраняват в променливи.

Променлива —именувана област от паметта, използвана за съхраняване на данни, чиито стойности могат да се променят по време на изпълнениепрограми. Всяка променлива има име, което уникално идентифицира променливата в нейния обхват, и тип данни, който указва вида данни, които променливата може да съхранява. Можете да се обърнете към променлива по нейното име в кода. Масивите от променливи могат да се използват за съхраняване на индексирани набори от свързани променливи.

Константитесъщо съхраняват стойности, но, както подсказва името, тези стойности остават постоянни в цялото приложение. Използването на константи може да направи кода по-четлив, тъй като те могат да се използват за манипулиране на мнемонични имена вместо числа. Visual Basic има редица вградени константи, но можете също да създавате персонализирани константи.

Типове даннидефинират вътрешната структура на данните на Visual Basic. По подразбиране Visual Basic използва типа данни Variant. Има и редица други типове данни, които ви позволяват гъвкаво да оптимизирате кода си за скорост и размер.

Изразитеформират стойности. Изразите могат да се състоят от константи, променливи, обектни стойности и функции, самостоятелно или в комбинация с оператори.

Вградени и дефинирани от потребителяпроцедури.Visual Basic поддържа Sub и Function процедури. Функциите извършват изчисления и връщат резултат. Те могат да извършват произволен брой изчисления върху числови, текстови, булеви или нещо друго, но не им е позволено да влияят на своята среда. За разлика от функциите, подпроцедурите могат да променят средата, но не връщат стойност. Процедурите обикновено приемат един или повече параметри, които се уточняват при извикването на процедурата, въпреки че някои процедури не изискват никакви параметри.