Nhập môn hệ quản trị cơ sở dữ liệu Phần 2 - 5

+ Thiết kế giao diện

+ Cài đặt 1 lớp doubleArray hỗ trợ xử lý các thao tác cần thiết với mảng số thực

+ Cài đặt các hàm hành xử cho các sự kiện ứng với giao diện trên form, sử dụng lớp doubleArray.

Chạy thử chương trình

Như vậy, ở đây chúng ta cần quan tâm đến các bươc thực hiện, các phần khác đã rõ ràng.

Thiết kế giao diện

Đề nghị bạn hãy thiết kế một form đặt tên là frmArrayCalculate có giao diện dạng như sau:


Giao diện trên bao gồm 03 Lable bạn đặt tên tùy ý Thuộc tính Text của mỗi Lable 1

Giao diện trên bao gồm:

+ 03 Lable, bạn đặt tên tùy ý. Thuộc tính Text của mỗi Lable bạn thiết lập như trên hình

+ 03 TextBox, bạn đặt tên lần lượt là txtNum, txtResult, txtSortedArray theo thứ tự từ trên xuống dưới.

+ 02 nút lệnh, bạn đặt tên lần lượt là cmdInitArray và cmdSortArrayASC theo thứ tự từ trái sang phải.

Cài đặt lớp doubleArray

Bạn hãy định nghĩa một Class Module, đặt tên là doubleArray như trong đoạn mã dưới đây. Các thuộc tính và hàm của lớp đã được mô tả chi tiết trong ví dụ của phần Class

Module. Ở đây, chúng ta định nghĩa thêm một hàm toString() trả về một chuỗi là các phần tử của mảng được phân tách nhau bởi dấu cách (space).

Option Compare Database Option Base 1

Option Explicit

Private a(350) As Double Private n As Integer

Public Property Get count() As Integer count = n

End Property

Public Property Let count(ByVal value As Integer) n = value

End Property


Sub initArray()

Dim i As Integer Randomize

For i = 1 To n

a(i) = Rnd * 100 a(i) = Round(a(i), 2)

Next End Sub

Function toString() Dim st As String st = ""

Dim i

For i = 1 To n

If (i < n) Then

st = st + CStr(a(i)) + " "

Else

st = st + CStr(a(i)) End If

Next

toString = st End Function

Sub showArray() Dim i

For i = 1 To n

MsgBox ("a[" & Str(i) & "] = " & Str(a(i))) Next

End Sub

Sub sortArrayASC()

Dim i, j As Integer For i = 1 To n - 1

For j = i + 1 To n

If (a(i) > a(j)) Then Dim tg As Double tg = a(i)

a(i) = a(j) a(j) = tg

End If Next

Next End Sub

Cài đặt các hàm cho các sự kiện

Ở đây, ta cài đặt 02 sự kiện OnClick của 02 nút lệnh như sau. Toàn bộ đoạn mã lệnh sau được đặt trong một MSCO Module có tên là Form_frmArrayCalcute

Option Compare Database Option Explicit

'Khai bao mot doi tuong doubleArray su dung chung trong toan chuong trinh Dim DA As doubleArray


Private Sub cmdInitArray_Click() Dim stResult As String stResult = ""

Dim stNum As String

Me.txtResult.SetFocus Me.txtResult = "" Me.txtNum.SetFocus stNum = Me.txtNum.Text

'Kiem tra xem co nhap so cac phan tu cua mang hay khong? If (stNum = "") Then

MsgBox "Ban phai nhap so phan tu cua mang!" Exit Sub

End If

'Kiem tra xem co nhap vao mot so hay khong? If (IsNumeric(stNum) = False) Then

MsgBox "So phan tu cua mang phai la mot so nguyen <= 350!" Exit Sub

End If

'Kiem tra xem co la mot so thap phan hay khong?

Dim pos1, pos2 As Integer pos1 = -1

pos2 = -1

pos1 = InStr(1, stNum, ",", vbTextCompare) pos2 = InStr(1, stNum, ".", vbTextCompare) If (pos1 > 0) Or (pos2 > 0) Then

MsgBox "So phan tu cua mang phai la mot so nguyen <= 350!" Exit Sub

End If


Dim num As Integer num = CInt(stNum)

If (num = Null) Or (num > 350) Then

MsgBox "So phan tu cua mang phai la mot so nguyen <= 350!" Exit Sub

End If

Set DA = New doubleArray DA.count = num

DA.initArray Me.txtResult.SetFocus Me.txtResult.Text = DA.toString

End Sub


Private Sub cmdSortArrayASC_Click()


Me.txtSortedArray.SetFocus Me.txtSortedArray.Text = ""


If (DA Is Nothing) Then

MsgBox "Ban can khoi tao ngau nhien mang truoc!" Exit Sub

End If


If (IsEmpty(DA) = True) Then

MsgBox "Ban can khoi tao ngau nhien mang truoc!" Exit Sub

End If


If (IsNull(DA) = True) Then

MsgBox "Ban can khoi tao ngau nhien mang truoc!" Exit Sub

End If


DA.sortArrayASC Me.txtSortedArray.SetFocus Me.txtSortedArray.Text = DA.toString

End Sub


Private Sub Form_Load() Set DA = Nothing

End Sub

Kết quả

Bạn hãy nhập vào ô “Số phần tử của mảng” (ví dụ: 10) sau đó click vào nút lệnh “Khởi tạo ngẫu nhiên mảng”. Kết quả khởi tạo sẽ được hiển thị trong ô “Kết quả khởi tạo ngẫu nhiên mảng”.

Bạn tiếp tục click vào nút lệnh “Sắp xếp mảng ASC”. Kết quả sắp xếp mảng được hiển thị trong ô “Kết quả sắp xếp mảng”.

Bạn hãy tự thử nghiệm các trường hợp khác của chương trình.


Đây là một trường hợp chạy chương trình 3 Kiểu dữ liệu hằng và biến 3 1 2

Đây là một trường hợp chạy chương trình.

3. Kiểu dữ liệu, hằng và biến

3.1 Kiểu dữ liệu

Một kiểu dữ liệu là tập hợp các giá trị mà một biến thuộc về kiểu đó có thể nhận được. Kiểu dữ liệu được đặc trưng bởi hai yếu tố:

Tập các giá trị thuộc về nó

Kiểu dữ liệu

Kích thước (byte)

Ký tự phân loại

Có thể chứa

Byte

1

Không có

Số nguyên từ 0 đến 255

Integer

2

%

Số nguyên từ -215 đến 215 – 1

Long

4

&

Số nguyên từ 231 đến 231 – 1

Có thể bạn quan tâm!

Xem toàn bộ 114 trang tài liệu này.

Tập hợp các phép toán (toán tử) có thể được thực hiện trên nó VBA cung cấp các kiểu dữ liệu sau đây:


Single

4

!

Số dấu chấm động từ -3.4*1038 đến 3.4*1038

Double

8

#

Số dấu chấm động từ -1.79*10308 đến

1.79*10308

Currency

8

@

Số nguyên được chia tỷ lệ với 4 số lẻ phần thập phân từ -922,337,203,685,477.5808 đến 922,337,203,685,477.5807

String

10 + 2 byte cho mỗi ký tự

$

Chuỗi ký tự dài tối đa 2 tỷ byte, chuỗi có độ dài cố định có thể dài tối đa 65400 ký tự

Boolean

2

Không có

True hoặc False

Date

8

Không có

Giá trị ngày giờ từ 1/1/100 đến 31/12/9999

Object

4

Không có

Bất kỳ tham chiếu đối tượng nào

Variant

16 đến

khoảng 2 tỷ byte

Không có

Bất kỳ loại dữ liệu nào


Có thể ngầm định định nghĩa kiểu dữ liệu cho biến bằng cách nối thêm một ký tự phân loại dữ liệu vào sau tên biến trong lần đầu tiên sử dụng biến.

Ngoài những kiểu dữ liệu VBA đã xây dựng sẵn, VBA còn cung cấp cho người dùng cú pháp để họ tự xây dựng kiểu dữ liệu của riêng mình, phù hợp với yêu cầu của ứng dụng. Đó là kiểu dữ liệu do người dùng định nghĩa (Kiểu cấu trúc).

Cú pháp khai báo:


[Private | Public]

Type varname

elementname [([subscripts])] As type [elementname [([subscripts])] As type]

. . .

End Type

Trong đó:

Public | Private: từ khóa xác định phạm vi truy xuất của kiểu dữ liệu tương ứng cho tất cả các thủ tục trong tất cả các module thuộc tất cả các dự án | chỉ trong phạm vi module chứa nó.

varname: tên kiểu dữ liệu được đặt theo quy tắc đặt tên của VB

elementname: tên các thành phần của kiểu dữ liệu

subscript: đặt chỉ số cho mảng nếu thành phần dữ liệu tương ứng là mảng type: là một trong những kiểu của VBA hoặc kiểu đã được định nghĩa trước. Ví dụ:

Type StateData

CityCode (1 To 100) As Integer 'Thành phần dữ liệu là một mảng 100 phần tử có chỉ số từ 1 đến 100.

County As String * 30

‘Thành phần dữ liệu là một xâu tối đa là 30 ký tự

End Type

‘Khai báo một biến mảng 100 phần tử có chỉ số từ 1 đến 100, mỗi phần tử là một cấu trúc kiểu StateData.

Dim Washington(1 To 100) As StateData

Kiểu cấu trúc chỉ được định nghĩa trong phần khai báo của các loại module, không được định nghĩa trong các hàm, thủ tục con. Trong Standard Module và Class Module, phạm vi truy xuất của kiểu cấu trúc mặc định là public.

Cú pháp truy xuất các thành phần của kiểu cấu trúc:


varname.elementname

Trong đó:

varname: là tên biến kiểu cấu trúc elementname: tên thành phần của kiểu cấu trúc. Ví dụ:

Với cấu trúc và khai báo biến của ví dụ trước, ta có các truy xuất hợp lệ sau:


Washington(1).CityCode(1) = 1

Washington(1).County = “100”

3.2 Hằng

Hằng là đại lượng có giá trị không đổi trong suốt thời gian chương trình thi hành. Cú pháp khai báo:

[Public | Private] Const constname [As type] = expression

Trong đó:

Public | Private: từ khóa xác định phạm vi truy xuất của hằng tương ứng cho tất cả các thủ tục trong tất cả các module thuộc tất cả các dự án | chỉ trong phạm vi module chứa nó. Các từ khóa này chỉ được viết trong phần khai báo của module, không được viết trong phạm vi thủ tục, hàm (mặc dù hằng có thể khai báo trong thủ tục, hàm). Private là phạm vi truy xuất mặc định

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 19/01/2024