24/05/2018, 20:25

Nhập môn lập trình Visual Basic 6.0

Các điều khiển trên biểu mẫu chỉ là một phần nhỏ của quá trình lập trình phát triển ứng dụng, nhằm tạo ra giao diện cho ứng dụng. Sau đó, bạn cần viết chương trình để ứng dụng hoạt động. Do đó, chương này sẽ đi sâu vào phần công việc chính của Visual Basic, ...

Các điều khiển trên biểu mẫu chỉ là một phần nhỏ của quá trình lập trình phát triển ứng dụng, nhằm tạo ra giao diện cho ứng dụng. Sau đó, bạn cần viết chương trình để ứng dụng hoạt động. Do đó, chương này sẽ đi sâu vào phần công việc chính của Visual Basic, viết chương trình.

Visual Basic là ngôn ngữ lập trình dựa trên đối tượng. Nếu bạn là người mới học, chương này sẽ giới thiệu các khối thiết kế cơ bản để xây dựng chương trình. Khi đã hiểu được các khái niệm cơ bản, bạn có thể tạo ra các ứng dụng rất mạnh bằng Visual Basic.

Coding conventions

Object Naming Conventions

Object name has 2 parts: prefix and description.

The prefix that makes it easy to identify the type of object, the description mentions name of objects.

- Conventions of description part are:

+ In English.

+ Can contain many words, each word is contiguous to others (No hyphen).

+ No acronym except listed in table Acronyms (see 4. Acronym).

+ Capitalize the first letter of each word.

(Note: These conventions will be applied to all of name types mentioned after in this document)

- Prefix conventions for some of the objects supported by Visual Basic are listed below (Sorted by control name):

Cont r ol t y pe P r efix E x a m ple
3D Panel Pnl pnlGroup
ADO Data Ado adoBiblio
Animated button Ani aniMailBox
Check box Chk chkReadOnly
Combo box, drop-down listbox Cbo cboEnglish
Command button Cmd cmdExit
Common dialog dlg dlgFileOpen
Communications com comFax
Control (used withinprocedures when the specific type is unknown) ctr ctrCurrent
Data dat datBiblio

Data-bound combo box dbcbo dbcboLanguage
Data-bound grid dbgrd dbgrdQueryResult
Data-bound list box dblst dblstJobType
Data combo dbc dbcAuthor
Data grid dgd dgdTitles
Data list dbl dblPublisher
Data repeater drp drpLocation
Date picker dtp dtpPublished
Directory list box dir dirSource
Drive list box drv drvTarget
File list box fil filSource
Flat scroll bar fsb fsbMove
Form frm frmEntry
Frame fra fraLanguage
Gauge gau gauStatus
Graph gra graRevenue
Grid grd grdPrices
Hierarchical flexgrid flex flexOrders
Horizontal scroll bar hsb hsbVolume
Image img imgIcon
Image combo imgcbo imgcboProduct
ImageList ils ilsAllIcons
Label lbl lblHelpMessage
Lightweight check box lwchk lwchkArchive
Lightweight combo box lwcbo lwcboGerman
Lightweight command button lwcmd lwcmdRemove
Lightweight frame lwfra lwfraSaveOptions
Lightweight horizontal scrollbar lwhsb lwhsbVolume
Lightweight list box lwlst lwlstCostCenters
Lightweight option button lwopt lwoptIncomeLevel
Lightweight text box lwtxt lwoptStreet
Lightweight vertical scroll bar lwvsb lwvsbYear
Line lin linVertical
List box lst lstPolicyCodes
ListView lvw lvwHeadings
MAPI message mpm mpmSentMessage
MAPI session mps mpsSession
MCI mci mciVideo
Menu mnu mnuFileOpen
Month view mvw mvwPeriod
MS Chart ch chSalesbyRegion
MS Flex grid mfg mfgClients
MS Tab mst mstFirst
OLE container ole oleWorksheet
Option button opt optGender
Picture box pic picVGA
Picture clip clp clpToolbar
ProgressBar prg prgLoadFile
Remote Data rd rdTitles
RichTextBox rtf rtfReport
Shape shp shpCircle
Slider sld sldScale
Spin spn spnPages
StatusBar sta staDateTime
SysInfo sys sysMonitor
TabStrip tab tabOptions
Text box txt txtLastName
Timer tmr tmrAlarm
Toolbar tlb tlbActions
TreeView tre treOrganization
UpDown upd updDirection
Vertical scroll bar vsb vsbRate

Prefix conventions for menus

Menu control prefixes will be extended beyond the initial "mnu" label by adding an additional prefix for each level of nesting, with the final menu caption at the end of the name string. The following table lists some examples.

Menu caption sequence Menu h a ndler n a me
File Open mnuFileOpen
File Send Email mnuFileSendEmail
File Send Fax mnuFileSendFax
Format Character mnuFormatCharacter
Help Contents mnuHelpContents

Variable naming conventions

Variable name must describe data type, scope and identifier of a variable.

Variable data types

D ata type P r e f i x Ex a mple
Boolean bln
Byte byt
Currency cur
Date (Time) dtm
Double dbl
Error err
Integer int
Long lng
Object obj
Single sng
String str
User-defined type udt
Variant vnt

Variable scope prefixes

Scope P r efix E x a m ple N ote
Global G gstrUserName This variable is global and string type
Module-level M mblnCalcInProgress This variable is module and booleantype
Local toprocedure None dblVelocity This variable is local and double type

Constants

The constant names will be UPPER_CASE with underscores (_) between words. For example:

Example N ote
USER_LIST_MAX
NEW_LINE

Prefixes for ActiveX Data Objects(ADO)

Use the following prefixes to indicate ActiveX Data Objects.

A DO object P r e f i x Ex a mple
Command Cm cmTitles
Connection Cn cnTitles
Field Fld fldName
Field Collection flds fldsTitles
Parameter prm prmTitleName
Parameter Collection prms prmsNames
Recordset Rs rsTitles

Structured Coding Conventions

In addition to naming conventions, structured coding conventions, such as code commenting and consistent indenting, can greatly improve code readability.

Code Commenting Conventions

All procedures and functions should begin with a brief comment describing the functional characteristics of the procedure (what it does). Input, output patameters passed to a procedure should be described. Function return values and global variables that are changed by the procedure must also be described at the beginning of each procedure.

Section he a ding C o mm e nt d e sc r iption
Purpose What the procedure does (not how).
Inputs Describe roles of input parameters
Outputs Describe roles of output parameters
Returns Explanation of the values returned by functions.
Author Author of module

Remember the following points:

- Every important variable declaration should include an inline comment describing the use of the variable being declared.

- Variables, controls, and procedures should be named clearly enough that inline commenting is only needed for complex implementation details.

- At the start of the.bas module that contains the project's Visual Basic generic constant declarations, we should include an overview that describes the application, enumerating primary data objects, procedures, algorithms, dialogs, databases, and system dependencies. Sometimes a piece of pseudocode describing the algorithm can be helpful.

Formatting Your Code

Here are a few pointers:

- Standard, tab-based, nested blocks should be indented four spaces (as the Visual Basic default).

- The functional overview comment of a procedure should be indented one space. The highest level statements that follow the overview comment should

be indented one tab, with each nested block indented an additional tab. For

example:

'*****************************************************
' Purpose: Locates the first occurrence of a
' specified user in the UserList array.
‘ Inputs:
‘ strUserList(): the list of users to be searched.
‘ strTargetUser: the name of the user to search for.
' Returns: The index of the first occurrence of the
' rsTargetUser in the rasUserList array.
' If target user is not found, return -1.
'*****************************************************
Function FindUser (strUserList() As String, strTargetUser As _ String)As Integer
Dim inti As Integer ' Loop counter.
Dim blnFound As Integer ' Target found flag. intFindUser = -1
inti = 0
While inti <= Ubound(strUserList) and Not blnFound
If strUserList(inti) = strTargetUser Then blnFound = True
intFindUser = inti
End If
Wend
End Function

Grouping Constants

Visual Basic generic constants will be grouped in a single module to separate them from application-specific declarations.

& and + Operators

Always use the & operator when linking strings and the + operator when working with numerical values. Using the +operator to concatenate may cause problems when operating on two variants. For example:

vntVar1 = "10.01"
vntVar2 = 11
vntResult = vntVar1 + vntVar2 'vntResult = 21.01
vntResult = vntVar1 & vntVar2 'vntResult = 10.0111

Creating Strings for MsgBox, InputBox, and SQL Queries

When creating a long string, use the underscore line-continuation character to create multiple lines of code so that you can read or debug the string easily. This technique is particularly useful when displaying a message box (MsgBox) or input box (InputBox) or when creating an SQL string. For example:

Dim Msg As String
Msg = "This is a paragraph that will be " _
& "in a message box. The text is" _
& " broken into several lines of code" _
& " in the source code, making it easier" _
& " for the programmer to read and debug."
MsgBox Msg
Dim QRY As String
QRY = "SELECT *" _
& " FROM Titles" _
& " WHERE [Year Published] > 1988"
TitlesQry.SQL = QRY

Other conventions

Error trapping in development progress must follow these rules:

- Cascading error trapping. That mean all called functions will return system error codes, and showing message box will be implemented at the most exterior function/procedure.

- All system message will be located in resource file.

- Showing message boxes are implemented by pass parameters to a showing message global function.

Items Conversations Note
Interface In Vietnamese  
Font name MS Sans serif Default
Font size Default  
Font color Black Default
Font style Normal Default
Distance between command buttons 100 Points  
Command buttons alignment Right  
Label alignment Left  
All labels in a form must be collected in an array    
All command buttons in a form must have same awidth    
Caption of OK button Chấp nhận  
Caption of Cancel button Thoát  
Caption of Help button Hướng dẫn  
Caption of Add button Thêm mới  
Caption of Delete button X  
Caption of Edit button Sửa  
Caption of Close button Đóng  
Caption of Save button Ghi  
Order of buttons in from (Left to right):
Thªm míi-Ghi-Söa-Xo¸-ChÊp nhËn-Tho¸t-H- íng dÉn
Default button Chấp nhận  
Cancel button Đóng  

- Error code contains 3 number.

- Versioning all modules: form module, code module...

- Display solution: 800x600 pixels

- Font size setting: Large font

- All of file name (*.vbp, *.frm, *.bas...) must less than 3 characters.

- Error code = 0 is OK.

- Error code < 0 is error.

- Error code >0 is warning.

- Function names should begin with a verb, such as InitNameArray or CloseDialog.

Form design standard

Common conventions in form design

Sample:

Form controls appearance conventions

C ont r ol P r operty V a lue N ote
Check box
All colors Default
Combo box, drop-down list box
Height 315
All colors Default
Command button
Height 375 Points
Back color Button face VB Default
Form
Border style Fixed length
Back color Button face VB Default
Startup position CenterScreen
Label
Back color Button face VB Default
Vervical scroll bar
Width 260 Points
Horizontal scroll bar
Height 260 Points
Option button
Height 255 Points
Text box
Height 285 Points
All color Default

Report design standard (for Crystal Report)

Common conventions in report design

Items Conventions Note
Above of each total row must be a line, calledGrouping line
Report boder Only title row isbordered
Colour of all objects in report (line,character...) Black

Report objects appearance conventions

Object Property Setting Note
Report title
Font name .VnArialH
Font style Bold
Justify Paper center
Space betweenreport title and collumn heading 50 Points Should bereviewed
Colunmheading
Font name .VnArialNarrow
Font style Bold
Font size 10
Justify Column left
Before rowspacing 6 Points
After row spacing 6 Points
Report body(data)
Font name .VnArialNarrow
Font style Bold
Font size 9
Justify Depend on column data type(Number: right, string: right, date: center)
Row spacing 0
Total row
Font name .VnArialNarrow
Font style Bold
Font size 9
Justify Right
Position Under data block thatsummarized
Grouping line
Width 1 Point
Report boder
Width 1 Point
Boder columntitle only
Page number
Font name .VnArial
Font size 9
Font style Normal
Position Right, bottom of page (Reportfooter)
Style Page/Total page
Left sub title
Font name .VnArial
Font size 10
Font style Normal
Justify Margin left
Right sub title
Font name .VnArial
Font size 10
Font style Normal

