Nhóm hàm xử lý giá trị

Một phần của tài liệu Tài liệu Tài liệu hướng dẫn giảng dạy - Chứng chỉ tin học quốc gia trình độ B pdf (Trang 64 - 71)

I. Hàm/Thủ tục thường dùng

I.1.Nhóm hàm xử lý giá trị

Nhóm hàm xử lý giá trị chủ yếu xử lý trên những kiểu dữ liệu cơ bản như số, chuỗi, ngày giờ, …

I.1.1. Hàm thông báo: MsgBox

Đây là một hàm thường được sử dụng nhiều nhất khi viết chương trình, khi hàm này được gọi nó sẽ hiện một cửa sổ thông báo với nội dung có thể thay đổi tuỳ theo yêu cầu.

MsgBox có thể được sử dụng như là một thủ tục hay một hàm. Nếu là thủ tục, MsgBox chỉ đơn giản là cung cấp thông tin cho người dùng. Nếu là hàm, MsgBox mang ý nghĩa vừa cung cấp thông tin vừa nhận lại giá trị hồi đáp của người dùng.

Sử dụng MsgBox như là một thủ tục theo cú pháp sau:

MsgBox “Nội dung thông báo”, Bộ nút + Biểu tượng, “Tiêu đề”

Ví dụ:

Nếu ta có một câu lệnh như sau

MsgBox “Xin chao cac ban”, vbOKOnly + vbInformation, “Su dung”

Khi chương trình thực thi câu lệnh trên, ta sẽ thấy trên màn hình xuất hiện cửa sổ có dạng như hình sau:

Trong hình trên, hình xuất hiện bên trái câu “Xin chao cac ban” chính là biểu tượng của cửa sổ thông báo, hình dạng của biểu tượng sẽ được xác định thông qua một giá trị hằng số, trong ví dụ trên là vbInformation. Ta có một số hằng số ứng với các biểu tượng như sau:

vbInformation vbQuestion vbCritical

Hình dạng của các biểu tượng có thể khác tuỳ vào hệ điều hành bạn đang sử dụng.

Chứng chỉ B Tin Học Quốc Gia Trang 64/131

Nút OK bên dưới chính là bộ nút của hộp thoại. MsgBox có nhiều bộ nút khác nhau tuỳ theo nhu cầu sử dụng và để chọn bộ nút ta sẽ chỉ định một trong những hằng số sau:

vbOKOnly vbYesNo

vbYesNoCancel vbOKCancel

Giá trị của bộ nút và biểu tượng có thể kế hợp với nhau thông qua phép toán +, như trong ví dụ

Nội dung của tiêu đề sẽ hiển thị ở vùng trên cùng của hộp thoại thông báo, trong ví dụ trên tiêu đề sẽ có dạng

Trong cú pháp trên của MsgBox, ta có thể bỏ qua việc truyền giá trị cho tham số thứ 2 và thứ 3. Khi đó, hộp thoại sẽ tự động lấy giá trị mặc định cho tham số thứ hai là vbOKOnly và tham số thứ là ba là chuỗi “Microsoft Access”.

Sử dụng MsgBox như là một hàm:

Khi dùng MsgBox ở dạng hàm ta cần chú ý một điểm quan trọng là nhận giá trị trả về của nó. Giá trị trả về của MsgBox sẽ phụ thuộc vào bộ nút của hộp thoại, hộp thoại phải có ít nhất hai nút để người dùng có thể chọn lựa.

Tuỳ vào bộ nút sử dụng, kết quả trả về của MsgBox có thể là một trong những giá trị sau: vbYes, vbNo, VbOK, vbCancel.

Sử dụng MsgBox để thông báo và nhận kết quả trả lời từ người sử dụng ta cần thực hiện một số lệnh sau:

ƒ Khai báo một biến để nhận kết quả trả lời của người sử dụng.

