Các kiểu dữ liệu đơn giản thường sử dụng

Một phần của tài liệu [2]access2 (Trang 70)

Bài 2 MACRO

3.2.9.Các kiểu dữ liệu đơn giản thường sử dụng

3.2. Các thành phần trong một module

3.2.9.Các kiểu dữ liệu đơn giản thường sử dụng

a) Ý NGHĨA:

Khi khai báo hằng hoặc biến ta cần phải chỉ ra kiểu dữ liệu của nĩ. Kiểu dữ liệu của biến dùng chỉ định loại dữ liệu mà biến sẽ lưu trữ. Mặc định khi ta khai báo biến mà khơng chỉ ra kiểu dữ liệu thì kiểu dữ liệu của nĩ sẽ là Variant (là kiểu thay đổi được)

b) CÁC KIỂU DỮ LIỆU CƠ BẢN

Tên kiểu Ý nghĩa Miền giá trị Số Byte

Byte Số nguyên 0 → 255 1

Boolean Logic 0: false ; -1: true 2

Integer Số nguyên -32768 →32767 2

Long Số nguyên -2147483648 →2147483647 4

Currency Số thực - 922337203685774.5808 → 922337203685774.5808

8 Single Số thực -3.402823E38 → -1.401298E-45 (âm)

1.401298E-45 →3.402823E38 (dương)

4 Double Số thực -1.79769313486232E308 → -4.94065645841247E-324 (âm) 4.94065645841247E-324 → 1.79769313486232E308 (dương) 8 Date Ngày 1/1/100 → 32/12/9999 8

String Chuỗi Khơng quá 2 tỷ ký tự

Variant Bất kỳ dữ liệu gì 16

Object Bất kỳ đối tượng nào

4

c) KIỂU DỮ LIỆU SỐ

- Dùng để khai báo cho các biến kiểu số.

- Nếu biến chứa giá trị nguyên thì ta dùng kiểu Integer hoặc Long - Nếu biến chứa giá trị lẻ thì ta dùng kiểu Single, Double, Currency.

d) KIỂU DỮ LIỆU CHUỖI

- Dùng để khai báo cho các biến chứa giá trị là một chuỗi ký tự.

- Khi khai báo một biến kiểu chuỗi thì chiều dài của nĩ thay đổi tùy theo giá trị dữ liệu mà nĩ chứa đựng.

- Nếu muốn biến kiểu chuỗi cĩ chiều dài cố định thì ta dùng cú pháp

String *kích thước

Thí dụ: Dim Ten As String *8 (Biến Ten kiểu chuỗi cĩ độ dài 8 ký tự)

- Khi một kiểu dữ liệu số được chuyển thành ngày, các giá trị bên trái dấu chấm thập phân sẽ đại diện cho ngày và các giá trị bên phải dấu chấm thập phân sẽ đại diện cho giờ.

- Ta cĩ thể dùng hàm Cdate để chuyển đổi 1 con số thành kiểu dữ liệu ngày. Thí

dụ: Cdate(2) = #1/1/1900#

g) KIỂU DỮ LIỆU THAY ĐỔI (VARIANT)

- Là kiểu dữ liệu cĩ thể lưu trữ nhiều loại dữ liệu khác nhau.

- Biến cĩ kiểu Variant cĩ thể chứa các loại dữ liệu số, chuỗi, ngày hoặc giá trị Null.

- VBA sẽ tự động chuyển đổi kiểu dữ liệu cho phù hợp khi ta gán những kiểu dữ liệu này cho các biến kiểu Variant.

- Thí dụ:

Dim X → Biến X được khai báo cĩ kiểu Variant

X = “10” → X chứa giá trị kiểu chuỗi “10”

X = X – 2 → X chứa giá trị kiểu số là 8

X = X & “A” → X chứa giá trị kiểu chuỗi là “8A”

- Cĩ thể dùng hàm IsNumeric để kiểm tra xem biến cĩ chứa giá trị kiểu số hay khơng. Hàm này trả về giá trị True khi biến được kiểm tra chứa giá trị kiểu số. - Cĩ thể dùng hàm IsDate để kiểm tra xem biến cĩ chứa giá trị kiểu ngày hay

khơng. Hàm này trả về giá trị True khi biến được kiểm tra chứa giá trị kiểu ngày.

- GIÁ TRỊ RỖNG (EMPTY)

Khi một biến cĩ kiểu Variant khi khởi tạo nĩ sẽ được gán một giá trị rỗng. Giá trị rỗng là giá trị đặc biệt. Giá trị này khác với giá trị khơng, một chuỗi rỗng (cĩ chiều dài bằng khơng) hoặc giá trị Null. Để kiểm tra một biến cĩ giá trị rỗng hay khơng ta dùng hàm Empty. Hàm này trả về giá trị True khi biến chứa giá trị rỗng.

Biến cĩ kiểu dữ liệu thay đổi cĩ thể chứa một giá trị đặc biệt gọi là giá trị Null. Null dùng để chỉ một dữ liệu thất lạc hoặc khơng xác định được. Các Field hoặc các Control mà khơng được khởi tạo trước thì giá trị mặc định là Null. Ta cĩ thể dùng hàm IsNull để kiểm tra một biến cĩ chứa giá trị Null hay khơng. Hàm này trả về giá trị True khi biến được kiểm tra chứa giá trị Null.

Lưu ý:

- Một biểu thức cĩ chứa giá trị Null thì kết quả trả về luơn là Null.

- Phần lớn các hàm trả về giá trị Null nếu tham số mà ta truyền vào cho hàm cĩ giá trị Null.

- Cĩ thể dùng từ khĩa Null để gán giá trị Null cho một biến kiểu Variant. Thí dụ X = Null.

- Chỉ cĩ biến cĩ kiểu dữ liệu thay đổi là cĩ thể chứa giá trị Null.

h) KIỂU DỮ LIỆU ĐỐI TƯỢNG (OBJECT)

- Các biến kiểu đối tượng sẽ lưu trữ địa chỉ của các đối tượng trong một ứng dụng hoặc trong một số ứng dụng khác.

- Một biến kiểu đối tượng cĩ thể được gán giá trị bằng câu lệnh SET

- Thí dụ: khai báo biến để tham chiếu đến một Recordset của Table T_HOSONV

nằm trong tập tin CSDL hiện hành.

Dim Rs As Recordset

Set Rs = CurrentDB.OpenRecordset(“T_HOSONV”,dbOpenDynaset)

3.2.10. MỘT SỐ CHÚ Ý KHI SOẠN THẢO LỆNH TRONG NGƠN NGỮ VB

a) MỘT SỐ QUY ƯỚC KHI SOẠN THẢO LỆNH TRONG VB

• Ngơn ngữ lập trình VB khơng phân biệt chữ thường hay chữ in khi soạn thảo lệnh.

Ví dụ:

Dim A As Byte ta cũng cĩ thể viết

DIM A AS BYTE hoặc dim a as byte

• Mỗi lệnh phải đặt nằm trọn vẹn trên cùng một dịng màn hình.

o Nếu lệnh ngắn thì ta cĩ thể đặt nhiều lệnh trên cùng một dịng màn hình nhưng giữa các lệnh phải cách nhau bằng dấu hai chấm “:”.

Ví dụ: A=2 B=3 C=A+B

ba lệnh trên cĩ thể được viết trên cùng một dịng màn hình là: A=2 : B=3 : C=A+B

b) VIẾT CÁC LỆNH BÊN TRONG CỬA SỔ MÃ LỆNH

Viết các lệnh trong cửa sổ soạn thảo hồn tồn tương tự như bất kỳ phần mềm soạn thảo văn bản nào khác. Cĩ thể sao chép, di chuyển, xĩa các câu lệnh. Tuy vậy, VBA cũng cung cấp một số các đặc trưng để việc soạn thảo dễ dàng, thuận lợi hơn:

Tự động xây dựng các câu lệnh: Khi ta gõ vào một vài ký tự thì Access sẽ tự

động dị tìm và hiện ra danh sách các câu lệnh thích hợp để ta lựa chọn. Thí dụ: Khi ta gõ tên một điều khiển trên Form là nút lệnh cĩ tên Cmdchao thì Access tự động hiện ra bảng danh sách các thuộc tính và phương thức của nĩ.

Hình 3.19: Tự động xây dựng câu lệnh

Khi hiện ra danh sách, để hồn thành câu lệnh ta cĩ thể chọn trong danh sách hoặc gõ thêm một vài ký tự cho đến khi vệt sáng đậu trên phương thức hoặc thuộc tính mà ta cần sau đĩ nhấn phím Tab để chọn thuộc tính hoặc phương thức đĩ. Nếu hủy bỏ ta bấm ESC.

Xem thơng tin nhanh: Khi ta gõ vào một thủ tục hoặc một phương thức sẽ cĩ

