Với ý niệm quản lý Cơ sở dữ liệu, một số khái niệm cơ bản cần hiểu nhưsau: Query là công cụ chuyên dụng trong việc truy vấn và xử lý thông tin trên Cơ sở dữ liệu.. Dữ liệu thì được lưu t
Trang 1MICROSOFT ACCESS
MỞ ĐẦU
Microsoft Access là một hệ quản trị dữ liệu (Database ManagenmentSystem) giúp ta quản lý, bảo trì và khai thác dữ liệu được lưu trữ bên trong mộtcách có hệ thống
So với những phần mềm đóng vai trò quản lý Cơ sở dữ liệu như Dbase,FoxPro, thì Access đa dạng và phong phú hơn, tân kỳ hơn dưới dạng Windows,
xử lý dữ liệu và in ấn ra bằng những giao diện đồ họa theo yêu cầu, văn bản thực
Với ý niệm quản lý Cơ sở dữ liệu, một số khái niệm cơ bản cần hiểu nhưsau:
Query là công cụ chuyên dụng trong việc truy vấn và xử lý thông tin trên
Cơ sở dữ liệu Ngoài ra, nó còn dùng trong việc tạo ra các báo biểu dùng xuất ramáy in có tính định dạng cao hơn Table
3 FORM (MẪU BIỂU):
Giúp “thân thiện hóa” thao tác nhập dữ liệu, giúp người sử dụng có cảmgiác như đang ghi điền vào các mẫu phiếu quen thuộc Trong Form có thể có chứanhiều Form khác (SubForm) cho phép nhập dữ liệu và nhiều Table khác nhau
4 REPORTS (BÁO BIỂU):
Dùng trong việc in ấn các báo biểu dưới nhiều hình thức, phong phú và đadạng, đẹp mắt, đồng thời đây là một cách hiển thị kết quả xử lý của Query
5 MACRO:
Trong khi sử dụng chương trình, có một số thao tác được lập lại nhiều lần
dễ làm cho người sử dụng nhàm chán, để tránh tình trạng này, Microsoft Accesscho phép tổ chức ra các Macro Đây là tập hợp các lệnh tự động hóa các thao táccần lập lại nhiều lần Khi chạy Macro, Microsoft Access sẽ thực hiện một loạt cácthao tác đã được định sẵn
6 MODULE:
Module là một dạng tự động hóa cao cấp hơn Macro viết bằng ngôn ngữlập trình VisualBasic, dùng thảo chương các lệnh hay yêu cầu phức tạp mà Macrokhông đáp ứng được
PHẦN THỨ NHẤT TABLE
1.1 Tạo mới:
Trong ngăn Table, chọn New:
Xuất hiện New Table với các thỉnh ý sau:
- Datasheet View: mở Table dưới dạng Datasheet dùng nhập thẳng dữ liệuvào bảng
- Design View: mở ra khung Design cho ta thiết kế
- Table Wizard: tạo bảng dưới sự hướng dẫn của Microsoft Access
Trang 2- Import Table: nhập một bảng từ DataBase khác về.
- Link Table: phần này xin trình bày trong phần Cơ sở dữ liệu đa ngườidùng
- Memo: trường Memo có thể chứa đựng một văn bản dài 32 MB
- Number: chứa các giá trị kiểu số
- Date/Time: chứa giá trị ngày giờ
- Currency: chứa giá trị tiền tệ theo đồng Dollar ($)
- Counter: chứa các giá trị số tự động do Microsoft Access gán vào vàkhông đổi được
- Yes/No: chứa giá trị luân lý
- OLE Object: đối tượng nhúng
1.2.3 Decription: Ghi chú giải cho Field
1.2.4 FieldPropeties:
- Field Size: độ rộng của dữ liệu, đơn vị tính bằng Byte, chú ý rằng một sốFont Tiếng Việt có độ rộng 2 bytes đối với chữ có dấu
- Format: các hiển thị dữ liệu trên màn hình
- Input Mask: quy định mẫu nhập liệu
- Caption: Một cách diễn đạt khác cho Field
- Default Value: cho phép gán giá trị ngầm định
- Validation Rule: biểu thức kiểm chính dữ liệu nhập
- Validation Text: thông báo biểu thức nhập không thỏa Validation Rule
- Required: chọn Yes nếu bắt buộc phải nhập dữ liệu vào Field này
- Allows Zero Lenght: chọn Yes nếu chấp nhận giá trị rỗng
- Index: lập chỉ mục:
Yes Duplicate OK : Có lập và cho phép trùng
Yes No Duplicate : Có lập, không cho phép trùng
1.3 PrimaryKey
Một Table bắt buộc phải chọn một chỉ tiêu nào đó làm khóa chính, nếukhông chọn khóa, Access sẽ tự động chèn vào thêm một Field có kiểu Counter vàđặt tên là RecID làm khóa
Vậy, sau khi thiết kế xong, ta gắp biểu tượng chìa khóa trên thanh công cụ
bỏ vào bên trái field dự định chọn làm khóa, hoặc có thể chọn field dự định làmkhóa, sau đó vào Menu Edit, chọn PrimaryKey để lập khóa cho Table
Sau cùng, khi đóng cưả sổ Design, chương trình yêu cầu lưu trữ lại Tablenày
1.4 Các thao tác cơ bản:
Trang 31.4.1 Nhập liệu:
Chọn Table, nhấn Enter hoặc bấm Open
Table được mở ra dưới dạng Datasheet với số cột đúng bằng số field đãthiết kế Nhập liệu bình thuờng giống như các phần mềm khác Riêng trường cóDataType là kiểu Yes/No ta nhập một trong hai giá trị 0 hoặc -1
Ta có thể thay đổi bề rộng cột bằng cách rà Mouse trên mép phảiFieldName nhấn và kéo
1.4.2 Hiệu đính:
Ta có thể hiệu đính lại một Table đã thiết kế bằng cách mở lại Table dướidạng Design Mục đích của việc hiệu đính là thiết kế lại theo ý muốn:
- Sửa lại thuộc tính của Field
- Chèn hoặc xóa Field
- Hoặc thực hiện các thao tác chỉnh sửa khác
1.4.3 Một số quy định ký hiệu InputMask:
# Chỉ nhập ký số hoặc khoảng trắng, không bắt buộc phải nhập, chấp
nhận cho nhập dấu cộng hoặc dấu trừ
L Nhập ký tự hoặc ký số (bắt buộc)
A Nhập ký tự hoặc ký số (không bắt buộc)
& Ký tự bất kỳ hoặc khoảng trắng (bắt buộc)
C Ký tự bất kỳ hoặc khoảng trắng (không bắt buộc)
< Ký tự theo sau đổi ra chữ thường
> Ký tự theo sau đổi ra chữ hoa
! Điền từ phải qua trái
\ Ký tự theo sau coi như hằng, trị
Lưu ý rằng tất cả dữ liệu đều được lưu trữ trên Table
PHẦN THỨ HAI QUERY
Query là một công cụ khá đặc trưng của Microsoft Access, nó đáp ứng cácyêu cầu vè truy vấn số liệu trên hê quản trị Cơ sở dữ liệu dưới nhiều hình thứcphong phú Muốn thực hiện được Query bắt buộc phải có Table, Query có thể thựchiện thao tác trên nhiều Table khác nhau nhằm rút ra được báo biểu cần thiết kếtxuất ra máy in
Mặt khác, với Query, người lập trình có thể tạo thêm một số trường tínhtoán và rút trích số liệu một cách chính xác và nhuần nhuyễn
Dữ liệu thì được lưu trữ trên Table, còn Query là một công cụ để tìm vànhìn dữ liệu dưới nhiều góc độ khác nhau, khi nhìn số liệu qua Query, khi thựchiện thao tác chỉnh sửa thì số liệu trên Table chọn làm Query cũng thay đổi theo
Ngoài ra, Query còn là nguồn cung cấp số liệu cho Form, hay Reports, kể
cả cho một Query khác
2.1 CÁC LOẠI QUERY:
2.1.1 Select Query:
Trang 4Đây là loại Query chọn số liệu Nó được sử dụng rất phổ biến, dùng đểchọn lựa các mẩu tin, tạo thêm các vùng tính toán (Calculate Field), và lấy số liệutóm lược.
Trong chừng mực nào đó, Select Query gần giống công cụ Filter trênDataSheet:
- Vấn tin trên nhiều Table
- Tạo thêm các vùng tính toán
Trang 5PHẦN THỨ BA MẪU BIỂU FORMS
Forms là một công cụ sắc xảo trong việc nhập liệu, nó giúp con người cócảm giác gần gũi khi làm việc trên máy tính
Forms được thiết kế phải dựa trên một Table hay một Query nguồn, nguồncủa Forms được gọi là DataSource
3.1 FORMDESIGN:
Giao diện FormDesign dùng cho việc thiết kế Forms
Các thành phần trên Forms đều có thuộc tính riêng Để tạo các thành phầnnày bằng cách chọn biểu tượng trên thanh ToolBox sau đó nhấn và kéo trên Forms Sau khi tạo xong nó trở thành một Object tương tự như các Object trong các phầnmềm khác trên giao diện Windows, nó có tám điểm canh, nhờ đó ta có thể dễ dàngdùng Mouse để thay đổi các kích thước của chúng, và có thể di chuyển chúng đến
Tuy nhiên trong một số Forms có chức năng Bakup hay Logo thì không gánthuộc tính này
- SingleForm: tại một thời điểm cho phép hiển thị duy nhất một mẩu tin
- Continuous Forms: hiển thị nhiều mẩu tin tại cùng một thời điểm
- Datasheet: thể hiện ở dạng Datasheet giống như giao diện của Table hayQuery
Khi thiết kế Form, ta có thể chọn nhiều dạng:
- Single Column: mẫu dạng cột
- Tabular: mẫu dạng bảng
- Graph: mẫu đồ thị
- Main/Sub: Mẫu Form có chứa From con bên trong
Như mục đích “thân thiện hóa” đã nói, thì dạng Datasheet rất ít được dùng
Trang 6Dạng Continuous Forms được dùng trong việc thống kê theo dõi dữ liệuhay rút trích dữ liệu theo những mục đích cụ thể và rõ ràng.
Dạng Single Forms rất thuận tiện trong việc cập nhật dữ liệu vào các Table.Chú ý rằng trong Microsoft Access thì Table là nơi lưu trữ dữ liệu, cònQuery và Forms chỉ là công cụ hỗ trợ trong công việc Như vậy Query và Formskhông lưu trữ dữ liệu
3.2.4 Các mục khác:
AllowsEdit: (Yes/No) quy định có chấp nhận chỉnh sửa dữ liệu không.DataEntry: (Yes) chế độ nhập mới
ScrollBar cho phép hiển thị các thanh cuốn khi dùng Continuous Forms khi
dữ liệu dài quá một trang màn hình
Nevigation Button cho phép hiển thị các nút phóng to hay thu nhỏ Forms.Tương tự cho Close Button
3.3 CÁC OBJECT TRÊN FORMS:
3.3.1 TextBox:
TextBox là thành phần không thể thiếu trên Forms cho phép người dùngnhập văn bản vào đó (TextBox có nghĩa là Hộp văn bản) Theo công dụng thìTextBox được phân thành ba loại chính:
+ TextBox BoundControl: BoundControl là loại TextBox gắn liền với mộtField của một Table hay Query, TextBox này dùng vào việc nhập liệu hay hiển thị
dữ liệu ra màn hình
+ TextBox UnBoundControl không gắn với bất kỳ Field nào, UnBoundControl thường dùng trong việc gửi vào một điều kiện nào đó dùng cho việcthi hành mộc tác vụ nào đó trên Forms hay CommandButton khi xảy ra một biến
ComboBox cũng có hai loại: BoundControl gắn liền với một Field của mộtTable hay Query, UnBoundControl không gắn với bất kỳ Field nào, dữ liệu của nó
là dãy danh sách được nhập vào trong khi thiết kế
CommandButton là nút lệnh dùng để thi hành một tác vụ gì đó khi có biến
cố (Even) xảy ra, tác vụ này có thể được gán dưới dạng Macro, Code hay mộtđoạn Module Các Even cơ bản thường gặp đối với CommandButton:
- On Click: nút lệnh được nhấn
- Double Click: nút lệnh được nhấn đôi
Trang 7- On Mouse Move: khi Mouse di chuyển ngang qua nút lệnh.
- On Lost Focus: khi nút lệnh được chọn
- On Got Focus: khi nút lệnh mất Focus
3.4.6 CheckBox:
CheckBox là hộp kiểm tra CheckBox chỉ có thể ở một trong hai trạng tháiđược chọn hay không được chọn
PHẦN THỨ TƯ MACRO
Macro là tập hợp một số thao tác tự động được thực hiện khi xảy ra Even.Các Even thường gặp đã được nêu trong phần CommandButton
4.1 MACRO ĐƠN:
Khi tạo mới một Macro, thường xuất hiện ra hai khung cơ bản:
4.1.1 Action:
Là khung chứa các lệnh cần thực hiện
Khi nhấp Mouse vào khung Action, lập tức một mũi tên dropdown xuấthiện, trong đó chứa một danh sách các lệnh:
Find Record GoTo Record GoTo Control GoTo Page
Set Value Set Warnings
Khi cần chỉ việc chọn trong List này thì Microsoft Access tự động cập nhậtlên dòng Action
Comment: Khung Comment là khung chú thích diễn giải cho người viếtchương trình nhớ và tìm kiếm dễ dàng hoặc sửa chưã khi cần thiết
4.1.2 ActionArgument:
ActionArgument là một bảng con đi theo một Action Như vậy có nghĩarằng với các Action khác nhau thì ActionArgument cũng khác nhau.ActionArgument được xem là thuộc tính của Action Sau đây là một sốActionArgument cơ bản:
4.1.2.1 Lệnh Open:
Khi dùng các lệnh Open (ví dụ: OpenForm), thì các thuộc tính phải khaibáo là: FormName: tên Form được mở
Filter Name: Khai báo sự chọn lựa
WhereCondition: khai báo điều kiện cho các dữ liệu được mở
4.1.2.2 Lệnh GoTo:
Lệnh GoTo thường có hai loại đi chung với nhau:
GoToRecord: chuyển con trỏ mẩu tin đến mẩu tin kế tiếp, khi đó, các thuộctính cần khai báo là:
- Object Type: Loại Table hay Form
- Object Name: Tên Object
- Record: Chọn Next là di chuyển đến mẩu tin kế
Trang 8- Previous trở về mẩu tin trước.
- Last đến mẩu tin cuối cùng
- Fist: trở về mẩu tin đầu tiên
4.1.2.3 RunCommand: thực hiện lệnh theo danh sách sẵn có của MicrosoftAccess
4.1.2.4 RunCode: thực hiện một mã lệnh, hoặc hàm tự tạo
4.2 MACRO NHÓM
Đôi khi ta tổ chức các Macro có các mối tương quan với nhau thành từngnhóm
Khi đó ta cần thêm các cột:
MacroName: Tên riêng cho từng Action
Sau đó là mục Action, và cuối cùng là Comment
4.3 THI HÀNH MACRO:
Về lý thuyết mà nói, chỉ cần chọn tên Macro trong MacroContainer sau đóchọn Run
PHẦN THỨ NĂM MODULE
Module được sử dụng vào công việc thảo chương khi Macro không đáp ứngđược công việc của người lập trình
Module thường được viết dưới dạng hàm (Function) hay dạng thủ tục (Sub)sau đó được Form gọi vào để thi hành
PHẦN LẬP TRÌNH ACCESS
Microsoft Access cho phép tạo và lưu trữ dữ liệu ở dạng Table Một Cơ sở
dữ liệu có thể có nhiều Table, trong Table có nhiều Fied, và có một hay nhiềuField được chọn làm khóa chính (Primary Key)
Hai Table có thể có mối quan hệ với nhau khi nó có thể bổ sung thông tincho nhau Có hai loại quan hệ giữa các Table trong Microsof Access:
- Table A có quan hệ một - một với Table B khi dữ liệu trên Table A chỉxuất hiện một lần trên Table B
- Table A có quan hệ một - nhiều với Table B khi dữ liệu trên Table A cóthể xuất hiện nhiều lần trên Table B
Để khai báo quan hệ, các Table phải xây dựng xong với đầy đủ khóa chính,khóa ngoại, gọi Menu Tools - RelationShip Sau khi thiết lập các mối quan hệRelationShip, các Table có thể bổ xung dữ liệu cho nhau nhằm tiết kiệm bớt bộnhớ vật lý cũng như logic
Phần mềm Microsoft Access cho phép người viết chương trình tạo ra cácmối quan hệ và xử lý dữ liệu khá linh hoạt Mặt khác, giao diện giữa người dùng
và máy tính được cải biên theo người Việt Nam với dàn Menu, bộ hướng dẫn vàcác thông báo lỗi của chương trình hoàn toàn bằng Việt ngữ
Trước khi dàn dựng chương trình cần chú ý:
NHỮNG THÀNH PHẦN CƠ BẢN TRONG ACCESS BASIC
1 BIẾN:
Từ khóa khai báo: Public, Global hoặc Dim:
Trang 9* Dim khai báo trong thủ tục có phạm vi cục bộ trong thủ tục đó.
* Dim khai báo trong Declaration Section của đơn thể thì thuộc đơn thểkhai báo biến
* Global khai báo trong Declaration Section của đơn thể thì trên toàn bộ hệthống áp dụng được biến đó, tốt nhất là sử dụng cho những biến tạm thời Nhiềuthủ tục khác nhau có thể sử dụng tên biến giống nhau
Biến thuộc đơn thể (Module variable): thì dùng chung cho những thủ tụcthuộc đơn thể đó, mọi thủ tục đơn thể đều có thể hoặc tham chiếu giá trị của biếnnày bằng tên của nó Những thủ tục của đơn thể khác thì không thể tham chiếuđược biến này Vì vậy muốn khai báo một biến đơn thể có thể sử dụng trong tất cảcác thủ tục bằng các ghi hiệu lệnh Dim trên vùng Declaration Section của đơn thểđó
* Biến toàn cục (Global variable) là biến có phạm vi sử dụng rộng nhất,nghĩa là giá trị của nó có thể tham chiếu từ bất kỳ một thủ tục nào thuộc bất kỳmột đơn thể nào trong hệ thống áp dụng của ta Cách khai báo tương tự như trênnhưng thay từ khóa Dim bằng Global
2 CÁC KIỂU DỮ LIỆU CƠ BẢN:
Variant
Biến Variant có thể chứa dữ liệu kiểu số học, kiểu chuỗi, kiểu ngày tháng
Ví dụ: Dim Temp As Variant
Các kiểu khác:
Dim i As Integer: khai báo số nguyên
Dim k As Double: khai báo số thực
Dim St As String: khai báo chuỗi
Sau đây là một mẫu gán giá trị cho biến có kiểu String (chuỗi), khai báotrong khi viết chương trình bằng ngôn ngữ AccessBasic
Froms!FormName!ControlName=Str Gán giá trị cho Control
- Lưu ý: Biến có kiểu String luôn được bao trong dấu nháy đôi “”
Ví dụ: đoạn mã lệnh sử dụng trong Forms Mật khẩu, người sử dụng bắtbuộc phải nhập đúng mật khẩu (kiểu chuỗi) mới vào được chương trình
Dim Password As String,FormName As String,StLinkCriteria As StringPassword = “MyPassword”
FormName = “FormName”
If TextMatkhau<>Password Then
If Solan < 3 ThenMsgBox “Sai mật khẩu”&Chr(13)&“Nhập lại”,64,”Thông báo” Solan = Solan + 1
ElseMsgBox “Không thể tiếp tục chương trình”,64,”Thông báo”
Docmd.Quit ‘ Thoát khỏi Microsoft Access
Else
Docmd.OpenForms FormName,,,StLinkCriteria
Trang 10End IfEnd If
Ta có thể viết một hàm dùng truy tìm mã một nhân viên để truy ra họ và têncủa nhân viên trong Table TCONGCHUC như sau:
Function NameChucdanh(ByVal MaConnect As String) As String
Dim STKetqua As String ‘biến kiểu chuỗi
Dim MyDBS As DataBase ‘biến kiểu DataBase
Dim MytabConnect As Recordset ‘biến Recordset
Set MyDBS = CurrentDb ‘DataBase hiện hành
Set MytabConnect = MyDBS.OpenRecordset("TCONGCHUC")
‘gán biến Recordset vào Table TCongchuc
MytabConnect.MoveFirst ‘về mẩu tin đầu tiên
Do Until MytabConnect.EOF ‘lặp đến cuối
If MaConnect = MytabConnect!MACC Then
Trong đoạn chương trình trên, lệnh gán dùng phương thức mở một Table đã
có trong DataBase Muốn lấy dữ liệu từ một trường nào đó ta sử dụng cách thứclấy đã quen thuộc trong khi tham vấn trên Query: Tên biến Recordset!Tên trường
Muốn chỉnh sửa nột dung trong Recordset, ta sử dụng các lệnh sau:
Ví dụ: Khai báo biến như sau: Dim RS As Recordset
Sau khi mở xong ta chuyển vào chế độ chỉnh sửa bằng lệnh: RS.Edit
Chỉnh sửa xong ta lưu lại bằng lệnh RS.Update
Sau cùng phải đóng Recordset bằng lệnh RS.Close
Chú ý: Hàm CurrentDB trả về DataBase hiện hành Khi viết Code ta dùnghàm này để truy vấn dữ liệu trên DataBase hiện hành
MẪU BIỂU FORMS
1 KHÁI NIỆM CƠ BẢN
Mẫu biểu Forms là một dạng thức dùng để biểu thị dữ liệu của chính mìnhgiúp cho người sử dụng dễ nhận biết với giao diện giống như các biểu mẫu quenthuộc hàng ngày Ta có thể dùng Forms để cập nhật, xem hay in ấn dữ liệu
Trang 11Default View: dạng thể hiện.
Allow Edits: Yes cho phép chỉnh sửa trên Froms; No không cho phép chỉnhsửa
Data Entry: tự động chèn mẩu tin trắng vào cuối Database để nhập mới.ScrollBars: thanh cuộn ngang và thanh cuộn dọc trên Forms
NavigationButtons Nút lệnh chọn record (Yes/No)
RecordSource: như trên đã nói, đây là nơi Form lấy dữ liệu hay cập nhật dữliệu, RecordSource có thể là một Table hay một Query
Ngoài ra còn rất nhiều các thuộc tính khác quy định các tính chất của mộtmẫu biểu Forms
Singel Forms : tại một thời điểm chỉ có duy nhất một mẩu tin được hiểnthị
Continues form: tại một thời điểm có nhiều mẩu tin được hiển thị
Trong quá trình thiết kế mẫu nhập liệu nên chọn Singel Forms và DataEntry
để nhập liệu vào mẩu tin cuối cùng
Muốn lọc, trích theo dõi dữ liệu, chọn Continues Form
Trong một Forms có thể có rất nhiều các biến cố Even, khi biến cố xảy rathì chương trình sẽ thi hành một tác vụ gì đó
Các tác vụ được thi hành có thể là một Macro hay một nhóm Macro, nhưngnhư đã nói ở phần trên, Macro rất dễ viết, nhưng các tác vụ phức tạp thì buộc phải
Trong chương trình thì việc gởi ra ngoài màn hình một thông báo là hết sứccần thiết Microsoft Access hỗ trợ cho người thảo chương hàm MSGBOX,MsgBox được sử dụng chủ yếu là trong công việc báo lỗi cho chương trình Một
số hiển thị chuẩn khi sử dụng MsgBox:
Cú pháp:
MsgBox(“Message”,type,“Title”)Message là nội dung câu thông báo
Type là cách thức hiển thị các CommandButton và các biểu tượng trên hộpDialog
Value Meaning
Trang 120 Display OK button only
1 Display OK,Cancel button
2 Display Abort, Retry and Ignore button
3 Display Yes, No and Cancel button
4 Display Yes and No button
5 Display Retry and Cancel button
Icon style
0 Display no icon
16 Display Critical Message icon
32 Display Warning Query icon
48 Display Warning Message icon
64 Display Information Message icon
* Các hằng số gán focus cho nút lệnh trên hộp thông báo MessageBox:VBDefaultButton1 0 First Button default
VBDefaultButton2 256 Second Button default
VBDefaultButton3 512 Third Button Default
VBDefaultButton4 768 Forth Button Default
* Resturn Value: giá trị gán vào khi các nút lệnh được click (OnClick)
DoCmd.QuitEnd If
2 PHẦN THỰC HÀNH
Trong mẫu biểu Form, đối tượng ComboBox làm cho Forms sinh động hẳnlên, nhờ có nó, ta sẽ mất đi cảm giác máy móc trong khi làm việc
1 ComboBox nhập liệu kiểu Logical:
Cụ thể trong một số trường hợp, dữ kiện trong Table được mang kiểu dữliệu (DatType) luân lý (Logical), nghĩa là chỉ có một trong hai nội dung True hoặcFalse
Các ví dụ minh họa để tham khảo:
* Giới tính: chỉ có một trong hai giới tính Nam hoặc Nữ
* Đảng phái: chỉ có thể là Có hoặc Không
* Biên chế của công chức chỉ có thể Có (trong Biên chế) hoặc Không(ngoài Biên chế)
Trang 13và nhiều ví dụ khác.
Trong các trường hợp này dữ liệu sẽ mang kiểu luân lý để tiết kiệm bộ nhớtrong quá trình lưu trữ dữ liệu
Trong máy tính, kiểu dữ liệu này được mã hóa như sau:
Giá trị True được mã hóa là 0
Giá trị False được mã hóa là -1
Khi đó ta tạo ComboBox dùng nhập dữ liệu này với các thuộc tính như sau:(Ví dụ cho giới tính)
Propeties
ControlSource :PHAITINH Dữ liệu ghi vào Field PHAITINHRowSourceType :ValueList Dữ liệu là một list có sẵn
RowSource :0;Nữ;-1;Nam
BoundControl :1 Dữ liệu cần lưu nằm ở cột 1
ColumnWidth :0;1,5 Chỉ cho cột 2 hiển thị
Ta xem sự thể hiện của toàn bộ list của ComboBox trên như sau:
2 ComboBox lựa chọn:
Trong loại này thì dữ liệu được lấy từ một Table thông qua câu lệnh Select: Propeties
ControlSource :FieldName Tên trường lấy dữ liệu
RowSourceType :Table/Query Lấy từ một Table hay QueryRowSource :Câu lệnh SQL câu lệnh Select
BoundControl :1 Dữ liệu cần lưu nằm ở cột 1
ColumnWidth :0;1,5 Chỉ cho cột 2 hiển thị
Câu lệnh SQL lựa chọn dữ liệu lấy lên là:
SELECT TCONGCHUC.MACC;TCONGCHUC.HOTEN
FROM TCONGCHUC;
Cũng có thể dùng ComboBox cho phép nhập một số dữ liệu cố định đượcquy định sẵn: chọn ValueList trong RowSourceType, mục RowSource nhập sẵnmột danh sách, giữa các phần tử cách nhau dấu chấm phẩy
2 FORMS VÀ CÁC NÚT LỆNH TRÊN FORMS:
Khi nhìn Form dưới dạng Design, ta thấy các thành phần cơ bản hay sửdụng gồm có:
Form Header chứa tiêu đề của Form
Trang 14Form Detail bao gồm các loại Control dùng nhập liệu, và cácControlButton.
1 Form Header:
Trên Form Header chỉ có một thành phần cơ bản là nhãn (Label)
Label chứa đựng một dòng văn bản dùng để chú thích về công dụng củaForm
Các thuộc tính cơ bản của Label:
* Name: ghi nhận tên của Label, khi tạo Label thì các Label được gán mộttên mặc định là Label<số>, trong đó <số> là số thứ tự của lần tạo Label Nếumuốn thay đổi ta xóa bỏ tên này để nhập vào một tên mới
* Caption: Nội dung trên nhãn Nội dung này thường có các thuộc tính đikèm theo là FontName, FontSize, FontStyle quy định Font chữ, kích cỡ và kiểuchữ Fore Color quy định màu chữ
* Back Style : quy định nền của Label, Back Style có hai tùy chọn:
Transparent: màu nền là màu trong suốt
Normal: có màu nền và có thêm thuộc tính :
Boder Style: quy định kiểu Boder
BoderColor: quy định màu của đường boder
SpecialEffect: tạo hiệu ứng cho Label trên nền của Header
* Tạo chữ nổi trên Tiêu đề:
Thực chất của việc tạo hiệu ứng chữ nổi này là ta tạo ra hai Label có cácthuộc tính hoàn toàn giống nhau về nội dung Caption, FontName, FontSize, vàFontStyle, Back Style được ấn định theo kiểu Transparent, nhưng thuộc tínhForeColor thì khác nhau, sau đó xếp hai Label so le với nhau sao cho ta nhìn thấychúng tạo thành một khối chữ nổi thì được
Trong một số trường hợp đặc biệt thì trên Headed vẫn có cácCommandButton, TextBox và ComboBox
Trên phần Hedead có TextBox hay ComboBox thì các Control này dùng đểchọn lựa là chính
2 Form Detail
Form Detail chứa tất cả các Control dùng vào việc nhập liệu, các Controlluôn có thuộc tính ControlName, có thống nhất một kiểu Font và FontSize Khitạo lập các Control này luôn có tên mặc định theo quy ước của Microsoft Access:khi tạo lập các TextBox có thuộc tính Name trùng với tên trường trong Table hoặcText<số> đối với UnBoundControl, tương tự cho ComboBox, CommandButton vàLabel
Thuộc tính Name của chúng không nên để mặc định, vì khi đó gây rất nhiềukhó khăn và phiền phức trong việc xây dựng các đoạn mã lệnh liên quan đến việctham chiếu với nhau Theo lý thuyết, các Control khác Forms có thể trùng tênnhau, nhưng nên đặt khác nhau để đỡ gây phiền hà trong việc viết các dòng lệnhtruy xuất dữ liệu trên tất cả các đối tượng Forms có trong Cơ sở dữ liệu
Cụ thể là:
1 TextBox và ComboBox:
Các TextBox trong phần Detail luôn là những BoundControl gắn liền vớifield trong Table dùng cập nhật dữ liệu vào Table hoặc lấy dữ liệu ra
Trang 15Các TextBor và ComborBox trên SingelForm là một bộ của Cơ sở dữ liệu,tham khảo về phần ComboBox đã nói ở mục trên.
Các EvenProcedure ở TextBox hay ComboBox mang tính kiểm tra dữ liệu,tính chính xác của ràng buộc toàn vẹn trên miền dữ liệu nên hay đặt ở các biến cốnhư OnGotFocus (khi nhận sự quan tâm), OnLostFocus (mất sự quan tâm),BeforeUpdate (trước khi cập nhật), AfterUpdate (sau khi cập nhật) và OnChange(dữ liệu thay đổi), xem chi tiết trong phần thực hành
2 CommandButton:
CommandButton có công dụng dùng để thực thi một lệnh hay một tác vụ gì
đó khi nó được nhấn (Click)
Thông thường, các EvenProcedure thường có ở CommandButton đặt ở cácbiến cố OnClick, DoubleClick và OnEnter
Trong một số trường hợp đơn giản, thì sử dụng Macro rất hiệu quả và dễviết Tuy nhiên Macro chỉ xử lý một số lệnh đơn giản, và lệnh thuộc loại lệnh đơn,
do đó đôi khi Macro không đáp ứng được công việc của người lập trình, khi đóngười ta phải dùng Module, Module được thảo chương nhờ ngôn ngữ Basic, vớiModule các thao tác phức tạp sẽ lần lượt được thực thi một cách dễ dàng
Ví dụ: Viết đoạn mã lệnh cho việc lưu trữ một record vưà nhập vào và phải
di chuyển điểm chèn về TextBox ghi nhận mã Học viên có Name làMMso:
OnError GoTo Loi_OK
DoCmd.GotoRecords ActiveDataObject,,,AcNextDoCmd.GotoControl ‘MMso’
Exit_OK:
Exit FunctionLoi_OK:
MsgBox “Xem lai trong qua trinh thao tac”,48,”Thong bao”
Resume Exit_OK
* Đoạn mã lệnh thực hiện lệnh đóng Form :
DoCmd.CloseThực hiện một nút lệnh dùng để hiển thị ra những mẩu tin thỏa mãn mộtyêu cầu được chỉ ra ở hai TextBox có tên là TextA và TextB trong FormFormName:
Dim STChonDot, StChonTen As String
StChonTen = "ControlName1 like Forms!FormName!TextA and" STChonDot = " ControlName2 like Forms!FormName!TextB"
On Error GoTo Err_LFilter
DoCmd.ApplyFilter , StChonTen & STChonDot
* Tái hiện lại thông tin:
Dim STChonDot, StChonTen As String
Forms!FormName!TextA = "*"
Trang 16Forms!FormName!TextB = "*"
StChonTen = "Hoten like Forms!FormName!TextA and"
STChonDot = " Ten like Forms!FormName!TextB"
On Error GoTo Err_Mchontat
DoCmd.ApplyFilter , StChonTen & STChonDot
Trên Forms có thể có một số TextBox dạng UnBoundControl dùng ghinhận một điều kiện để thông qua các TextBox này gửi một Even thực thi trongchương trình, TextBox này có một điểm đặc biệt là khi Forms được mở thì ngườidùng vẫn không thấy nó: nó đã được gán một thuộc tính Visible=Yes, và TextBoxnày được giấu trên FormsHeader
Giải thuật: Khi Mouse kích hoạt CommandButton Command16 thìTextBox dùng ghi lại điều kiện có tên TBTam được gán bằng 1, khi Mouse dichuyển trên Forms Header thì TBTam gán lại bằng 0 Đoạn chương trình như sau:
Tại CommandButton Command16:
Private Sub Command16_Enter()
TBTam = 1End Sub
Trên Forms Header:
Private Sub FormHeader_MouseMove(Button As Integer, Shift As Integer,
X As Single, Y As Single)
TBTam = 0End Sub
(X, Y là các toạ độ của Mouse trên Forms)
* Một Form với nhiều chức năng:
Trong trường hợp một Form đảm nhận ba chức năng: cập nhật, chỉnh sửa
và xem chi tiết nội dung của một Record trên Forms, giả sử Forms có tên là FLL
Trên Form này có hai nút lệnh : CmdOK dùng lưu trữ trong quá trình cậpnhật; CmdExit dùng để thoát
Nhãn trên HeaderForm ta tạo một nhãn và để trống, định dạng theo ý muốn
và đặt tên là MNHAN, nội dung nhãn thay đổi theo chức năng của Forms đuợcgọi
Tiếp tục thiết kế một Form Floc dùng gọi Form FLL, tên Floc có các nútlệnh dùng cập nhật, chỉnh sửa và xem lý lịch
Tạo một TextBox có thuộc tính Visible, với tên là Tam, (Unbound).TextBox này được thu nhỏ lại và đẩy vào cạnh của Forms
Tại thuộc tính OnEnter của các nút này ta gán các biến tạm và lưu trữ vàoTextBox Tam như sau: