1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Access nâng cao potx

15 2,1K 48

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 7,64 MB

Nội dung

Phần ứng dụng Visual Basic vào AccessThiết Kế FORM: Khi thiết kế Form chúng ta nên sử dụng chức năng Design View của form B1: FormNewDesign View OK B2: Vào thuộc tính của form Dat

Trang 1

Phần ứng dụng Visual Basic vào Access

Thiết Kế FORM:

Khi thiết kế Form chúng ta nên sử dụng

chức năng Design View của form

B1: FormNewDesign View OK

B2: Vào thuộc tính của form Data 

Control SourceChọn dấu …lấy nguồn dữ

liệu cho form

B3: Thiết kế form (giống phần căn bản)

B4: Tạo các đối tượng trên form bằng chức

năng tự thiết kế

B5: Viết các câu lệnh cho các sự kiện

Thuộc Tính Chung Của Form

Default View: chế độ hiển thị

của

Form

đơn (tạo Main

form )

dùng tạo Subform

Scroll Bars: Thanh cuộn trn

Form

thị thanh cuộn

dọc

Cuộn ngang

Navigation Button: Yes/No

cho hay không hiển thị thanh di chuyển mẩu tin

Picture Type: chọn hình nền

hiển thị trên Form

Data:

Control source: Nguồn dữ