một lời mách hiển thị các tham số cần thiết của một thủ tục hoặc cú pháp của thủ tục đĩ.

Hình 3.20: Hiện lời mách nước cho hàm MsgBox

Tự động kiểm tra cú pháp câu lệnh: Khi ta hồn thành một câu lệnh và di

chuyển con trỏ chèn sang dịng mới. VBA sẽ tự động kiểm tra cú pháp của dịng lệnh vừa gõ và hiển thị thơng báo lỗi nếu cĩ.

Hình 3.21: Báo lỗi khi cú pháp của dịng lệnh bị sai.

Cho phép kéo thả: khi muốn di chuyển một hoặc nhiều dịng lệnh từ vị trí này

sang vị trí khác hoặc từ module này sang module khác ta khơng cần phải thực hiện thao tác cắt dán mà ta chỉ cần chọn những dịng lệnh cần di chuyển rồi drag (kéo) sang vị trí mới.

Khơi phục các hành động trước đĩ: để cĩ thể phục hồi các lệnh soạn thảo trước đĩ ta cĩ thể bấm vào nút Undo .

Hình 3.22. Chọn Đối tượng cần viết thủ tục biến cố

d) SỬ DỤNG CÁC ĐIỂM ĐÁNH DẤU

- Ý nghĩa: Khi làm việc với các ứng dụng lớn, để đánh dấu những vị trí quan trọng cần xem giữa các cửa sổ soạn thảo hoặc giữa các thủ tục nhằm sau này quay lại nhanh những vị trí đĩ thì ta dùng điểm đánh dấu (Bookmark).

- Tạo BookMark: Đặt con nháy tại dịng cần đặt điểm đánh dấu. Chọn lệnh Edit

/ Bookmark / Toggle BookMark. Một hình chữ nhật màu xanh xuất hiện bên trái dịng lệnh hiện hành. Muốn bỏ ta làm tương tự tại vị trí đã cĩ BookMark.

Hình 3.23: Đánh dấu vị trí dịng lệnh trên Module

- Di chuyển giữa các BookMark đã tạo: Chọn lệnh Edit / BookMark / Next

BookMark để di chuyển tới những BookMark tiếp sau. Hoặc chọn lệnh Edit / BookMark / Previous BookMark để di chuyển tới những BookMark kế trước. - Xĩa tất cả các điểm đánh dấu: Chọn lệnh Edit / BookMark / Clear All

BookMark.

3.3. CẤU TRÚC LỆNH TRONG VBA 3.3.1. CẤU TRÚC LỆNH GÁN 3.3.1. CẤU TRÚC LỆNH GÁN

- Cú pháp: <tên biến>=<biểu thức>

Trong đĩ: <biểu thức> cĩ thể là hằng, biến, hàm hoặc biểu thức thực sự

- Ý nghĩa: lệnh thực hiện lấy giá trị của biểu thức làm nội dung cho biến cĩ tên

được chỉ định trong cú pháp. - Ví dụ:

a=3 ‘ biểu thức trong lệnh này là một hằng số nguyên. b=a ‘ biểu thức trong lệnh này là một tên biến khác. c=sqr(4) ‘ biểu thức trong lệnh này là hàm căn bậc 2. d=a+b+c ‘biểu thức trong lệnh này là một biểu thức số học.

3.3.2. CẤU TRÚC ĐIỀU KHIỂN IF…END IF a) CẤU TRÚC IF KHUYẾT DẠNG MỘT LỆNH a) CẤU TRÚC IF KHUYẾT DẠNG MỘT LỆNH

- Cú pháp:

If <Điều kiện> Then <lệnh>

- Ý nghĩa: Nếu <Điều kiện> là đúng thì thực hiện <lệnh>, ngược lại khơng làm

gì cả.

- Ví dụ:Hàm TimMax cĩ chức năng tìm giá trị lớn nhất của 2 giá trị chứa trong

tham số A, B.

Hình 3.24: Sử dụng If thiếu để tìm số lớn nhất

b) CẤU TRÚC IF KHUYẾT DẠNG NHIỀU LỆNH

- Cú pháp:

If <Điều kiện> Then

<Khối lệnh>

End If

- Cú pháp:

If <Điều kiện> Then <lệnh 1> Else <lệnh 2>

- Ý nghĩa: Nếu <Điều kiện> là Đúng thì thực hiện <lệnh 1>, ngược lại, nếu

<Điều kiện> là Sai thì thực hiện <lệnh 2>.

