What Is Visual Basic?


Visual Basic Fundamentals



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

Visual Basic Fundamentals


В едно елементарно приложение ще използвате Visual Basic само за създаване на event процедури и прости функции. Но в сложни приложения, ще се наложи да използвате пълната мощ на този език. В следващите раздели се описват основните правила за писането на Visual Basic код в Access.

Standard Modules and Class Modules


Вие съхранявате Вашия Visual Basic код в модули (modules) в базата от данни. Модулите дават възможността да организирате своите процедури.

Една база от данни може да съдържа два типа модули:



  •     Стандартни модули използват се за съхраняване на код, които да може да се стартира от произволно място на приложението. Може да се извикват общи процедури от стандартен модул от изрази, макроси, event процедури или от процедури от други стандартни модули.

  •     За създаването на нов стандартен модул, може да се чукне бутон New от Modules tab в Database прозореца, или пък чрез командата Insert | Module.



  •     Клас (група) модули (Class modules) това са модули, специфични за един потребителски обект. Sub и Function процедурите които дефинирате като class module стават методи на обекта. Характеристики които се дефинират с операторите Property Get, Property Let и Property Set стават характеристики на потребителския обект.

За създаването на нов class module се изпълнява Class Module от Insert командата. Съхранените class modules се появяват в Modules tab на Database прозореца.

Всяка форма или отчет в базата от данни могат да съдържат form module или report module. Те също са class modules, но не могат да се съхраняват отделени от формата или отчета на който принадлежат.



  1. Form и report module са част от формата или отчета. Ако копирате една форма в друга база от данни, нейните модули се копират заедно с нея, ако се изтрие форма - изтриват се и нейните модули.

What’s In a Module?


Module може да съдържа:

  •     Обявявания (Declarations) Съдържа оператори дефиниращи променливи, константи и външни процедури. Раздела на обявяванията на module е отделно от процедурите, и обявяванията се прилагат за всички процедури в module. Вътре в процедурите също могат да се обявяват променливи и константи, при което те се използват само вътре в процедурата.

  •     Event procedures Това са Sub процедури които са свързани със специфичен обект и се стартират в отговор на събитие. Тези процедури винаги се съхраняват заедно с формата или отчета във form или report module.

  •     General procedures Това са процедури, които не са директно свързани с обекти или събития. Те могат да присъстват в standard module или class module. Тези процедури могат да бъдат Sub процедури (процедури, които не връщат стойност) или Function процедури (процедури, които връщат стойност).

  1.  


Event Procedures


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

Ако желаете да да стартирате код в отговор на специфично събитие, то трябва да се добави Ваш код към event процедурата за това събитие.



See Also For information on the Access event model, see Chapter 6, “Responding to Events.” For more information on all events, search the Help index for “events.”

Когато създавате event процедура (както е описано по-напред в тази глава), Access автоматично създава шаблон за това събитие и го добавя към module на формата или отчета. Името на новата процедура е комбинация от думите “Form” (или “Report”), знак за подчертаване ( _ ), и името на event. Например, ако желаете формата да стартирате even процедура когато чукнете (click) в нея, използвайте процедура с име Form_Click.

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

Important If you want to change the names of your controls, it’s a good idea to do so before you start writing event procedures for them. If you change the name of a control after attaching a procedure to it, you also must change the name of the procedure to match the control’s new name. Otherwise, Visual Basic can’t match the control to the procedure. When a procedure name doesn’t match a control name, Access makes it a general procedure. You can find general procedures in the Module window by clicking (General) in the Object box, and then clicking the procedure name in the Procedure box.

General Procedures


Access стартира event процедури в отговор на специфични събития във форма, отчет или контрол. General процедурите, за разлика от event процедурите се стартират само когато изрично се посочи това. Функцията например е от този тип.

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



See Also For information on customizing your menus and toolbars, see Chapter 1, “Creating an Application.” For information on using functions in expressions, search the Help index for “expressions.”

