What Is Visual Basic?


Creating Your First Function



страница3/4
Дата25.07.2016
Размер284.82 Kb.
#6717
1   2   3   4

Creating Your First Function


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

= DateSerial(Year(Now), Month(Now) + 1, 1)

 

Но в този израз лесно може да се допуснат грешки при въвеждането му. Много по добре е да заместите този израз с потребителска функция, която да извиквате за изпълнение когато е необходимо пресмятане на датата. Чрез функцията е възможно:



  •     Да сте уверени че пресмятанията се извършват по един и същи начин, като се избягват грешки от въвеждането.

  •     Да правите промени само на едно място (в module където е дефинирана функцията).

  •     Да ползвате във функцията If...Then което е невъзможно за изразите.

  •     Да управлявате грешките по желания от Вас начин.

  •     Да включвате коментари към сложни функции.

Този раздел Ви обяснява как да създадете проста функция пресмятаща датата на първия ден от следващия месец. Тя ще се използва за стойността на BillingDate текстовата кутия от Orders формата от приложението Orders.

Ако желаете да използвате тази функция в друга форма, то ще трябва да създадете standard module за съхраняването й. Този module се създава като всеки друг обект на базата от данни.

To create a standard module


  •      В Database прозореца изберете Modules tab, и тогава натиснете New.

  1. Access извежда нов module в Module прозореца.

  1.  



Note When you open a new module, Access automatically includes two Option statements in the Declarations section, as shown in the preceding illustration. These statements tell Access how to sort data when running code and whether to warn you if you don’t declare variables. For more information, search the Help index for “Option.”

To create a new function



  1. 1     След изречението Option Explicit, напишете Function след това интервал и името което сте избрали за нея. В нашия случай именувайте функцията FirstOfNextMonth.

  1. Note It’s a good idea to give your functions relatively short names that describe their purpose or the value they return. Function names can’t contain spaces or punctuation marks. For more information on names in Visual Basic, see “Naming Conventions” later in this chapter.

  1. 2     Натиснете Enter. Когато натиснете Enter, Access проверява написаното, форматира го според правилата за изписване и го извежда отново върху екрана. Access добавя също и празен ред в тялото на функцията, както и оператора End Function, които е последния ред от всяка функция.

Access добавя и скоби след името на функцията, в които може да се посочат аргументите приемани от нея (ако има такива)

Performing Calculations in a Visual Basic Function


Вие извършвате изчисления във функция по същия начин както навсякъде в Access - чрез изрази. Разликата е в посочването на това, къде да се появи резултата. Когато създавате израз към контрол на форма, резултата от израза се присвоява на контрола. При функциите, когато желаете резултата от пресмятането да се върне от функцията, то следва резултата да се присвои на името на функцията.

За да получи функцията FirstOfNextMonth резултата от изчислението, следва да се запише следния код между Function and End Function операторите.

FirstOfNextMonth = DateSerial(Year(Now), Month(Now) + 1, 1)

 


Compiling Your Procedure


Преди да може да стартирате процедура, Access трябва да я компилира - да извърши окончателна проверка на процедурата и да я преведе в изпълним формат.

Вие не трябва явно да указвате компилирането на процедурите си. Access ще направи това автоматично, когато се опитате да преминете в режим “показване на данните” (Data View) на формата си.

За да сте сигурни, че всички процедури от формата са проверени и компилирани, може да изискате тяхното компилиране.

To compile code in all currently open forms, reports, and modules



  •      От командата Debug на Module прозореца изпълнете Compile Loaded Modules.

Access компилира всички процедури от отворения модул, и ако се открие грешка, Access спира компилирането, извежда се подходящо съобщение, с едновременно осветяване (избиране) на реда от кода, в който е открита грешката

See Also For information on debugging errors in your code, see Chapter 7, “Debugging Visual Basic Code.”

To compile all code in the current database



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