- Thí dụ: Đoạn chương trình cĩ chức năng tìm số lớn nhất trong 2 số nguyên A

và B.

If A>B then Max=A Else Max=B

d) CẤU TRÚC IF ĐỦ DẠNG MỘT LỆNH

- Cú pháp:

If <Điều kiện> Then

<Khối lệnh 1>

Else

<Khối lệnh 2>

End If

Trong đĩ <Khối lệnh 1>, <Khối lệnh 2> cĩ thể là một lệnh hoặc nhiều lệnh.

- Ý nghĩa: Nếu <Điều kiện> là đúng thì thực hiện <Khối lệnh 1>, ngược lại, nếu

<Điều kiện> là Sai thì thực hiện <Khối lệnh 2>

- Thí dụ:Đoạn chương trình cĩ chức năng tìm giá trị lớn nhất và giá trị nhỏ nhất

trong 2 số A và B. If A>B then Max=A Min=B Else Max=B Min=A

End If

e) CẤU TRÚC IF DẠNG PHỨC TẠP NHIỀU TRƯỜNG HỢP

- Cú pháp:

If <Điều kiện 1> Then

<Khối lệnh 1>

ElseIf <Điều kiện 2> Then

<Khối lệnh 2> …

....

ElseIf <Điều kiện n> Then

<Khối lệnh n>

[Else

<Khối lệnh n+1>]

End If

- Ý nghĩa: Nếu <Điều kiện 1> là đúng thì thực hiện <Khối lệnh 1>, nếu <Điều

kiện 2> là đúng thì thực hiện <Khối lệnh 2>,…, nếu <Điều kiện n> là đúng thì

thực hiện <Khối lệnh n>, nếu khơng cĩ điều kiện nào là đúng cả thì thực hiện

<Khối lệnh n+1> nếu cĩ.

- Thí dụ: đoạn chương trình biện luận để tìm nghiệm phương trình bậc ở dạng tổng quát ax2 +bx+c=0, (a<>0)

Delta=b^2-4*a*c If Delta<0 then

Msgbox “Phương trình vơ nghiệm” ElseIf Delta=0 then

Msgbox “Phương trình cĩ nghiệm kép x1=x2=” & -c/(2*a) Else

x1=(-b+Sqr(delta))/(2*a) x2=(-b-Sqr(delta))/(2*a)

Msgbox “Phương trình cĩ 2 nghiệm phân biệt x1=” & x1 & “ x2=” & x2 End If

3.3.3. CẤU TRÚC CHỌN LỰA a) CÚ PHÁP a) CÚ PHÁP

End Select b) Ý NGHĨA:

Nếu <Biểu thức kiểm tra> cĩ giá trị là <Giá trị 1> thì thực hiện <Nhĩm lệnh

1>, nếu <Biểu thức kiểm tra> cĩ giá trị là <Giá trị 2> thì thực hiện <Nhĩm lệnh 2>, … , Nếu <Biểu thức kiểm tra> cĩ giá trị là <Giá trị n> thì thực hiện <Nhĩm lệnh n> , cịn nếu <Biểu thức kiểm tra> cĩ giá trị khác với các giá trị đã liệt kê thì

thực hiện <Nhĩm lệnh n+1> nếu cĩ.

c) THÍ DỤ:

Thủ tục con tìm thứ của một ngày bất kỳ

Public Sub InThuCuaNgay()

Dim Thu As String

Ngay = InputBox("Nhap mot ngay bat ky", "Nhap lieu") Select Case Weekday(Ngay)

Case 1

Thu = "Chu Nhat" Case 2

Thu = "Thu Hai" Case 3

Thu = "Thu Ba" Case 4

Thu = "Thu Tu" Case 5

Thu = "Thu Nam" Case 6

Thu = "Thu Sau" Case 7

Thu = "Thu Bay" End Select

MsgBox Ngay & " la ngay " & Thu, vbInformation, "Ket qua" Debug.Print Ngay & " la ngay " & Thu

End Sub

Khi chạy chương trình

Hình 3.25: Hộp thoại yêu cầu nhập ngày cần tìm thứ của nĩ

Bấm OK sẽ xuất hiện

Hình 3.26: Kết quả hiển thị trên MsgBox

3.3.4. CẤU TRÚC VỊNG LẶP a) CẤU TRÚC DO…LOOP a) CẤU TRÚC DO…LOOP

Dùng với While Dạng 1:

- Cú pháp:

Do While <Điều kiện lặp>

<Khối lệnh>