General процедурите могат да се създават или в class module или в standard module. Ако желаете процедурата да е достъпна от произволно място на приложението, то тя се съхранява към standard module, ако ли пък е специфична за една единствена форма - то тя се разполага в module за формата.


Creating and Calling Procedures


Този раздел представя синтаксиса който използвате за създаване и извикване на процедури в приложението си. Процедурите могат да бъдат Sub или Function процедури.

  •     Sub извършват операции, но те не могат да върнат стойност и не могат да се използват в израз. Тези процедури могат да приемат аргументи. Event процедурата е Sub когато тя е присвоена на форма или отчет. Когато Access разпознае събитие във форма, отчет или контрол, той автоматично стартира event процедурата за този обект и събитие.

  •     Function процедурите връщат стойност, която е резултат от пресмятания. Те могат да бъдат използвани в изрази. Могат да приемат аргументи.

  1.  
Sub Procedures

Синтаксиса на Sub процедура е:

[Private|Public] [Static] Sub procedurename [(arguments)]



statements

End Sub

Statements са Visual Basic оператори, формиращи кода, който желаете да се изпълни при стартирането на процедурата. Arguments са имената на аргументите, разделени със запетая ако са повече от един. Всеки аргумент изглежда като обявяване на променлива и участва като променлива в процедурата. Синтаксиса за всеки аргумент е:

[Optional] [ByVal] variablename [( )] [As type]



Type може да бъде всеки от основните типове данни: Byte, Integer, Long, Single, Double, Currency, Decimal, String, Boolean, Date, Object, or Variant. Ако не се посочи тип на данните, се възприема тип Variant като универсален. Скобите след variablename задават, че аргумента е масив.

По подразбиране аргументите се предават към процедурата “по позоваване” (by reference), което води до промяна на стойностите на променливите в извикваната процедура. За предаване на аргументите по стойност, следва да се използва ключовата дума ByVal.



See Also For information on the Optional keyword, see “Using a Variable Number of Arguments” later in this chapter. For information on the Static and Private keywords, search the Help index for “Sub statement.” For information on passing arguments by value or by reference, see “Argument Data Types” in Chapter 4, “Working with Variables, Data Types, and Constants.”

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

Sub MultiBeep(intBeeps As Integer)

 

Dim intX As Integer, lngY As Long



 

For intX = 1 To intBeeps

Beep

For lngY = 1 To 100000 ' Short delay between beeps.



Next lngY

Next intX

End Sub

 

Следващият оператор извиква MultiBeep Sub процедурата, със стойност на аргумента intBeeps - 3, възпроизвеждайки трикратно звук.



MultiBeep 3

 

Не трябва да задавате аргумента в скоби когато извиквате Sub процедура, така както се прави когато го декларирате, с изключение на случаите когато използвате Call оператор за извикване на процедура, в който случай скобите са задължителни.



Note To make your code more readable, you can pass arguments to Sub or Function procedures by name. For example, the following call to the MultiBeep Sub procedure passes the intBeeps argument by name:

MultiBeep intBeeps:=3

When you pass multiple arguments by name, you can include them in any order you want. For more information on passing arguments by name, search the Help index for “named arguments.”

Function Procedures

Синтаксиса за Function процедура е:

[Private|Public] [Static] Function procedurename [(arguments)] [As type]



statements

End Function

See Also For information on the Static and Private keywords, search the Help index for “Function statement.”

Аргументите за Function процедура са същите както за Sub процедура, като различията са само следните:



  •     Аргументите се поставят в скоби и когато се декларира и когато се извиква Function процедура.

  •     Function процедурите, по подобие на променливите имат тип на данните определящ типа на връщаната стойност.

  •     Връщаната стойност се присвоява на procedurename. Тази стойност може да се използва в изрази.

  1.  

Например, може да напишете Function процедура, която пресмята третата страна (хипотенузата) на правилен триъгълник, като зададете другите две страни.

Function Hyp (dblA As Double, dblB As Double) As Double