Sample:

Left subtitle Report title Right subtitle

Database design standards

All of object names (include: table names, view names, field names...) in database must follow these conventions:

- In English.

- Can containts one or more words and no underscore between these words.

- No acronym except listed in table Acronyms bellow.

- The first letter of each word must be capitalized.

Có lẽ khâu quan trọng nhất trong lập trình là thiết kế. Sau khi thiết kế giao diện, bạn cần thiết kế cấu trúc chương trình. Cách thiết kế khác nhau sẽ dẫn đến cách hoạt động khác nhau và bảo trì, theo đó cũng khác nhau.

Code trong VB được tổ chức theo dạng cây phân nhánh. Một ứng dụng thông thường chứa một hoặc nhiều mô-đun. Mỗi biểu mẫu có một mô-đun, có thể thêm những mô-đun chuẩn chứa những đoạn chương trình dùng chung, và cũng có thể có thêm mô-đun lớp.

Soạn thảo Code

Ngoài khả năng soạn thảo văn bản để viết chương trình, cửa sổ Code còn hỗ trợ một số chức năng khác như:

Đánh dấu (marks)

Dùng đánh dấu các dòng chương trình trong cửa sổ Code để dễ dàng xem lại về sau. Để bật tắt khả năng này, cũng như tìm kiếm dấu hiện hành, chọn Bookmarks từ menu Edit, hoặc chọn từ thanh công cụ Edit.

Dùng phím trong cửa sổ Code

Chức n ă ng Ph í m tắt
Xem cửa sổ Code F7
Xem cửa sổ Object Browser F2
Tìm kiếm CTRL + F
Thay thế CTRL + H
Tìm tiếp SHIFT + F4
Tìm ngược SHIFT + F3
Chuyển đến thủ tục kế tiếp CTRL + DOWN ARROW
Chuyển đến thủ tục trước đó CTRL + UP ARROW
Xem định nghĩa SHIFT + F2
Cuộn xuống 1 màn hình CTRL + PAGE DOWN
Cuộn lên một màn hình CTRL + PAGE UP
Nhảy về vị trí trước đó CTRL + SHIFT + F2
Trở về đầu của mô-đun CTRL + HOME
Đến cuối mô-đun CTRL + END
Chức n ă ng Ph í m tắt
Dời con trỏ sang phải 1 từ CTRL + RIGHT ARROW
Dời con trỏ sang trái 1 từ CTRL + LEFT ARROW
Dời con trỏ về cuối dòng END
Dời con trỏ về đầu dòng HOME
Lấy lại hành động trước đó CTRL + Z
Xoá dòng hiện hành CTRL + Y
Xoá 1 từ CTRL + DELETE
Canh trái TAB
Bỏ hành động canh trái trước đó SHIFT + TAB
Xoá tất cả các điểm dừng (break-points) SHIFT + SHIFT + F9
Xem menu cảm ngữ cảnh SHIFT + F10

Một số chức năng tự động

Auto Syntax Check

Từ menu Tools, chọn Option… Hộp thoại xuất hiện

Khi Auto Syntax Check không bật lên, nêu ta viết 1 dòng chương trình như sau: Form1.left =

rồi nhấn phím Enter. VB sẽ hiển thị dòng chương trình sai với mầu đỏ. Tuy nhiên, nó không giải thích thêm và ta có thể tiếp tục gõ chương trình. Nếu Auto Syntax Check được bật lên, khi ta vừa nhấn phím Enter, VB lập tức cho ta biết một số thông tin về lỗi và hiển thị con trỏ ngay dòng chương trình sai để chờ ta sửa. Trong trường hợp này, VB cần một giá trị bên phải dấu bằng.

Dùng để chứa dữ liệu tạm thời cho tính toán, so sánh các hoạt động khác

Khai báo biến

Để khai báo biến ta dùng lệnh Dim: Dim <Tên biến > [As<kiểu dữ liệu>]

Biến khai báo trong thủ tục chỉ tồn tại khi thủ tục thi hành. Nó sẽ biến mất khi thủ tục chấm dứt. Giá trị của biến trong thủ tục là cục bộ đối với thủ tục đó, nghĩa là ta không thể truy nhập biến từ bên ngoài thủ tục. Nhờ đó, ta có thể dùng trùng tên biến cục bộ trong những thủ tục khác nha.

Kiểu dữ liệu trong khai báo Dim có thể là những kiểu cơ bản như Integer, String hoặc Currency. Ta cũng có thể dùng đối tượng của VB (như Object, Form1, TextBox) hoặc của các ứng dụng khác.

Khai báo biến trong phần Declarations của một mô-đun nghĩa là biến đó tông tại và có tầm hoạt động trong mô-đun đó.

Khai báo biến với từ khoá Public nghĩa là biến đó tồn tại và có tầm hoạt động của toàn ứng dụng .

Khai báo biến cục bộ với từ khoá Static nghĩa là mặc dầu biến đó biến mất khi thủ tục chấm dứt, nhưng giá trị của nó vẫn được giữ lại để tiếp tục hoạt động khi thủ tục được gọi trong lần sau.

Khai báo ngầm

Nghĩa là ta không cần khai báo tường minh trước khi sử dụng biến.

Function SafeSqr(num)
    TempVal = Abs(num) SafeSqr = Sqr(TempVal)
    End Function
    

Mặc dù cách này có vẻ thuận tiện nhưng có thể gây lỗi nếu ta gõ nhầm tên biến.

unction SafeSqr(num)
    TempVal = Abs(num) SafeSqr = Sqr(TemVal)
    End Function
    

Hàm này trả về zero. Khi VB gặp tên mới, nó tạo ra một biến khác với tên đó.

Khai báo tường minh

Để tránh những rắc rối trên, ta nên quy định VB phải báo lỗi khi gặp một tên biến không khai báo. Ta đặt dòng lệnh :

Option Explicit

Trong phần Declarations của mô-đun. Một cách khác, từ menu Tools, chọn

Options, chọn tab Editor và đánh dấu vào tuỳ chọn Require Variable Declaration. VB tự động chèn dòng lệnh Option Explicit vào một mô-đun mới, nhưng không phải là những mô-đun đã được tạo. Do đó, đối với các mô-đun này, ta phải thêm dòng lệnh bằng tay.

Option Explicit chỉ hoạt động trên từng mô-đun. Vì vậy, ta phải thêm dòng này vào mỗi mô-đun của biểu mẫu, mô-đun chuẩn, hay mô-đun lớp.

Tầm hoạt động của biến

Tầm hoạt động Private Public
Thủ tục Biến chỉ tồn tại và hoạt động trongthủ tục Không có
Mô-đun Biến chỉ tồn tại và hoạt động trongmô-đun Biến tồn tại và hoạt độngtrên mọi mô-đun

Khai báo biến Static

Để khai báo tát cả các biến cục bộ trong một thủ tục là Static, ta đặt từ khoá Static vào tên thủ tục:

Static Function RunningTotal(num)
    

VB sẽ hiểu rằng tất cả các biến khai báo trong thủ tục này đều là Static, dù cho chúng được khai báo là Private, là Dim hoặc thậm chí khai báo ngầm.

Từ khoá Static có thể đặt ở đầu thủ tục Sub hoặc Function, kể cả thủ tục xử lý sự kiện hoặc những hàm Private.

Hằng

Dùng để chứa những dữ liệu tạm thời nhưng không thay đổi trong suốt thời gian chương trình hoạt động. Sử dụng hằng số làm chương trình sáng sủa và dễ đọc nhờ những tên gợi nhớ thay vì các con số. VB cung cấp một số hằng định nghĩa sẵn, nhưng ta có thể tự tạo hằng.

Ta có thể dùng cửa sổ Object Browser để xem danh sách các ứng dụng hằng có sẵn của VB và VBA( Visual basic for Application). Các ứng dụng khác cung cấp những thư viện đối tượng, như Microsoft Exel, Microsoft Project, hoặc các thư viện của điều khiển ActiveX cũng có hằng định nghĩa sẵn.

Trong trương hợp trùng tên hằng trong những thư viện khác nhau, ta có thể dung cách chỉ rõ tham chiếu hằng:

[<Libname>][<tên mô-đun>]<tên hằng>
    

Libname là tên lớp, tên điều khiển hoặc tên thư viện.

Khai báo hằng

|Public|private|Const<tên hằng>[As<kiểu dữ liệu>]= <biểu thức>
    

Tầm hoạt động

Hằng cũng có tầm hoạt động tương tự biến:

- Hằng khai báo trong thủ tục chỉ hoạt động trong thủ tục

- Hằng khai báo trong mô-đun chỉ hoạt động trong mô-đun

- Hằng khai báo Public trong phần Declarations của mô-đun chuẩn có tầm hoạt động trên toàn ứng dụng.Khai báo Public không thể dùng trong mô-đun của biểu mẫu hoặc mô-đun lớp.

Kiểu dữ liệu

Kiểm soát nội dung của dữ liệu. VB dùng kiểu Variant như là kiểu mặc định. Ngoài ra, một số kiểu dữ liệu khác cho phép tối ưu hoá về tốc độ và kích cỡ chương trình. Khi dùng Variant, ta không phải chuyển đổi giữa các kiểu dữ liệu. VB tự động làm việc đó.

Một dòng lệnh có thể kết hợp nhiều kiểu khai báo :

Private I as Interger, Amt as double
Private YourName as String, BillsPaid as Currency
Private Test,Amount, J as integer

Kiểu số

Integer, Long, Double và Currency. Kiểu số tốn ít vùng chứa hơn kiểu Variant. Tất cả biến kiểu số có thể được gán cho nhau và cho biến Variant. VB làm tròn thay vì chặt bỏ phần thập phân trước khi gắn nó cho số Integer.

Kiểu Integer tốn ít vùng nhớ hơn các kiểu khác, nó thường dùng làm biến đếm trong các vòng lặp For....Next.

Kiểu Single, Double, Currency dùng cho các số có phần thập phân. Currency hỗ trợ đến 4 chữ số phần thập phân và 15 chữ số cho phần nguyên, đùn cho ácc tính toán tiền tệ.

Các giá trị dấu chấm động được thể hiện là :A*10B.Ví dụ:

1.2341E12=1.2341 *1012

3.402823E+38 cho số Single hoặc 1.7976931486232D+308 cho số Double

Ta dùng các phép cộng (+), trừ(-) nhân(*), chia(/ hoặc). Dấu / là số chia thập phân.

5/3 cho kết quả là 1.66666666667. Trong khi 5/3 cho kết quả là 1, phần thập phân bị chặt bỏ. Phép tính này đặc biệt nhanh khi sử dụng trong vòng lặp.

Kiểu Byte

Thường dùng đẻ chứa dữ liệu nhị phân. Tất cả các thao tác trên kiểu Integer có thể thực hiện trên kiểu Byte, ngoại trừ dấu. Vì Byte là kiểu không dấu (trong khoản từ 0- 255), nó không thể nhận ra số âm.

Kiểu String

Mặc định, biến hay tham số kiểu chuỗi có chiều dài thay đổi, nó có thể tăng hoặc giảm tuỳ theo ta gán dữ liệu. Ta có thể khai báo chuỗi có chiều dài cố định:

Dim EmpName As String *50

Nếu ta gán một chuỗi ngắn hơn 50 ký tự, EmpName sẽ được thêm vào phần đuôi các kỹ tự khoảng trắng cho đầy 50 ký tự, nếu chuỗi gán vào dài hơn 50 ký tự, VB tự động chặt bỏ.

Khi làm việc với chuỗi, ta cần dùng các ham Trim và RTrim để cắt bỏ các ký tự trắng không cần thiết. Ngoài ra một số hàm thông dụng để thao tác trên chuỗi như:

a. Len: Lấy chiều dài chuỗi

b. Mid$: Trích chuỗi con từ chuỗi gốc

c. Left$: Trích chuỗi con từ phần đầu chuỗi gốc.

d. Right$:Trích chuỗi con từ phần đuôi của chuỗi gốc.

e. InStr: Tìm chuỗi con trong chuỗi gốc. Nếu hàm InStr trả về 0, nghĩa là không tìm thấy.