Loop

- Ý nghĩa: Kiểm tra <Điều kiện lặp> trước. Nếu <Điều kiện lặp> là Đúng thì thực hiện <Khối lệnh> và cứ lặp như thế cho đến khi nào điều kiện lặp là Sai thì dừng vịng lặp.

Dạng 2:

<Khối lệnh>

Wend

- Ý nghĩa: Kiểm tra <Điều kiện lặp>. Nếu <Điều kiện lặp> là Đúng thì thực hiện <Khối lệnh>. Nếu <Điều kiện lặp> là Sai thì thốt khỏi vịng lặp.

Dùng với Until Dạng 1:

- Cú pháp:

Do Until <Điều kiện lặp>

<Khối lệnh>

Loop

- Ý nghĩa: Kiểm tra <Điều kiện lặp> trước. Nếu <Điều kiện lặp> là Sai thì thực

hiện <Khối lệnh>. Khi nào <Điều kiện> là Đúng thì dùng vịng lặp.

Dạng 2:

- Cú pháp: Do

<Khối lệnh>

Loop Until <Điều kiện lặp>

- Ý nghĩa: Thực hiện <Khối lệnh> trước, sau đĩ mới kiểm tra <Điều kiện lặp>.

Nếu <Điều kiện lặp> là Sai thì quay về tiếp tục thực hiện lại <Khối lệnh>. Khi nào <Điều kiện lặp> là Đúng thì dừng vịng lặp.

Thí dụ: Viết thủ tục hàm tính tổng của N số tự nhiên

Hình 3.27: Tính tổng N số tự nhiên dùng Do While…Loop

Dùng Do…Loop While

Hình 3.28: Tính tổng N số tự nhiên dùng Do…Loop While

Hình 3.30: Tính tổng N số tự nhiên dùng Do…Loop Until

Dùng While …Wend

Hình 3.31: Tính tổng N số tự nhiên dùng While…Wend

Lưu ý:

Trong cấu trúc này muốn thốt ra khỏi vịng lặp cĩ cấu trúc Do mà khơng cần kiểm tra <điều kiện lặp> thì ta cĩ thê dùng lệnh Exit Do.

b) CẤU TRÚC FOR…NEXT

- Cú pháp:

For <Biến đếm> = <Giá trị đầu> To <Giá Trị cuối> Step <Bước nhảy>

<Khối lệnh>

Next <Biến đếm>

- Trong đĩ:

Nếu khơng khai báo Step thì mặc nhiên <Bước nhảy> là 1. - Ý nghĩa:

+ Bước 1: <Biến đếm> được gán giá trị bằng <Giá trị đầu>.

+ Bước 2: Kiểm tra <Biến đếm> cĩ nhỏ hơn hay bằng giá trị cuối hay khơng

(trường hợp bước nhảy mang giá trị dương, cịn bước nhảy mang giá trị âm thì kiểm tra ngược lại).

+ Bước 3: Nếu kết quả kiểm tra là Đúng thì thực hiện <Khối lệnh> > Nếu kết

quả kiểm tra là Sai thì dừng vịng lặp.

+ Bước 4: Nhảy giá trị của <Biến đếm> lên thêm một <Bước nhảy>. Quay lại

Bước 2. - Thí dụ:

1/ Viết thủ tục con để tính tổng N số tự nhiên dùng vịng lặp For…Next

Hình 3.32: Tính tổng N số tự nhiên dùng For…Next (For tăng)

InputBox(<Câu thơng báo>[, <Tiêu đề>][, <Giá trị mặc định>])

Chức năng:

Hàm sẽ hiển thị một hộp thoại nhập liệu. Giá trị nhập vào hàm qua hộp thoại sẽ được dùng để gán cho biến.

Thí dụ:

Lệnh sau đây:

a = InputBox(“Nhập vào giá trị cho a: “, “Nhap lieu”,9)

sẽ hiển thị hộp thoại sau:

Hình 3.34: Hộp thoại yêu cầu nhập số a

và giá trị nhập qua hộp thoại sẽ được gán cho biến a.

3.4.2. HÀM XUẤT DỮ LIỆU (MSGBOX) Cú pháp: Cú pháp:

MsgBox (<Câu thơng báo>[, <Loại hộp thoại>][, <Tiêu đề>])

Nếu khơng khai báo “Tiêu đề” thì mặc nhiên lấy tiêu đề hộp thoại là Microsoft

Một phần của tài liệu [2]access2 (Trang 70)