liệu cho Form ( Field List) ( Ta có thể

click biểu tượng …mở cửa sổ

SQL_Staterment để chọn nguồn dữ liệu

cho Form khi tạo sub

Allow Edits: Yes/No

Cho/Không sửa dữ liệu trên form

Allow Deletions: Yes/ No->

Cho/ Không Xóa mẩu tin

Allow Additions: Yes/ No ->

Cho/ Không thêm mẩu tin mới

All

Caption: Tiêu đề của Form Dividing lines: Đường qua các phân vùng Navigation Buttons: Thanh chỉ mẩu tin Record seletors: Chức năng chỉ mẩu tin Record locks: Khoa mẩu tin trên form Enabled: Sáng/mờ đối tượng

Tab Index: Thứ tự khi nhấn phím tab Visible: Ẩn/ hiện đối tượng

Width: Độ rộng Hight: Chiều cao

Even Của Control

On Click: Xảy ra khi nhấn con trỏ

chuột

On Dbl Click: Khi nhấp đôi chuột

Before Update: Trước khi dữ liệu

trên Control được cập nhật vào bảng

After Update: Sau khi dữ liệu trên

Control được cập nhật vào bảng

Event Của Form

On Current: xảy ra khi có sự

di chuyển qua các mẩu tin khác

Before Update: Xảy ra trước

khi mẩu tin trong Form được cập nhật vào Table

After Update: Xảy ra sau khi

mẩu tin trên Form được cập nhật vào

Trang 2

On Got Focus: Khi Control nhận con

trỏ

On Exit: Khi con trỏ bắt đầu rời khỏi

Control

On Lost Focus: Khi con trỏ rời hẳng

Control

On Not In List: Kiểm tra dữ liệu

trong Combo box

Table

On Load: Xảy ra khi Form

được mở lên

Before Del Confirm: Xảy ra

trước khi xóa Record

After Del confirm: Xảy ra

sau khi xóa record

On Error: Xảy ra khi Form

xuất hiện một lỗi

Dạng 1:

If <điều kiện > Then

<một câu lệnh>

Nếu <điều kiện> đúng thì câu lệnh sẽ thực hiện

Dạng 2:

If <điều kiện> Then

< Nhóm lệnh>

End if

Nếu <điều kiện> đúng thì Nhóm câu lệnh sẽ thực hiện

Dạng 3:

If <điều kiện> Then

<nhóm câu lệnh 1>

Else

<nhóm câu lệnh 2>

End if

-Nếu <điều kiện> đúng thì <nhóm câu lệnh

1> sẽ thực hiện Ngược lại <điều kiện sai>

thì <nhóm câu lệnh 2> sẽ thực hiện.

Dạng 4:

if <điều kiện 1> Then

<Nhóm câu lệnh 1>

Elseif <điều kiện 2> Then

<Nhóm câu lệnh 2>

Elseif <diều kiện 3> Then

<Nhóm câu lệnh 3>

……

Else

<Câu lệnh cuối>

End if

Chú ý: Có thể kết hợp các dạng lồng vào nhau

Ví dụ: Thiết kế Form thực hiện công việc sau

Trang 3

1 Nếu DTB>=8 Xep loại: Giỏi

2 Nếu 6.5<= DTB <8 : Kh

3 Nếu 5<= DTB <6.5 : Trung Bình

4 Cịn lại: Yếu

Giải thuật: để viết giải thuật trên ta đặt tên

cho các Control và chọn sự kiện tương

ướng

Private CmdTrungBinh_Click()

Dim DTB As Single

DTB= Val(TxtNhapDiem.Text)

If (DTB>=8) Then

TxtXeploai=“ Giỏi”

Elseif (DTB>=6.5) Then

TxtXeploai=“Kh”

Elseif (DTB>=5) Then TxtXeploai=“Trung Bình”

Else

TxtXeploai=“Yếu”

End if

End sub

Dùng các công cụ Control tạo giao diện cho form; đặt lại tên-> vào thuộc tính On Click của nút lệnh viết sự kiện cho nút lệnh đó.

Thủ Tục Msgbox Và Hàm Msgbox:

Thủ tục MsgBox:

MsgBox “chuỗi thông báo”, “loại

thông báo”, “ Tiêu đề”

Ví dụ:

MsgBox “ Trùng khóa chính”,16,”thông

báo”

Hàm MsgBox:

MsgBox( “chuỗi thông báo”, “loại

thông báo”, “ Tiêu đề”)

Ví dụ:

Private Sub Cmdclose_Click()

If MsgBox("ban có muon thoat khong?", 36,

"Thoat") = 6 Then DoCmd.Close End If

End Sub

Chức Năng Di Chuyển Mẫu Tin Navigation

Di chuyễn MT: Nằm trong thư viện Docmd

Về đầu: Docmd.GoToRecord , , acFirst

Về cuối: Docmd.GoToRecord , , acLast

về sau: Docmd.GoToRecord , ,acNext

Về trước: Docmd.GoToRecord , , acPrevious

Khi đang ở MT đầu và cuối; ta thao tác di

Ví d : ng d ngụ ứ ụ

Trang 4

chuyển sẽ xảy ra lỗi, chú ý xử lý lỗi này

Thêm mới MT:

Me.AllowAddition = True

Docmd.GoToRecord , , acNewRec

Vào sự kiện On Click của các nút

lệnh và viết Code như sau

Private Sub Cmddau_Click()

DoCmd.GoToRecord , , acFirst

End Sub

-Private Sub Cmdtruoc_Click()

On Error GoTo loi ‘Xủ lý lỗi về trước

DoCmd.GoToRecord , , acPrevious

Exit Sub

loi:

MsgBox "Dang o mau tin dau ", 16, "chú ý"

End Sub

Private Sub CmdCuoi_Click()

DoCmd.GoToRecord , , acLast

End Sub

-Private Sub CmdSau_Click()

On Error GoTo loi ‘Xủ lý lỗi nút sau DoCmd.GoToRecord , , acNext Exit Sub

loi:

MsgBox "Dang o mau tin cuoi?",16, "Chu ý"

End Sub

Thao Tác Trên Điều Khiển – Text Box, List Box, Combo Box, Label,… Lưu mẫu tin:

Docmd.RunCommand acCmdSaveRecord

Xóa mẫu tin:

DoCmd.SetWarnings False ‘tắt cảnh báo

DoCmd.RunCommand acCmdDeleteRecord

DoCmd.SetWarnings True ‘bật cảnh báo

Phục hồi (không lưu)

If Me Dirty=True Then Me.Undo

( Dirty: kiểm tra mẫu tin có rỗng hay không )

Sáng/ Mờ các điều khiển:

Tên điều khiển.Enabled=True (Sáng) Tên điều khiển.Enabled=False (Mờ)

Ví dụ: Me.Them.Enabled=False

Hiện/ Ẩn điều khiển:

Tên điều khiển.Visible = True ( hiện)

Tn điều khiển.Visible = False (Ẩn )

Ví dụ: Me.Makh.Visible = False

Di chuyển con nháy ( Focus)

Tên điều khiển.SetFocus

Ví dụ: Me.Makh.SetFocus

Trang 5

Private Sub Form_Open(Cancel

As Integer)

Me.GHI.Enabled = False Me.KHONG.Enabled = False

End Sub

-Private Sub THEM_Click()

Me.AllowAdditions = True DoCmd.GoToRecord , , acNewRec Me.MASV.SetFocus

Me.THEM.Enabled = False Me.XOA.Enabled = False Me.SUA.Enabled = False Me.THOAT.Enabled = False Me.GHI.Enabled = True Me.KHONG.Enabled = True

End Sub

Private Sub GHI_Click()

If DCount("*", "dmsv", "masv=forms!f7!

masv") > 0 Then

MsgBox "trung khoa chinh ", 16, "trung

khoa chinh "

Me.MASV.SetFocus

Exit Sub

Else

DoCmd.RunCommand acCmdSaveRecord

End if

Me.MASV.SetFocus

Me.GHI.Enabled = False

Me.KHONG.Enabled = False

Me.THEM.Enabled = True

Me.THOAT.Enabled = True

Me.SUA.Enabled = True

Me.XOA.Enabled = True

End Sub

Private Sub KHONG_Click()

DoCmd.GoToRecord , , acLast Me.MASV.SetFocus Me.KHONG.Enabled = False Me.GHI.Enabled = False Me.THEM.Enabled = True Me.SUA.Enabled = True Me.XOA.Enabled = True Me.THOAT.Enabled = True

End Sub

-Private Sub thoat_Click()

If MsgBox("BAN CHAC THOAT?", 36,

"XOA") = 6 Then DoCmd.Close

End If

End Sub

Private Sub XOA_Click()

If DCount("*", "ketqua", "masv=forms!f7!masv")

> 0 Then

MsgBox "khong the xoa vi co chi tiet",

16, "chu y"

Else

If MsgBox("ban chac xoa", 36, "xoa") = 6 Then

DoCmd.SetWarnings False

DoCmd.RunCommand acCmdDeleteRecord

DoCmd.GoToRecord , , acLast

DoCmd.SetWarnings True

End If

End If

End Sub

Text Box Tên khoa:

=Dlookup(“tenkhoa”,”khoa”,

“makhoa=forms!Tenform!makh”)

Nút Sửa:

Sử dụng chúc năng Locked = True/False để cho phép người dùng nhập liệu vào

Trang 6

Các Hàm Cơ Sở Dữ Liệu Trong Access

Dlookup: Tìm 1 trường Table theo ĐK

= DLooKup(“Tên trường”, “Tên Table”, “điều kiện”)

Ví dụ:

=Dlookup(“Tenkh”, “DMKH”, “Makh=‘“&makh &” ’ ”) ‘Cho ra tên khoa theo makh được chọn

Dcount: Đếm tổng số mẫu tin theo điều kiện

=Dcount(“tên trường”, “Tên Table”, “điều kiện”)

Ví dụ:

=Dcount(“Masv”, “Dmsv”, “Makh=‘” &Me makh &” ’ ”) ‘Đếm số sinh viên theo makh chọn Hoặc có thể:

=Dcount(“Masv”, “Dmsv”, “Makh=Forms!FA4!makh”)

Dsum: Tính tổng theo điều kiện

=Dsum(“Tên trường”, ”Tên Table”, “Điều kiện)

Ví dụ:

Dsum(“Hocbong”, “DMSV”, “makh=‘” &makh &” ’ ”) ‘Tổng học bổng theo từng khoa

Ngoài ra còn có các hàm áp dụng như

= DAvg( )

= DMax( )

= DMin( )

Trang 7

Kiểm Tra Trong Form Trước khi thoát có hỏi người dùng

If MsgBox(“ Bạn chắc thóa không?”,36,

“Thoát”)=6 Then

Docmd.Close

End if

Chú ý:

Nếu form không có nút thóat thì ta lập trình

trên sự kiện UnLoad của form

Private Sub Form_Unload(Cancel As Integer)

Docmd.SetWarnings False

If MsgBox(“ bạn chắc thóat?”,36,”thóat”)=7

Then Cancel= True

End if

Docmd.SetWarning True

End Sub

Trùng khóa chính

If Dcount(“*”, “Table chứa khóa chính”,

“DK”)>0 then MsgBox “ Trùng khóa chính”, 16, “trùrng

khóa” Me.khóa chính.SetFocus

Exit sub End if

Docmd.RunCommand acCmdSaveRecord

-If Dcount(“*”, “DMSV”, “Masv=forms! FA7!Masv”)>0 Then

MsgBox “Trùng khóa chính”, 16,

“Trùng khóa”

Me.Masv.SetFocus Exit sub

End if Docmd.Runcommand acCmdSaveRecord

Một số hàm xử lý lỗi và mã lỗi

Not IsNull Kiểm tra không rỗng Not IsNull(Mamh) –Mamh không rỗng

Mã lỗi thực hiện trong sự kiện của nút lệnh – bằng On Error Goto Nhãn

3022 Trùng khóa chính - Err.Number = 3022

3058 Khóa chính rỗng - Err.Number = 3058

3317 Tồn tại một trường rỗng

3201 Khóa chính chưa tồn tại (khi thêm bên khóa ngoại kiểm tra trong khóa chính)

If IsNull( Tên Khóa chính) Then

MsgBox “Khóa chính rỗng”,16, “rỗng”

Me.khố chính.SetFocus

Exit sub

End if

Docmd.RunCommand ac CmdSaveRecord

Ví dụ:

If IsNull(Masv) Then

MsgBox “ Khóa chính rỗng”, 16, “rỗng”

If Hocbong<0 or Hocbong>1000000 Then Msgbox “ Học bổng từ 0 đến 1tr”,16,”rỗng”

Me.Hocbong.SetFocus Exit sub

End if

Kiểm tra kiểu dữ liệu:

Private sub Form_Error( DataErr As Integer, Response As Integer)

Response=0

Trang 8

Exit sub

End if

Docmd.Runcommand ac CmdSaveRecord

If DataErr=2113 Then MsgBox “Học bổng phải l kiểu số”,16,”chú ý”

End if End Sub

Thiết kế ListBox

 Chọn List box -> vẽ ra mặt bằng form

 Vào thuộc tính của List box

Name: Tên của List Box

Row Source Type: Table/Query (Kiểu của

list box)

Row Source: (…) chọn dữ liệu cho List box

Column Count: số cột hiển thị trong list

Column Head: Yes/No (tiêu đề)

Column Width: độ rộng tương ứng của cột,

cột nào không hiển thị cho độ rộng =0

Bound Column: vị trí cột liên kết (1)

ListCount: Đếm tổng dòng trong List

TênList.ListCount – 1(khi có tiêu đề)

Ví dụ:

Tổng khoa=Listkh.ListCount – 1 Truyền tham số cho TextBox

TênList.Column(vị trí cột) ->cột đầu =0

Ví dụ: List4.Column(1)

-hiển thị thông tin của cột thứ 2 trong List

Đồng bộ dữ liệu List Box với Form B1: Event/ OnClick của ListBox

Me.khóa chính.SetFocus

Docmd.FindRecord Me.TênListbox.Value

List4.Value

B2: Event/ On Current của Form

Me.ListBox=Me.khóa chính

Ví dụ:

Me.List4=Me.Masv

Trang 9

B1: Thiết kế Form như mẫu –dữ liệu lấy từ

SINHVIEN

B2: Tạo List Box –vào thuộc tính (F4)

- Name: ListSV

- Row Sounce type: Table/Query

- Row Sounce: nhấp vào (…)-vào giống như

Query –lấy dữ liệu cho List Box

- Đóng lại và chọn Yes

- Column Count: 4

- Column widths: 1’

- Bound column: 1

- Column Heads: Yes

B3: Makhoa –combo box

-Tạo giống như List Box nhưng cho độ rộng

cột thứ 2 bằng 0

B4: Tên khoa

C1:Dlookup(“Tenkhoa”,”khoa”,”makhoa=’

” & makh & “’”)

C2: Makh.column(1)

B5: Tạo một Option Group bên trong là 2

Togle bottom

-Option value: -1 (bên Nam) -Option value: 0 (bên nữ)

- Control sounce: Phai (Fram)

Trang 10

Khi nhấn vào một mẫu tin trên List Box thì trên Form chạy đến mẫu tin đó

Do đó chúng ta phải đồng bộ dữ liệu cho Form và List bằng cách làm 2 việc

Private Sub Form_Current()

Me.ListSV = Me.MASV

End Sub

Private Sub Listsv_Click()

Me.MASV.SetFocus

If Not IsNull(MASV) Then DoCmd.FindRecord Me.ListSV.Value End If

Me.ListSV.Requery ‘cập nhật lại List

End Sub

Combo Box

Dùng Winzard thiết kế

 Kiểm tra lại thuộc tính của Combo box

Name:Cbkhoa(đặt tên)

Control Source: Trường liên kết

Row Source Type: Table/Query

Column Count: số cột hiển thị (2)

Column Width: độ rộng cột(để ẩn đi một

cột ta cho độ rộng của cột đó= 0)

 Truyền tham số cho TextBox

(để hiển thị dữ liệu trong combo ra

ngoài)

= Tên Combo box.Column(cột) Vidu:

=Cbkhoa.column(1) ->hiển thị tên khoa trong combo box

1) Click Phải/ Chang To/ Combo Box

Trang 11

Thuộc tính: Data/ Limit To List : Yes

Event: On Not In List

Response=0

MsgBox “ Gi trị nay khong ton tai”,16,”loi”

1) Ví dụ 1:

 FA8(Combo Box Makh)

 Change To/ Combo Box

 Thuộc tính: All

 Row Source Type: Table/Query

 Row Source: DMKH

 Column Count: 2

 Column Width: 1;0 (ẩn đi cột tên khoa)