Tìm kiếm không phân biệt cõ chữ. Nhưng nếu tham số thứ 3 là vbBinaryCompare thì đây là tìm kiếm chuỗi có phân biệt chữ in hoa và chữ in thường.

f. Replace: Tìm và thay thể chuỗi. Replace(“Peter PeterWright”,” Peter ”,John,6) Chuỗi kết quả là “John Wright”, bắt đầu từ vị trí thứ 6. Nếu muốn giữ lại phần đầu

ta làm như sau:

Left$(“Peter Peter Wright”,5)&Replace (“Peter Peter Wright”,”Peter”,”John”,6) Một tham số khác là số lần thay thế:

Replace(“Peter Peter Peter Wright”,”Peter”,”Hooray”,1,2)

Kết quả là “Hooray Hooray Peter Wright”, nghĩa là hai lần thay thế. THam số này mang giá trị mặc định là -1, nghĩa là thay thế toàn bộ.

Tham số cuối cùng tương tự hàm Instr(), cho biết nó có phân biệt chữ in hoa và chữ thường hay không

Replace(“Peter Wright, “Peter”, “P.”,1,-1,vbTextCompare) Kết quả là “P.Wright”.

Chuỗi có chiều dài cố định được khai báo Public hay Private trong mô-đun chuẩn. Trong mô-đun của biểu mẫu hoặc mô-đun lớp, nó phải được khai báo Private.

VB cho phép chuyển đổi một chuỗi thành thành một số nếu chuỗi đang thể hiện một con số. Ngược lại, ta cũng có thể chuyển một số thành chuỗi. Tuy nhiên nên cẩn thận, vì chuyển đổi một chuỗi có giá trị không phải số sẽ gây lỗi chương trình thi hành.

Một số lập trình viên Visual Basic thích dùng dấu + để nối chuỗi thay vì dùng dấu &. Mặc dù không khác nhau lắm, nhưng thực ra dùng dấu + có điểm bất tiện. Vì là phép toán, nó có kiểm tra kiểu. Nếu ta có một số và một chuỗi nối với nhau, nó sẽ chuyển đổi từ số sang chuỗi trước khi thực sự kết nối. Hơn nữa, việc chuyển đổi này được làm tự động, không hề báo lỗi khi biên dịch.

Kiểu Boolean

Nếu ta có một biến có hai giá trị True/False, Yes/No,On/Off, ta nên dùng kiểu Boolean. Giá trị mặc định của Boolean là False.

Dim blnRunning as Boolean
    ‘ Check to see ì the tape is running. 
    If recorder.Direction = 1 Then blnRunning = True
    End if
    

Kiểu Date

Khi các kiểu dữ liệu khác được chuyển sang Date, giá trị đứng trước dấu chấm là ngày, giá trị đứng sau dấu chấm là giờ. Nửa đêm là 0, giữa ngày là 0,5. Dấu âm thể hiện ngày trước 30/12/1999. Kiểu Date đã giải quyết vấn đề Y2K

Nhấn Ctrl-G để hiển thị cửa sổ Immediate.

Gõ vào:

“01/02/98” và nhấn Enter.

Nếu hiểu theo người Mỹ, “01/02/98” có nghĩa là ngày 2 tháng Giêng năm 1998, nếu hiểu theo người Anh thì đây là ngày 1 tháng 2 năm 1998. Nếu dùng ngày như trong hình trên thì VB hiểu rằng lấy 1 chia cho 2 rồi lấy kết quả chia cho 98!

Trở lại cửa sổ Immediate gõ vào: ?#01/02/98#

Dấu # cho biết là dữ liệu kiểu Date, không phải một biểu thức toán học. Tuy nhiên, định dạng ngày tháng hiển thị phụ thuộc vào quy định của Windows.

Hộp thoại này hiển thị khi người sử dụng nhấp đúp chuột vào biểu tượng Regional Setting trong cửa sổ Control Panel của Windows. Nó cho phép quy định kiểu ngày tháng tuỳ thuộc quốc gia. Bên trong chương trình VB xử lý ngày tháng theo kiểu Mỹ