ƒ Gọi thực thi hàm MsgBox với những tham số cần thiết và gán giá trị trả về cho biến đã khai báo ở trên.

ƒ Thực hiện thao tác xử lý tuỳ theo giá trị của biến kết quả. Cú pháp như sau:

Dim intKq as Integer

intKq = MsgBox(“Ban se chon Yes hay No?”, vbYesNo + vbQuestion, “Su dung ham”) If intKq = vbYes then

MsgBox “Ban da chon nut Yes” Else

MsgBox “Ban da chon nut No” End if (adsbygoogle = window.adsbygoogle || []).push({});

I.1.2. Len, Left, Mid, Right

Chứng chỉ B Tin Học Quốc Gia Trang 65/131

sẽ nhận vào một chuỗi và trả về kết quả xử lý chuỗi tương ứng.

Len

Hàm này cho biết số ký tự có trong một chuỗi, giá trị trả về là một con số nguyên lớn hơn hay bằng 0.

Cú pháp:

Len(Chuoi As String) As Long

Ví dụ:

Dim lngKq As Long lngKq = Len(“ABCDEF”)

Trong ví dụ trên, giá trị của biến lngKq sau khi thực hiện câu lệnh Len là 6.

Left

Hàm này dùng để lấy số ký tự từ bên trái của một chuỗi, giá trị trả về là chuỗi gồm những ký tự lấy được.

Cú pháp:

Left(Chuoi As String, SoKyTu As Long) As String

Ví dụ:

Dim strKq As String strKq = Left(“ABCDEF”, 4)

Trong ví dụ trên, giá trị của biến strKq sau khi thực hiện câu lệnh Left là chuỗi “ABCD”.

Right

Hàm này dùng để lấy số ký tự từ bên phải của một chuỗi, giá trị trả về là chuỗi gồm những ký tự lấy được.

Cú pháp:

Right(Chuoi As String, SoKyTu As Long) As String

Ví dụ:

Dim strKq As String strKq = Right(“ABCDEF”, 4)

Trong ví dụ trên, giá trị của biến strKq sau khi thực hiện câu lệnh Right là chuỗi “CDEF”.

Mid

Hàm này có thể thay thế cho hàm Left và Right, dùng để lấy số ký tự từ một vị trí bất kỳ có trong chuỗi, vị trí đầu tiên của chuỗi bắt đầu từ 1, giá trị trả về là chuỗi gồm những ký tự lấy được.

Cú pháp:

Chứng chỉ B Tin Học Quốc Gia Trang 66/131

Mid(Chuoi As String, ViTri As Long, SoKyTu As Long) As String (adsbygoogle = window.adsbygoogle || []).push({});

ViTri trong cú pháp trên sẽ là một con số biến thiên từ 1 đến chiều dài của chuỗi ký ký truyền vào cho Mid.

Ví dụ:

Dim strKq As String

strKq = Mid(“ABCDEF”, 3, 3)

Trong ví dụ trên, giá trị của biến strKq sau khi thực hiện câu lệnh Mid là chuỗi “CDE”.

Ngoài ra, ta có thể bỏ qua tham số thứ 3, SoKyTu, khi đó hàm Mid sẽ lấy những ký tự từ ViTri cho đến hết chuỗi. Với cách sử dụng này thì kết quả của hàm Mid giống với hàm Right.

Ví dụ:

Dim strKq As String strKq = Mid(“ABCDEF”, 3)

Trong ví dụ trên, giá trị của biến strKq sau khi thực hiện câu lệnh Mid là chuỗi “CDEF”.

I.1.3. DateSerial, Day, Month, Year, Date và Now

Nhóm hàm dùng để xử lý trên kiểu dữ liệu ngày, kiểu Date.

Khi làm việc với dữ liệu ngày trong Access, ta cần chú ý đến định dạng về cách tạo giá trị cho ngày. Giá trị kiểu ngày trong Access sẽ thể hiện ở dạng mm/dd/yyyy, tức là dạng tháng/ngày/năm.

