intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Access nâng cao

Chia sẻ: Phan Duy | Ngày: | Loại File: DOC | Số trang:15

1.777
lượt xem
587
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Những vấn đề nâng cao trong access. Khi thiết kế Form chúng ta nên sử dụng chức năng Design View của form: B1: Form: NewNDesign View DOK. B2: Vào thuộc tính của form ủData D Control SourceCChọ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

Chủ đề:
Lưu

Nội dung Text: Bài giảng Access nâng cao

  1. Baøi Giaûng  Access  C N Trung  Taâ m  Tin Hoïc Kyû  Nguyeâ n Phần ứng dụng Visual Basic vào Access Thiết Kế FORM: Thuộc Tính Chung Của Form • Default View: chế độ hiển thị Khi thiết kế Form chúng ta nên sử dụng của chức năng Design View của form Form ủ Form: NewN B1: Design View D OK  Single Form: Form O Vào thuộc tính của form ủData D B2: đơn (tạo Main Control SourceCChọn dấu …ấlấy nguồn dữ form ) liệu cho form  Datasheet: Thường ệB3: Thiết kế form (giống phần căn bản) dùng tạo Subform ảB4: Tạo các đối tượng trên form bằng • Scroll Bars: Thanh cuộn trn chức năng tự thiết kế Form ếB5: Viết các câu lệnh cho các sự kiện  Neither: Không hiển thị thanh cuộn  Vertical: Thanh cuộn dọc  Horizontal: Thanh 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: All • Control source: Nguồn dữ Caption: Tiêu đề của Form liệu cho Form ( Field List) ( Ta có thể Dividing lines: Đường qua các phân vùng click biểu tượng …mở cửa sổ Navigation Buttons: Thanh chỉ mẩu tin SQL_Staterment để chọn nguồn dữ liệu Record seletors: Chức năng chỉ mẩu tin cho Form khi tạo sub Record locks: Khoa mẩu tin trên form • Allow Edits: Yes/No Enabled: Sáng/mờ đối tượng Cho/Không sửa dữ liệu trên form Tab Index: Thứ tự khi nhấn phím tab • Allow Deletions: Yes/ No-> Visible: Ẩn/ hiện đối tượng Cho/ Không Xóa mẩu tin Width: Độ rộng Hight: Chiều cao • Allow Additions: Yes/ No -> Cho/ Không thêm mẩu tin mới Even Của Control Event Của Form • On Click: Xảy ra khi nhấn con trỏ • On Current: xảy ra khi có sự chuột di chuyển qua các mẩu tin khác • On Dbl Click: Khi nhấp đôi chuột • Before Update: Xảy ra trước • Before Update: Trước khi dữ liệu khi mẩu tin trong Form được cập nhật trên Control được cập nhật vào bảng vào Table • After Update: Sau khi dữ liệu trên • After Update: Xảy ra sau khi Trang   1 Löu  Haønh  Noäi   Boä   ­2009
  2. Baøi giaûng Access 1 Control được cập nhật vào bảng mẩu tin trên Form được cập nhật vào • On Got Focus: Khi Control nhận Table con trỏ • On Load: Xảy ra khi Form • On Exit: Khi con trỏ bắt đầu rời được mở lên khỏi Control • Before Del Confirm: Xảy ra • On Lost Focus: Khi con trỏ rời trước khi xóa Record hẳng Control • After Del confirm: Xảy ra • On Not In List: Kiểm tra dữ liệu sau khi xóa record trong Combo box • On Error: Xảy ra khi Form xuất hiện một lỗi Dạng 1: Dạng 2: • If Then If Then < Nhóm lệnh> End if • Nếu đúng thì câu lệnh sẽ thực hiện Nếu đúng thì Nhóm câu lệnh sẽ thực hiện Dạng 3: Dạng 4: If Then if Then Else Elseif Then End if Elseif Then -Nếu đúng thì sẽ thực hiện. Ngược lại thì sẽ thực hiện. 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 2
  3. Baøi giaûng Access 1 1. Nếu DTB>=8 Xep loại: Giỏi 2. Nếu 6.5 vào thuộc tính On Click Else của nút lệnh viết sự kiện cho nút lệnh đó. TxtXeploai=“Yếu” End if End sub Thủ Tục Msgbox Và Hàm Msgbox: Private Sub Cmdclose_Click() If MsgBox("ban có muon thoat khong?", 36, • Thủ tục MsgBox: "Thoat") = 6 Then DoCmd.Close MsgBox “chuỗi thông báo”, “loại End If thông báo”, “ Tiêu đề” End Sub 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ụ: Chức Năng Di Chuyển Mẫu Tin Navigation Di chuyễn MT: Nằm trong thư viện Docmd Ví dụ: ứng dụng Về đầu: Docmd.GoToRecord , , acFirst Về cuối: Docmd.GoToRecord , , acLast về sau: Docmd.GoToRecord , ,acNext Về trước: Docmd.GoToRecord , , acPrevious Trang 3
  4. Baøi giaûng Access 1 Khi đang ở MT đầu và cuối; ta thao tác di 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 CmdCuoi_Click() DoCmd.GoToRecord , , acLast Private Sub Cmddau_Click() End Sub DoCmd.GoToRecord , , acFirst End Sub ---------------------------------- ------------------------------------------ Private Sub CmdSau_Click() Private Sub Cmdtruoc_Click() On Error GoTo loi ‘Xủ lý lỗi nút sau On Error GoTo loi ‘Xủ lý lỗi về trước DoCmd.GoToRecord , , acNext DoCmd.GoToRecord , , acPrevious Exit Sub Exit Sub loi: loi: MsgBox "Dang o mau tin cuoi?",16, "Chu ý" MsgBox "Dang o mau tin dau ", 16, "chú ý" End Sub End Sub Thao Tác Trên Điều Khiển – Text Box, List Box, Combo Box, Label,… • Lưu mẫu tin: • Sáng/ Mờ các điều khiển: Docmd.RunCommand acCmdSaveRecord Tên điều khiển.Enabled=True (Sáng) Tên điều khiển.Enabled=False (Mờ) • Xóa mẫu tin: Ví dụ: Me.Them.Enabled=False DoCmd.SetWarnings False ‘tắt cảnh báo DoCmd.RunCommand acCmdDeleteRecord • Hiện/ Ẩn điều khiển: DoCmd.SetWarnings True ‘bật cảnh báo Tên điều khiển.Visible = True ( hiện) Tn điều khiển.Visible = False (Ẩn ) • Phục hồi (không lưu) Ví dụ: Me.Makh.Visible = False If Me. Dirty=True Then Me.Undo • Di chuyển con nháy ( Focus) ( Dirty: kiểm tra mẫu tin có rỗng hay Tên điều khiển.SetFocus không ) Ví dụ: Me.Makh.SetFocus Trang 4
  5. Baøi giaûng Access 1 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() Private Sub KHONG_Click() If DCount("*", "dmsv", "masv=forms!f7! DoCmd.GoToRecord , , acLast masv") > 0 Then Me.MASV.SetFocus MsgBox "trung khoa chinh ", 16, "trung Me.KHONG.Enabled = False khoa chinh " Me.GHI.Enabled = False Me.MASV.SetFocus Me.THEM.Enabled = True Exit Sub Me.SUA.Enabled = True Else Me.XOA.Enabled = True DoCmd.RunCommand acCmdSaveRecord Me.THOAT.Enabled = True End if End Sub Me.MASV.SetFocus ------------------------------ Me.GHI.Enabled = False Me.KHONG.Enabled = False Private Sub thoat_Click() Me.THEM.Enabled = True If MsgBox("BAN CHAC THOAT?", 36, Me.THOAT.Enabled = True "XOA") = 6 Then Me.SUA.Enabled = True DoCmd.Close Me.XOA.Enabled = True End If End Sub End Sub Private Sub XOA_Click() Text Box Tên khoa: If DCount("*", "ketqua", "masv=forms!f7!masv") =Dlookup(“tenkhoa”,”khoa”, > 0 Then “makhoa=forms!Tenform!makh”) MsgBox "khong the xoa vi co chi tiet", 16, "chu y" Else Nút Sửa: If MsgBox("ban chac xoa", 36, "xoa") = 6 Then Sử dụng chúc năng Locked = True/False để DoCmd.SetWarnings False cho phép người dùng nhập liệu vào DoCmd.RunCommand acCmdDeleteRecord DoCmd.GoToRecord , , acLast DoCmd.SetWarnings True End If End If End Sub Các Hàm Cơ Sở Dữ Liệu Trong Access Trang 5
  6. Baøi giaûng Access 1 • 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 6
  7. Baøi giaûng Access 1 Kiểm Tra Trong Form Trước khi thoát có hỏi người dùng Trùng khóa chính If MsgBox(“ Bạn chắc thóa không?”,36, If Dcount(“*”, “Table chứa khóa chính”, “Thoát”)=6 Then “DK”)>0 then Docmd.Close MsgBox “ Trùng khóa chính”, 16, “trùrng End if khóa” Me.khóa chính.SetFocus Chú ý: Exit sub Nếu form không có nút thóat thì ta lập trình End if trên sự kiện UnLoad của form Docmd.RunCommand acCmdSaveRecord ------------------------- Private Sub Form_Unload(Cancel As Integer) If Dcount(“*”, “DMSV”, “Masv=forms! Docmd.SetWarnings False FA7!Masv”)>0 Then If MsgBox(“ bạn chắc thóat?”,36,”thóat”)=7 MsgBox “Trùng khóa chính”, 16, Then “Trùng khóa” Cancel= True Me.Masv.SetFocus End if Exit sub Docmd.SetWarning True End if End Sub Docmd.Runcommand acCmdSaveRecord Một số hàm xử lý lỗi và mã lỗi IsNull Kiểm tra rỗng IsNull(Mamh) – Mamh rỗng Not IsNull Kiểm tra không rỗng Not IsNull(Mamh) –Mamh không rỗng And Toán tử và Hocbong>=0 And hocbong
  8. Baøi giaûng Access 1 Exit sub MsgBox “Học bổng phải l kiểu End if số”,16,”chú ý” Docmd.Runcommand ac CmdSaveRecord End if End Sub Thiết kế ListBox  Chọn List box -> vẽ ra mặt bằng ListCount: Đếm tổng dòng trong List form  Vào thuộc tính của List box TênList.ListCount – 1(khi có tiêu đề) Ví dụ: Name: Tên của List Box Tổng khoa=Listkh.ListCount – 1 Row Source Type: Table/Query (Kiểu của list box) Truyền tham số cho TextBox Row Source: (…) chọn dữ liệu cho List box TênList.Column(vị trí cột) ->cột đầu =0 Column Count: số cột hiển thị trong list Ví dụ: List4.Column(1) Column Head: Yes/No (tiêu đề) -hiển thị thông tin của cột thứ 2 trong List 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) Đồng bộ dữ liệu List Box với Form B1: Event/ OnClick của ListBox B2: Event/ On Current của Form Me.khóa chính.SetFocus Me.ListBox=Me.khóa chính Docmd.FindRecord Me.TênListbox.Value Ví dụ:  Ví dụ: Me.List4=Me.Masv  Me.Masv.SetFocus  Docmd.FindRecord Me. List4.Value Trang 8
  9. Baøi giaûng Access 1 B1: Thiết kế Form như mẫu –dữ liệu lấy từ SINHVIEN - Column Count: 4 B2: Tạo List Box –vào thuộc tính (F4) - Column widths: 1’ - Name: ListSV - Bound column: 1 - Row Sounce type: Table/Query - Column Heads: Yes - 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 B3: Makhoa –combo box B5: Tạo một Option Group bên trong là 2 -Tạo giống như List Box nhưng cho độ rộng Togle bottom cột thứ 2 bằng 0 B4: Tên khoa -Option value: -1 (bên Nam) C1:Dlookup(“Tenkhoa”,”khoa”,”makhoa=’” -Option value: 0 (bên nữ) & makh & “’”) - Control sounce: Phai (Fram) C2: Makh.column(1) Trang 9
  10. Baøi giaûng Access 1 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() Private Sub Listsv_Click() Me.MASV.SetFocus Me.ListSV = Me.MASV If Not IsNull(MASV) Then DoCmd.FindRecord Me.ListSV.Value End Sub 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  Truyền tham số cho TextBox Name:Cbkhoa(đặt tên) (để hiển thị dữ liệu trong combo ra Control Source: Trường liên kết ngoài) Row Source Type: Table/Query = Tên Combo box.Column(cột) Column Count: số cột hiển thị (2) Column Width: độ rộng cột(để ẩn đi Vidu: một cột ta cho độ rộng của cột đó= 0) =Cbkhoa.column(1) ->hiển thị tên khoa trong combo box 1) Click Phải/ Chang To/ Combo Box 2) Thiết lập lại thuộc tính:  Row Source Type:  Row Source  Column Count  Column Width III) Kiểm tra gi trị tồn tại trong Combo Box Trang 10
  11. Baøi giaûng Access 1 • 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 Trang 11
  12. Baøi giaûng Access 1 • Có thể l một ListBox • Có thể l Sub Đồ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) =sum(iif(phai=-1,1,0)) =Count(*) Bước 4: Truyền Tổng số điểm:=SubFb1.Form!tong Trang 12
  13. Baøi giaûng Access 1 1) Kiểm tra khóa chính, kiểu dữ liệu • Khóa chính trùng • 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)70 Then MsgBox “Tuổi từ 18 đến 70”,16,”ch ý” Me.ngaysinh.Setfocus Cancel = True Elseif Hocbong1000000 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 Trang 13
  14. Baøi giaûng Access 1 Link Child Field: như củ Link Master Field: LK • ví dụ: FC2 • Name: Makh • Row Source: DMKH • Column Count: 2 • Column Width: 0;1 • On Click: Me.List4.Requery 3) ListBox: • Row Source: • Column Width: 0;1 • Column Count: 2 Sub: Trong Sub phải có chứa trường liên kết với List đó là Masv • Link Child Field: Masv • Link Master Field: List 4 Hoặc tạo ra textBox trung gian rồi liên kết • Textbox= List4.Column(0) • Link Child Field: Masv • Link Master Field: Textbox 1) Thiết kế Form Main v 2 Sub: 2) Sub 1: - Link Child Field: Makh - Link Master Field: Makh( tên của Combo Box) 3) Tạo TextBox liên liết cho Sub 2 Vẽ Text Box trn Detail của Main/ F4 All: - Name: LK - Control Source: =TenSub1.Form!Ten trường liên kết giữa Sub1 v 2 ( ví dụ: =Sub1.Form!Masv) - Visibled: No (ẩn) 4) Sub 2: - Link Child Field: Tên trường liên kết của 2 Sub (vd: Masv) - Link Master Field: LK Danh sách sinh viên: Docmd.OpenReport “B1”, acViewPriview,, “Makh=Forms!FC3!Makh” 6) Bảng điểm: Docmd.OpenReport “B1”,acViewPriview,, “Makh=Forms!FC3!Makh And Masv=Forms!FC3!LK” I) Thiết kế Report nhĩm: 1) Xác định kiểu Report nhóm: Srepped, OutLine 1 2) Tạo Query trung gian 3) Chú ý Report Luôn nhóm theo trường khóa chính 4) Report nhóm theo một cấp hoặc 2 cấp 5) Nếu khi tạo Report Wizard tách nhóm không đúng( How do you want to view your Report) thì ta chọn dạng cuối để report trở về một nhóm. Rồi Next (Di you want to add any rouping Levels). Khi này ta chọn trường tạo nhóm cho report(>) Next 6) Tính tổng theo nhóm cho report 7) Thiết kế lại report: đóng khung, hiệu chỉnh vị trí, đánh số thứ tự. 1) In Report khơng lọc dữ liệu: Trang 14
  15. Baøi giaûng Access 1  Docmd.OpenReport “ Tn Report”, acViewPriview  Ví dụ: Form FA12( danh sách sinh viên theo khoa) 2) In Report với điều liện lọc dữ liệu  Docmd.OpenReport “Tn Report”,,acViewPriview,, “điều kiện lọc”  Ví dụ:  Docmd.OpenReport “B2”,acViewPriview,,”MAsv=Forms!FA12! Masv” Trang 15
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2