2) Ví dụ 2:

 FA9(Combo box sotiet)

 Change To/ Combo Box

 Thuộc tính : All

 Row source: Value List

 Row Source: 30;45;60

 Column Count : 1

 Column Width: 1

Ví dụ: phái lá một Combo Box hiển thị 2 gi trị Nam; Nu

Kích chuột phải lên combo box

Change To/ Combo Box

Thuộc tính: All

Row source Type Value List Row Source: -1;”Nam”;0;”Nu”

Column Count: 2 Column Width: 0

I) Thiết lập:

1) Vẽ Option Group

2) Thuộc tính: Control Source: Field lưu trữ

3) Vẽ Option button hoặc Check Box

4) Thuộc tính Option Value cho option button vá check Box

II) Ví dụ:

1) Option Group: Control Source: Phai

2) Option Button Nam: Option Value: -1

3) Option Button Nu: Option Value: 0

I) Thiết kế:

1) Vẽ Tabcontrol

2) thao tác trên TabControl

Nhấp phải một trang bất kỳ Delete Page: Xóa trang Insert Page: Thêm một trang Properties:

Format: Caption Liệt kê tên hiển thị của trang

Ch ý: Trang đầu tin của Tab tính là một

3) Thiết lập nguồn dữ liệu từng trang của Tab