Một giá trị hằng số kiểu ngày phải được bao bởi 2 dấu #.

Ví dụ nếu ta muốn tạo một biến x có giá trị là ngày 31 tháng 05 năm 2003 thì ta sẽ viết một số lệnh như sau:

Dim x As Date x = #05/31/2003#

DateSerial

Hàm này dùng để tạo một giá trị có kiểu Date từ những giá trị ngày, tháng, năm độc lập. Nghĩa là, trong trường hợp ta có những giá trị số về ngày, tháng và năm riêng biệt nhau và muốn tạo ra một giá trị có kiểu là Date từ những giá trị số đó ta phải sử dụng hàm DateSerial. DateSerial thường dùng để tạo giá trị ngày từ những biến lưu trữ thông tin về ngày, tháng, năm cần tạo. Tức là tại thời điểm viết lệnh, ta không thể biết được giá trị ngày sẽ được tạo. Cú pháp:

DateSerial(Nam As Integer, Thang As Integer, Ngay As Integer) As Date

Chứng chỉ B Tin Học Quốc Gia Trang 67/131

Ví dụ:

Dim intNam As Integer, intThang As Integer, intNgay As Integer Dim ngay As Date

Ngay = DateSerial(intNam, intThang, intNgay)

Day

Hàm này dùng để lấy ngày của một giá trị có kiểu Date, giá trị trả về có kiểu Integer. Cú pháp:

Day(ngay As Date) As Integer

Ví dụ:

Dim intNgay As Integer intNgay = Day(#06/03/2003#)

Giá trị của biến intNgay sẽ là 3 sau khi thực hiện câu lệnh Day.

Month (adsbygoogle = window.adsbygoogle || []).push({});

Hàm này dùng để lấy tháng của một giá trị có kiểu Date, giá trị trả về có kiểu Integer. Cú pháp:

Month(ngay As Date) As Integer

Ví dụ:

Dim intThang As Integer intThang = Month(#06/03/2003#)

Giá trị của biến intThang sẽ là 6 sau khi thực hiện câu lệnh Month.

Year

Hàm này dùng để lấy năm của một giá trị có kiểu Date, giá trị trả về có kiểu Integer. Cú pháp:

Year(ngay As Date) As Integer

Ví dụ:

Dim intNam As Integer intNam = Year(#06/03/2003#)

Giá trị của biến intNam sẽ là 2003 sau khi thực hiện câu lệnh Year.

Date và Now

Hai hàm này dùng để lấy ngày hay ngày và giờ hiện hành của hệ thống tại thời điểm mà hàm này được thực thi. Date sẽ cho ta ngày hiện hành trong khi Now sẽ lấy ngày và giờ hiện hành của máy tính.

Chứng chỉ B Tin Học Quốc Gia Trang 68/131

Ví dụ:

Dim NgayHienHanh As Date, NgayGioHienHanh As Date NgayHienHanh = Date

NgayGioHienHanh = Now

Val

Trong bài nói về các phép toán trong ngôn ngữ lập trình VBA, ta cần phải chú ý đến phép toán cộng do nó có thể sử dụng cho cả chuỗi và số.

Ví dụ:

Xét lại ví dụ về tính tổng 2 số trên Form của bài trước nhưng ở đây ta sẽ quan tâm đến các lệnh xử lý tính toán

Ở màn hình trên, người dùng sẽ nhập vào hai số ở Text Box Số A và Số B, khi học click vào nút Tính tổng thì sẽ xuất hiện kết quả tổng của A và B ở Text Box Tổng.

Giả sử khi thiết kế, ta đặt tên cho 3 điều khiển Text Box như sau, theo thứ tự từ trên xuống: txtA, txtB, txtTong

Để hiện kết quả tính toán theo yêu cầu, lệnh xử lý của ta đơn giản như sau: txtTong = txtA + txtB

Tuy nhiên, một điều quan trọng khi làm việc với dữ liệu của điều khiển Text Box là giá trị hiển thị trên Text Box luôn là dạng chuỗi, cho dù bạn nhập một con số thì nó sẽ dạng chuỗi số. Do đó, trong trường ví dụ trên thì câu lệnh của ta sẽ được biên dịch ra như sau:

txtTong = “54” + “321”

Và phép cộng sẽ được ưu tiên xử lý cho dạng chuỗi vì vậy giá trị của txtTong khi này sẽ là chuỗi số “54321”.

Giải pháp trong trường hợp thực hiện phép tính cộng trên Form là ta phải đổi những chuỗi số của Text Box thành những con số, sau đó mới thực hiện phép toán cộng. (adsbygoogle = window.adsbygoogle || []).push({});

Hàm Val sẽ dùng để đổi một chuỗi thành con số tương ứng, cú pháp có dạng sau: Val(Chuoi As String) As Double

Trong câu lệnh tính tổng trên, ta sẽ sửa lại như sau: txtTong = Val(txtA) + Val(txtB)

Chứng chỉ B Tin Học Quốc Gia Trang 69/131

Khi này, giá trị của txtTong sẽ là 375 như trong hình.

Một điểm cần lưu ý khi sử dụng Val là chuỗi truyền vào phải khác rỗng, nếu là chuỗi rỗng thì hàm Val sẽ gây lỗi.

I.1.4. IsNull, IsNumeric, IsDate

Các hàm này dùng để kiểm tra giá trị nhập vào các điều khiển có đúng với nhu cầu sử dụng hay không. Ví dụ, giá trị nhập vào Text Box chứa thông tin về ngày sinh thì bắt buộc giá trị của nó phải là kiểu Date.

Các hàm này sẽ nhận vào một giá trị cần kiểm tra và trả về là True hay False.

IsNull

Hàm kiểm tra một điều khiển hay biến có giá trị hay không. Nếu có giá trị thì hàm sẽ trả là True, ngược lại giá trị False sẽ được trả về.

Cú pháp:

IsNull(tên điều khiển|tên biến) As Boolean

Ví dụ:

Xét lại ví dụ ở hàm Val, ta cần phải kiểm tra Text Box A và B phải khác rỗng trước khi gọi thực hiện hàm Val, câu lệnh như sau:

If IsNull(txtA) = True or IsNull(txtB) Then

MsgBox “Ban phai nhap gia tri cho dieu khien” Exit Sub

End If

IsNumeric

Hàm kiểm tra giá trị của điều khiển hay biến có phải là số hay không. Nếu giá trị là số thì hàm sẽ trả là True, ngược lại giá trị False sẽ được trả về.

Cú pháp:

IsNumeric(tên điều khiển|tên biến) As Boolean

Ví dụ:

Trong ví dụ của hàm Val trên, sau khi kiểm tra Text Box A và B phải khác rỗng ta cần phải kiểm tra thêm giá trị nhập vào phải là chuỗi các số, nếu không thì không thực hiện việc tính toán, cú pháp như sau:

If Not IsNumeric(txtA) or IsNumeric(txtB) = False Then MsgBox “Ban phai nhap gia tri so cho dieu khien” Exit Sub

End If

Chứng chỉ B Tin Học Quốc Gia Trang 70/131

IsDate

Hàm kiểm tra giá trị của điều khiển hay biến có phải là kiểu ngày hay không. Nếu giá trị là ngày thì hàm sẽ trả là True, ngược lại giá trị False sẽ được trả về. (adsbygoogle = window.adsbygoogle || []).push({});

Cú pháp:

IsDate(tên điều khiển|tên biến) As Boolean

Một phần của tài liệu Tài liệu Tài liệu hướng dẫn giảng dạy - Chứng chỉ tin học quốc gia trình độ B pdf (Trang 64 - 71)