Tip If you click Compile And Save All Modules, Access saves all the code in your database in its compiled form. It’s a good idea to save modules after you compile them, because this allows Access to run them more quickly when you first open them in the future.

Using Your Function


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

  •     В други Visual Basic процедури, които ще напишете.

  •     В изрази към изчисляеми полета във форма, отчет или запитване.

  •     В израз, дефиниращ критерий в запитване или условие в макрос.

Следващата процедура показва как да се създаде изчисляема текстова кутия в Orders формата, която показва датата на плащане на поръчка. Когато се въведе нова поръчка, тази текстова кутия ще използва FirstOfNextMonth функцията, за автоматично показване на първия ден от следващия месец като дата за плащане по фактурата.

To display the result of a function in a calculated text box



  1. 1     Отворете Orders формата в Design view.

  2. 2     Добавете несвързана текстова кутия в Orders формата , и променете характеристиката Name в BillingDate.

  3. 3     В нейната ControlSource характеристика запишете:

  1. =FirstOfNextMonth()

  1.  



  1. Сега, когато се въведе нова поръчка, текстовата кутия BillingDate автоматично ще извежда първия ден от месеца, следващ текущия, в зависимост от системния часовник на компютъра.

Note When you use a function in the property sheet, you need to include the parentheses after the function name. If the function has required arguments, you must include them inside the parentheses. For more information, see the following section, “Supplying Arguments to Your Function.”

Supplying Arguments to Your Function


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

Например, функцията FirstOfNextMonth връща първия ден от месеца, следващ текущия месец, в зависимост от системния часовник. Това е задоволително, когато се въвежда нова поръчка (при въвеждане на нов запис), но в текстовата кутия BillingDate не се извеждат коректни стойности за поръчки, направени предходния месец (при разглеждането на съществуващите записи).

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

Function FirstOfNextMonth(dtmAny As Date) As Date

FirstOfNextMonth = DateSerial(Year(dtmAny), Month(dtmAny) + 1, 1)

End Function

 

В ControlSource характеристиката на BillingDate текстовата кутия, се задава стойността, която да се предаде на функцията, получавана от контрола OrderDate на формата.



Note   You can dimension the data type of an argument in the function declaration. You can also (and normally should) dimension the data type for the function's return value. In the example above, the function's return value and the argument dtmAny are both dimensioned as the data type Date.



See Also For information on syntax and naming rules for arguments, search the Help index for “Function statement.”

Adding Comments to Your Procedure


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

Всеки коментар започва с апостроф ( ' ). Този символ заставя Visual Basic да игнорира останалата част от реда.

Function FirstOfNextMonth (dtmAny As Date) As Date

' This function calculates and returns the date of

' the first day of the month following the date passed by

' the argument.

' Note that this works even if Month(dtmAny) = 12.

 

FirstOfNextMonth = DateSerial(Year(dtmAny), Month(dtmAny)+1,1)



End Function


Каталог: 2014
2014 -> Закон за правната помощ Обн., Дв, бр. 79 от 04. 10. 2005 г.; изм., бр. 105 от 2005 г., бр. 17 от 2006 г., бр. 30 от 2006 г.; изм и доп., б
2014 -> Роля на клъстерите за подобряване използването на човешките ресурси в малките и средни предприятия от сектора на информационните технологии
2014 -> П р а в и л а за провеждане на 68-ми Национален и Международен Туристически Поход "По пътя на Ботевата чета" Козлодуй Околчица" 27 май 2 юни 2014 година I. Цел и задачи
2014 -> Докладна записка от Петър Андреев Киров Кмет на община Елхово
2014 -> На финала на предизборната кампания голямата интрига са малките партии
2014 -> Рекламна оферта за Избори за народни представители 2014
2014 -> Дебелината на армираната изравнителна циментова замазка /позиция 3/ е 4 см


Сподели с приятели:
1   2   3   4




©obuch.info 2024
отнасят до администрацията

    Начална страница