#01/02/98# là ngày 2 tháng Giêng năm 1998, nhưng nếu máy đang dùng theo hệ Anh thì nó sẽ hiển thị trên cửa sổ Immediate là 2/1/98

Kiểu Object

Biến kiểu Object chứa một địa chỉ 4 byte (32bit) trỏ đến đối tượng trong ứng dụng hiện hành hoặc các ứng dụng khác. Dùng lệnh Set để chỉ ra đối tượng thực sự:

Dim objDb As Object
    Set objDb=OpenDatabase(“c:vb5Biblio.mdb”)
    

Khi khai báo biến đối tượng, nên chỉ ra tên lớp tường minh, như TextBox thay vì Control, Database thay vì Object). Ứng dụng sẽ chạy nhanh hơn, ta có thể xem danh sách các lớp trong cửa sổ Object Browser.

Kiểu Variant

Có thể chứa mọi loại dữ liệu, số, thậm chí mảng. Ta không cần chuyển đổi kiểu dữ liệu, VB làm việc đó một cách tự động.

Dim Somevalue 'Variant by default
    Somevalue = "17" 'SomeValue contains "17"(a two character string). Somevalue = Somevalue – 15'somevalue now cotains the numeric value 2. Somevalue = "U" & Somevalue 'somevalue now cotains.
    

Variant cũng thuận tiện khi ta không biết trước kiểu dữ liệu

Private Sub cmdExplore_click() Dim VarVariant As Variant VarVariant = 12
    Form1.Print VarType(VarVariant) VarVariant = "Peter"
    Form1.Print VarType(VarVariant) VarVariant = True
    Form1.Print VarType(VarVariant) VarVariant = #1/1/2001# Form1.Print VarType(VarVariant) End Sub
    

Hàm VarType kiểm tra kiểu dữ liệu

Giá trị VarType Giải thích
0 – vbEmpty Không chứa gì cả
1 – vbNull Không có dữ liệu hợp lệ
2 – vbInteger Dữ liệu Integer dạng chuẩn
3 – vbLong Dữ liệu kiểu Long Integer
4 - vbsingle Dữ liệu kiểu chấm động single
5 – vbDouble Dữ liệu kiểu chấm động Double
6 – vbCurrency Kiểu Currency
7 – vbDate Kiểu ngày giờ
8 – vbString Kiểu chuỗi đơn giản
9 – vbObject Kiểu đối tượng
10 – vbError Có một đối tượng Error
11 – vbBoolean Kiểu giá trị Boolean chuẩn
12 – vbVariant Kiểu Variant
13 – vbDataObject Kiểu DAO chuẩn
14 – vbDecimal Giá trị thuộc hệ thập phân Decimal
17 – vbByte Kiểu Byte
36 – UserDefinedType Kiểu do người dùng định nghĩa
8192 - vbArray Kiểu mảng

Tuy nhiên cần chú ý khi dùng biến Variant:

- Nếu muốn thi hành các hàm số học, Variant phải chứa giá trị số.

- Nếu muốn nối chuỗi, dùng toán tử & thay vì toán tử +.

Giá trị Empty

Đôi khi ta cần kiểm tra một giá trị có được gán cho biến hay chưa. Biến Variant có giá trị Empty trước khi nó được gán giá trị. Giá trị Empty là một giá trị đặc biệt không phải zero, không phải chuỗi rỗng(“”), không phải giá trị Null. Ta dùng ham IsEmpty để kiểm tra giá trị Empty: If IsEmpty(z) then z =0

Khi một biến Variant chứa giá trị Empty, ta có thể dùng nó trong biểu thức. Nó có thể được xem là 0 hoặc chuỗi rỗng tuỳ theo biểu thức.

Giá trị Empty biến mất khi có một giá trị bất kỳ được gán cho Variant. Muốn trở về giá trị Empty, ta gán từ khoá Empty cho Variant.

Giá trị Null

Biến Variant chứa giá trị Null dùng trong những ứng dụng cơ sở dữ liệu thể hiện không có dữ liệu hoặc dữ liệu không xác định.

Dùng hàm IsNull để kiểm tra biến Variant có chứa Null hay không. Biến không bao giờ mang giá trị Null nế

0