Hyp = Sqr(dblA ^ 2 + dblB ^ 2)

End Function

 

Извикването на Function процедура е като извикването на всяка една от вградените функции в Visual Basic. Например:



dblResult = Hyp(dblWidth, dblHeight)

 

Tip If you aren’t interested in the result of a Function procedure, you can call it without including parentheses or assigning it to a variable, as you would a Sub procedure. For example, you can use the following code to call a function called DisplayForm and ignore its return value:

DisplayForm strMessage

 

Using a Variable Number of Arguments


Може да декларирате опционни аргументи в дефиницията на процедура посредством ключовата дума Optional. Опционен аргумент е този, които може и да не бъде предаден всеки път, когато се извиква процедурата. Декларирането на опционните аргументи е след декларирането на задължителните в списъка на аргументите. Те могат да бъдат от произволен тип.

Ако сте включили опционен аргумент в декларацията на процедурата, то трябва да се укаже и какво трябва да се случи, когато не дадете аргумент. Ако Вие не направите това, то Access определя, че аргумента е със стойност “нула”, в случаите когато той е от числов тип; ако пък е от тип стринг - опционния аргумент се задава като стринг с нулева дължина ("").

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

Sub DisplayError(strText As String, Optional intNumber As Integer = 100)

If intNumber = 100 Then

MsgBox strText

Else

MsgBox intNumber & ": " & strText



End If

End Sub


 

Процедурата може да бъде извикана с един от следните оператори.

DisplayError "Invalid Entry"

DisplayError "Invalid Entry", 250

 

Note If an optional argument is of type Variant, then you can use the IsMissing function to determine whether an optional argument was included when the procedure was called. The IsMissing function only works with arguments of type Variant.

За написването на процедура, която приема произволен брой аргументи, използвайте ключовата дума ParamArray за предаване на масив от аргументи от тип на данните Variant. С ключовата дума ParamArray, може да се напише функция подобна на Sum, която пресмята сумата на произволен брой аргументи.

Function Sum(ParamArray varNumbers() As Variant) As Double

 

Dim dblTotal As Double, var As Variant



 

For Each var In varNumbers

dblTotal = dblTotal + var

Next var


Sum = dblTotal

End Function

 

Функцията Sum може да бъде извикана със следващият оператор.



dblSum = Sum(1, 3, 5, 7, 8)

 

Calling Procedures from Other Modules


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

Tip If you know you will use a procedure only within its module, you should declare it with the Private keyword to avoid confusion and to speed up compilation of your code. Event procedures are always declared with the Private keyword, because they normally apply only to the form or report in which they are stored. For information on procedures declared with the Private keyword, search the Help index for “Private statement.”

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

Utility.DisplayMsg

 

Процедура от class модул се извиква по подобен начин. Просто се посочва името на class модула, следвано от името на процедурата. Например, за стартиране на процедурата AddValues от class модула Class1 и отпечатване на резултата в Debug прозореца, използвайте следния код:



Debug.Print Class1.AddValues

 

Понеже модулите към форма или отчет са също class модули, те се извикват по същият начин. За извикване на процедура от модул на форма или отчет, посочете името на модула и след това името на процедурата. Името на модул от форма или отчет включва определението Form_ or Report_ следвано от името на формата или отчета. Например, за стартиране на Sub процедурата DisplayRecords съхранена заедно с Orders формата, използвайте оператора:



Form_Orders.DisplayRecords

 

Като алтернативен подход, процедура може да се активизира от class модул, от модул на форма или отчет посредством позоваване на pbject променлива. Например, следващия код отваря формата Orders, а след това стартира процедурата DisplayRecords.



Dim frmOrders As New Form_Orders ' Declare an object variable.

 

frmOrders.Visible = True ' Open and display the Orders form.



frmOrders.DisplayRecords ' Call the form's procedure.

.

.



.

Set frmOrders = Nothing ' Close the new instance of the Orders form.

 