Có thể nguồn dữ liệu từ Form

Có thể l một ListBox

Có thể l Sub

Trang 12

Đồng bộ dữ liệu giữa các trang của TabControl:

 Nhấp đôi lên Tab

Other/ Name: Tabsv(đặt tên cho Tab) Event: On Change

If TenTab=0(List ở trang đầu) Then

Me.ListBox= Me.Khố chính

Else

Me.Khóa chính.SetFocus

If Not IsNull(Me.list) Then Docmd.FindRecord Me.List.Value

End if

 Ví dụ:

If Tabkh= 0 Then

Me.List4 = Me.Makh Else

Me.Makh.SetFocus

If Not IsNull(Me.List4) Then Docmd.FindRecord Me.List4.Value End if

1) New/ Design View/ Ok

2) Ấn F4

Format:

Default View: DataSheet Navigation Button: No Data:

Record Source: (…) Click chọn Table tạo Sub Form, Chọn các trường (Tất cả các trường trên Form chính+Các trường cần thiếu trên Sub phụ)/ Đóng/ Yes Kéo thả Field List Xuống Detail

3) Nhấp phải/ Form Head/ Footer: Kéo trường liên kết giữa Main và Sub Lên Form Head để ẩn đi.

Đồng bộ dữ liệu giữa ListBox v Sub

1) Khi chọn một dòng trên ListBox thì Sub sẽ hiển thị chi tiết( List lúc này đại diện cho Main Form)

2) Khi đó ListBox và Sub phải có Trường liên kết với nhau theo dạng một - nhiều 3) Thiết lập lại thông số cho Sub

Link child Field: Tên trường liên kết của sub Link Master Field: Tên List

Truyền tham số:

Tên Sub.Form!Tên TextBox

Bước 1: Vẽ TextBox ở Form Footer của Sub

Bước 2: Ấn F4

All: Name: Tong (đặt tên)

Control Source: =Sum(diem)

Trang 13

Khóa chính rỗng

Lập trình trên sự kiện: On Error của Sub Form Response=0

If DataErr=3022 Then MsgBox “Trùng khố chính”,16,”trùng”

Elseif DataErr=3101 Then

MsgBox “Khóa chính rỗng”,16,”chú ý”

Kiểu dữ liệu phải l kiểu số:

If DataErr=2113 Then

MsgBox “Điểm phải l số”,16,”chú ý”

End if

Tên sinh viên không được rỗng

Tuổi từ 18 đến 70

Học bổng từ 0 đến 1,000,000

Lập trình trên sự kiện Before Update của sub Form

Private Sub Form_BeforeUpdate(Cancel As Integer)

If IsNull(Tensv) Then

MsgBox “ Tên sinh viên không được rỗng”,16,”rỗng”

Me.Tensv.SetFocus Cancel=True Elseif Year(Date())- Year(ngaysinh)<18 Or Year(Date())-Year(ngaysinh)>70 Then

MsgBox “Tuổi từ 18 đến 70”,16,”ch ý”

Me.ngaysinh.Setfocus Cancel = True

Elseif Hocbong<0 or hocbong>1000000 Then

MsgBox “học bổng từ 0 đến 1,000,000”,16,”chú ý”

Me.Hocbong.Setfocus Cancel = True

End if

End sub

Xóa trong Sub có hỏi người dùng

Lập trình trên Event/ On Delete và After Update Confirm

• On Delete

Docmd.SetWarnings False

If MsgBox(“bạn chắc xóa?”,36,”xóa”) = 7 Then Cancel=True

End if

• After Delete Conform

Docmd.SetWarnings True

I) Màn hình tổng hợp:

1) Dạng 1: Gồm TabControl( Trang chứa List và trang chứa main) v Sub

 Khi đó đồng bộ dữ liệu khi di chuyển qua lại giữa các trang trên Tab và Sub

 Ta sử dụng một TextBox( Detail) Name: LK

Control Source: iif(TenTab=0, List,khóa chính)

 Hiệu chỉnh lại thông số Sub Link Child Field: như củ

Link Master Field: LK

ví dụ: FC2

Name: Makh

Ngày đăng: 01/07/2014, 21:20

HÌNH ẢNH LIÊN QUAN

6) Bảng điểm: - Bài giảng Access nâng cao potx
6 Bảng điểm: (Trang 14)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w