Чрез съхраняване на процедурата DisplayRecords в модула на Orders формата и правейки я от тип public като резултат създавате потребителски метод на Orders формата.



Sub DisplayRecords

' This procedure can be called from another form

' to cause the Orders form to update itself.

.

.



.

End Sub

Using Variables


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

Visual Basic използва променливи (variables) за съхраняване на стойности. Подобно на полетата от таблицата променливите имат имена, което се ползва за обръщане към тях, както и характеристика на типа на данните, които се съхраняват в тях. Преди да се използва една променлива, добре е (но не е задължително) тя да бъде декларирана чрез Dim оператора.

Например, в следващата процедура dtmAny, dtmYear и dtmMonth са променливи от тип Date.

Function DueDate(dtmAny As Date)

 

Dim dtmYear As Date, dtmMonth As Date



 

dtmYear = Year(dtmAny)

dtmMonth = Month(dtmAny) + 1

DueDate = DateSerial(dtmYear, dtmMonth, 1)

End Function

 

See Also For information on declaring and using variables, see Chapter 4, “Working with Variables, Data Types, and Constants.”


Naming Conventions


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

  •     Да започват с буква.

  •     Да съдържат само букви, цифри и знак за подчертаване ( _ ); знаци за пунктуация и интервали не са разрешени.

  •     Да не съдържат повече от 255 символа.

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

  1.  

Ключова дума е дума, която Visual Basic използва като част от своя език. Това включва оператори (като If и Loop), функции (като Len и Abs), методи (като Close и FindFirst), и др.

Controlling Execution


Visual Basic притежава оператори, с които може да се контролира изпълнението на кода.

За тази цел могат да се ползват следните оператори:



  •     If...Then

  •     If...Then...Else

  •     Select Case

  1.  

За многократно изпълнение на част от кода могат да се ползват:

  •     Do...Loop

  •     For...Next

  •     While...Wend

  1.  

За обвързване на час от код към обект или обекти в приложение могат да се ползват:

  •     For Each...Next

  •     While...End While

  1.  

See Also For information on using these statements, search the Help index for any keyword in the statement.

Using the DoCmd Object to Perform Macro Actions


Много от действията които задавате в едно приложение нямат съответстваща команда в езика Visual Basic. За изпълнение на еквивалент на действие на макрос, използвайте методите на DoCmd обекта. Неговият синтаксис е:

[Application.]DoCmd.method [arguments]

Заместете method с името на действието на макрос. Колко аргумента ще зададете, зависи от особеностите на макрос-действието, което желаете да стартирате. Списъка на аргументите е в последователността, в която се появяват те в Macro прозореца, а може да се ползват и именувани аргументи. Посочването на Application е опционно; просто можете да започнете програмния ред с DoCmd.

Например, метод Close, кореспондиращ с Close действието приема два аргумента, определящи типа и името на обект от базата от данни, който желаете да затворите. Следва да се използва запетая за отделяне на аргументите, когато те са повече от един.

DoCmd.Close acForm, "Add Products"

 

See Also For information on intrinsic constants, see Chapter 4, “Working with Variables, Data Types, and Constants,” or search the Help index for “intrinsic constants.”

Някои от методите на DoCmd обекта приемат опционни аргументи. Ако в такива случаи не се посочат стойности за тях, Access използва за тях стойности по подразбиране. Например, ако не се посочат стойности за такива аргументи при Close метода, то се затваря активния (който и да е той) обект от базата от данни.

DoCmd.Close

 

Ако се пропусне опционен аргумент, но се посочи аргумент следващ прескочения, то трябва да се включи запетая заради пропуснатия аргумент. Например синтаксиса за MoveSize метода е:



DoCmd.MoveSize [right] [, down] [, width] [, height]

 

Следващият оператор използва подразбиращите се (текущите стойности за аргументите right и down arguments, а се посочват стойности само за аргументите width и height.



DoCmd.MoveSize , , 5000, 3000

 

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



Action

Visual Basic equivalent

 

AddMenu

No equivalent (but you can now create custom menus by using the command bars object model in Visual Basic)

MsgBox

MsgBox statement or function

RunApp

Shell function

RunCode

Function procedure call

SendKeys

SendKeys statement

SetValue

Assignment statement

StopAllMacros

Stop or End statements

StopMacro

Exit Sub or Exit Function statements

  1.  

See Also For information on methods of the DoCmd object, search the Help index for “DoCmd object.”

Using the RunCommand Method to Perform
Menu Commands


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

RunCommand command

 

Тук Command е константа, кореспондираща с Access командата, която желаете да стартирате. Например следващият код заставя Access да изведе Options диалоговата кутия (което е равностойно на изпълнение в директен режим на командата Tools|Options):

RunCommand acCmdOptions

 

See Also To determine the constant for the command you want to run, search the Help index for “RunCommand method.”


Getting Help


Както и в другите прозорци на Access, може да получите помощ по всеки един от следните начини:

  •     Ако е стартиран Office Assistant, чукнете върху него, напишете въпроса си и след това натиснете Search. Ако ли пък не е стартиран, чукнете Office Assistant бутона за да го стартирате. Обърнете внимание, че когато работите в Module прозореца са достъпни само съвети по програмиране.

  •     Изпълнете Contents And Index (от Help командата) и след това потърсете описанието, което Ви трябва.

  •     Когато редактирате код в Module прозореца, позиционирайте мигащият маркер на вградена функция, метод или ключова дума и натиснете F1. Това ще изведе помощна информация, подобно на показаната на следващата илюстрация.



  •     Използвайте List Properties/Methods, List Constants, Quick Info, и Parameter Info командите (от Edit менюто) за да получите помощ или информация за елементите на кода, който сте въвели в Module прозореца.

  1. See Also For more information on these commands, see “Writing and Editing Code” earlier in this chapter.

  1.  

Note When you ran Setup to install Access or Microsoft Office Professional, you may not have installed all the available Help files on your system. For example, if you clicked Typical during Setup, you don’t have all the Visual Basic Help files. To add additional components to your Access installation, run Access or Microsoft Office Setup again, click Custom, and select the components you want to add.

Accessing Relevant Information on the Internet


Друга възможност за помощна информация е Internet.

Можете да получите достъп до Microsoft Web sites директно от Access. В Help менюто, изберете Microsoft on the Web, след това чукнете върху съществуващите там сайтове. Тези сайтове се обновяват редовно и там може да се намери много повече информация, отколкото тази от самия продукт или книгите към него.

Следващата таблица съдържа списък на Microsoft Web сайтове.

Microsoft Web site

Internet address

Description

 

Access page of the Microsoft Office Web site

http://www.microsoft.com/access/

 


Offers free add-ins and tools, sample applications, instructional articles, and case studies of real world applications.

Microsoft Developer Network Online

http://www.microsoft.com/msdn/

 


Offers articles and technical information for developers who use any Microsoft development tool.

Access Developer Forum

http://www.microsoft.com/accessdev/

 


Offers technical articles, sample applications, programming tips, information on developer events and training, and case studies of real-world applications.

Microsoft Knowledge Base

http://www.microsoft.com/kb/

Offers articles that contain detailed how-to information, answers to technical-support questions, bug lists, and fix lists.

Access page of the Microsoft Support Online Web site

http://www.microsoft.com/MSAccessSupport/

Offers featured articles and samples, troubleshooting tips,
and answers to frequently
asked questions.

Access Newsgroups

http://www.microsoft.com MSAccessSupport
/default-news.htm

Offers a list of peer-to-peer newsgroups for discussion about Access.

Building Applications with Access 97

http://www.microsoft.com/accessdev/docs/bapp97
/bapp97.htm

(This book) Offers an online version of Building Applications with Access 97 that contains updated content.

 

Каталог: 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
отнасят до администрацията

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