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

Thủ thuật Access 3 pps

16 591 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 16
Dung lượng 88,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Như vậy, khi bạn chọn một giá trị trong list box, Access sẽ nhảy tới mẩu tin chứa giá trị IDBao mà bạn chọn, tức nó sẽ hiển thị các thông tin của các trường khác.. Sau do tạo 1 file acce

Trang 1

Thủ thuật Access 3

SUNDAY, 8 JULY 2007, 13:58:02

THỦ THUẬT OFFICE

Thủ thuật chỉnh hay nên đọc

1 Tạo nút không lưu và không cho nhập vào combo box

a Private sub KHONG_click()

Me.Undo

If NewRecord = True Then

DoCmd.GoToRecord , , acLast

End If

End Sub

- Cách 2

Private Sub Khong_Click()

DoCmd.SetWarnings False

DoCmd.RunCommand acCmdDeleteRecord

DoCmd.SetWarnings True

DoCmd.Close

End Sub

b - Bạn vào properties của combox > tab Data > property Limit to List : chọn Yes

- Private Sub Combo_NotInList(NewData As String, Response As Integer)

Response = acDataErrContinue

MsgBox "Ban kiem tra lai du lieu", , "Bao loi !"

End Sub

2 Làm thế nào để View report ở chế độ cố định

Trả lời Ghi chú

Dim stDocName As String

stDocName = "R01_Du An Moi"

DoCmd.OpenReport stDocName, acPreview

DoCmd.Maximize

DoCmd.RunCommand acCmdZoom75

' Các chế độ zoom khác :

' DoCmd.RunCommand acCmdFitToWindow

' DoCmd.RunCommand acCmdZoom10

' DoCmd.RunCommand acCmdZoom25

' DoCmd.RunCommand acCmdZoom50

' DoCmd.RunCommand acCmdZoom75

' DoCmd.RunCommand acCmdZoom100

' DoCmd.RunCommand acCmdZoom150

' DoCmd.RunCommand acCmdZoom200

3 Giúp em phần từ listbox sang textbox

Chào bạn!

Có lẽ bạn không cần viết một dòng lệnh nào Wizard của Access đã giúp bạn làm chuyện này Cách làm như sau:

Bạn vẽ một list box lên form (sử dụng Wizard) Access cho phép bạn lựa chọn 1 trong 3 tùy chọn Bạn chọn mục 3 (tìm kiếm mẩu tin dựa vào giá trị được chọn trong list box) Xong, nhắp Next

Trong màn hình tiếp theo, bạn có thể chọn các trường IDBao, TenBao,

Màn hình tiếp theo, bạn có thể chọn mục Hide Key Column để ẩn trường IDBao đi Xong, nhắp Next Như vậy, khi bạn chọn một giá trị trong list box, Access sẽ nhảy tới mẩu tin chứa giá trị IDBao mà bạn chọn, tức nó sẽ hiển thị các thông tin của các trường khác

Bạn lưu ý: Sau khi thiết kế xong list box, bạn không nên đổi tên (name) của nó, vì Access đã phát sinh

Trang 2

một đoạn mã trong sự kiện After Update của list box này

Không biết như vầy có đúng ý bạn không?

4 Kết nối dữ liệu Access trong mạng Lan

Bạn có tạo 1 file access tên Data chỉ lưu lưu dữ liệu trên 1 máy A chẳng hạn., lưu ý thư mục chứa file data phải được share và cấp quyền cho các máy con khác truy cập

Sau do tạo 1 file access tên App để viết các form nhập liệu, hay báo cáo, trong file này bạn chọn Tabs Tables, Right click vào Tables trong menu hiện ra bạn chọn Link Tables , trong hộp thoại hiện ra bạn chỉ đường dẫn đến File Data, sau đó sẽ xuất hiện hộp thoại liệt kê các tables trong File Data bạn chọn toàn

bộ các table rồi OK, khi đó trong file App sẽ có các table chỉ tới table trong File Data mà bạn đã chọn Sau khi viết trong chương trình xong, có thể chạy trên các máy trong mạng, và dữ liệu được lưu ở 1 nơi

5 Về phần xóa mẩu tin mà bỏ qua thông báo xác nhận của Access, bạn có thể làm như sau:

Bạn dựa vào sự kiện Before Del Confirm của form như sau:

Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer)

Response = acDataErrContinue 'báo cho Access là cứ xóa "vô tư" mà không cần hỏi han gì cả

End Sub

Tuy nhiên, xóa dữ liệu là một việc quan trọng, bạn nên có một thông báo để người dùng xác nhận có thật

sự muốn xóa hay không Bạn có thể tham khảo cách sau:

Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer)

Dim i As Integer

i = MsgBox("Nguy hiem chet nguoi" & vbCrLf & "Ban chac rang muon xoa ", vbYesNo, "Xac nhan") 'hien thi thong bao xac nhan xoa

If i = vbYes Then 'neu nguoi dung chọn Yes

Response = acDataErrContinue 'xoa mau tin

Else

Cancel = True 'khong xoa nua

End If

End Sub

Ghi chú: Bạn có thể bỏ dòng MsgBox Err.Description để nếu người dùng chọn No (không xóa), Access sẽ không thông báo dòng DoMenuItem Action was canceled

6 Xử lý hiện thông báo khi không nhập dữ liệu vào texbox

Bạn sử dụng event on Lost Focus của textbox muốn ktra Khi thoát khỏi thì check có IsNull hay kô? nếu IsNull là true thì quay lại ô đó textbox.SetFocus

Vd: bạn có textbox Date

Private Sub txtDate_LostFocus()

If IsNull(txtDate) Then

MsgBox "Ban phai nhap ngay vao o nay", vbCritical, "Thong bao"

txtDate.SetFocus

Cancel = True

End Sub

7 Cách khóa fím Shift

Bấm "modules" tab > New (Bạn có thể mở 1 module khác nếu có sẵn)

* Lưu ý: Phải chắc chắn là thư viện DAO 3.6 được chọn:

Chọn Tools > References , tìm và chọn Microsoft DAO 3.6 Object Library

Chép function sau đây vào module và lưu với tên bất kỳ (khác DisableShiftKeyBypass)

' -Bắt đầu -

Function DisableShiftKeyBypass() As Boolean

On Error GoTo errDisableShift

Dim db As Database

Dim prop As DAO.Property

Set db = CurrentDb()

On Error Resume Next

db.Properties.Delete "AllowByPassKey"

On Error GoTo errDisableShift

Trang 3

Set prop = db.CreateProperty("AllowByPassKey", dbBoolean, False, True)

db.Properties.Append prop

DisableShiftKeyBypass = True

exitDisableShift:

Set prop = Nothing

Set db = Nothing

Exit Function

errDisableShift:

MsgBox "Function DisableShiftKeyBypass did not complete successfully."

DisableShiftKeyBypass = False

Resume exitDisableShift

End Function

' -Kết thúc -

Vào Debug, Compile, và đóng module lại để lưu

Tại database window, Gõ Ctrl-G để mở debug window

Gõ: DisableShiftKeyBypass và bấm Enter

Lần sau khi mở lại, phím Shift sẽ bị vô hiệu hóa

(Bạn chỉ cần chạy 1 lần duy nhất - Trong trường hợp cần phục hồi lại phím Shift, bạn sẽ cần đến file đã sao lưu, hoặc phục hồi từ một database khác)

8 Bảo mật không cho chỉnh sửa form và report trong file *.mdb

TOI GUI CHO BAN 1 MACRO de bao mat ACCESS tuyet voi

Nhung nho sao luu du phong truoc khi quay khong biet thi hoi toi

hhnguyen@picotrack.com

*****************************************

'Hàm ChangeProperty thay doi các thuoc tính cua CSDL

Function ChangeProperty(strPropName, varPropType, varPropValue)

Dim dbs As Database, prp As Property

Const conPropNotFoundError = 3270

Set dbs = CurrentDb

On Error GoTo Change_XuLyLoi

dbs.Properties(strPropName) = varPropValue

ChangeProperty = True

Change_KetThuc:

Exit Function

Change_XuLyLoi:

'Thuoc tinh khong thay

If Err = conPropNotFoundError Then

Trang 4

Set prp = dbs.CreateProperty(strPropName, varPropType, varPropValue)

dbs.Properties.Append prp

Resume Next

Else

'Không biet loi gì

ChangeProperty = False

Resume Change_KetThuc

End If

End Function

'Xu lý tình huong chon nút [Khóa database]

Private Sub cmdLock_Click()

'Bieu mau này duoc nap truoc

If txtPassword = "nguyenhuuhoang361983" Then

ChangeProperty "StartupForm", dbText, "Form1"

ChangeProperty "StartupShowDBWindow", dbBoolean, False

ChangeProperty "StartupShowStatusBar", dbBoolean, False

ChangeProperty "AllowBuiltinToolbars", dbBoolean, False

ChangeProperty "AllowFullMenus", dbBoolean, False

ChangeProperty "AllowBreakIntoCode", dbBoolean, False

ChangeProperty "AllowSpecialKeys", dbBoolean, False

'Không cho xài phím Shift de bo qua bieu mau frmKhoiDong

ChangeProperty "AllowBypassKey", dbBoolean, False

MsgBox "Co so du lieu dã duoc khóa! Ðe nghi dóng CSDL lai.", vbOKOnly, "Thong bao" cmdExit.SetFocus

cmdUnLock.Visible = True

cmdLock.Visible = False

txtPassword.Visible = True

Else

MsgBox "Ten nguoi su dung khong dung ! ", vbOKOnly, "Thong bao"

Trang 5

End If

txtPassword = ""

End Sub

'Xu lý tình huong chon nút [Mo database]

Private Sub cmdUnLock_Click()

'Không can bieu mau khoi dong nua

If txtPassword = "nguyenhuuhoang361983" Then

ChangeProperty "StartupForm", dbText, ""

ChangeProperty "StartupShowDBWindow", dbBoolean, True

ChangeProperty "StartupShowStatusBar", dbBoolean, True

ChangeProperty "AllowBuiltinToolbars", dbBoolean, True

ChangeProperty "AllowFullMenus", dbBoolean, True

ChangeProperty "AllowBreakIntoCode", dbBoolean, True

ChangeProperty "AllowSpecialKeys", dbBoolean, True

ChangeProperty "AllowBypassKey", dbBoolean, True

MsgBox "Co so du lieu dã duoc mo khóa ! Ðe nghi dóng CSDL lai.", vbOKOnly, "Thong bao" cmdExit.SetFocus

cmdLock.Visible = True

cmdUnLock.Visible = False

txtPassword.Visible = True

Else

MsgBox "Ten nguoi su dung khong dung !", vbOKOnly, "Thong bao"

End If

txtPassword = ""

End Sub

'Xu lý tình huong khi mo bieu mau

Private Sub Form_Open(Cancel As Integer)

Dim dbs As Database

Set dbs = CurrentDb

On Error GoTo KhongCoThuocTinh_Err

If dbs.Properties("AllowBypassKey") Then

Trang 6

cmdLock.Visible = True

cmdUnLock.Visible = False

txtPassword.Visible = True

Else

cmdLock.Visible = False

cmdUnLock.Visible = True

txtPassword.Visible = True

End If

Exit Sub

KhongCoThuocTinh_Err:

cmdLock.Visible = True

cmdUnLock.Visible = True

txtPassword.Visible = True

txtPassword = ""

End Sub

'Khi nguoi ta go mat khau va an phím Enter

Private Sub txtPassword_LostFocus()

If txtPassword = "nguyenhuuhoang361983" Then cmdUnLock.Visible = True

End If

End Sub

Private Sub cmdExit_Click()

On Error GoTo Err_cmdExit_Click

DoCmd.Close

Exit_cmdExit_Click:

Exit Sub

Err_cmdExit_Click:

MsgBox Err.Description

Resume Exit_cmdExit_Click

End Sub

************************************************

code nay do nguoi khac viet , toi chi tham khao thoi

Trang 7

9 Làm Form giống như Windows Explorer ?

Trong Access bạn có thể sử dụng tính năng Pivot Table Wiew của form để thực hiện yêu cầu trên

Để thiết kế trước tiên bạn chọn nguồn dữ lệu cho form, sau đó vào nenu Wiew, chọn Pivot Table Wiew tiếp đó bạn chỉ cần kéo thả các trường vào các vị trí "Drop row Fields here", Drop column Fields here",

"Drop totals or Detail Fields here" thích hợp là đươc

Chúc bạn thành công!

Thủ thuật Access 4

SUNDAY, 8 JULY 2007, 13:41:28

THỦ THUẬT OFFICE

Thủ thuật chỉnh hay nên đọc

Các câu lệnh trong Access

1 Khi gõ vào hộp thoại Combobox nếu không có dữ liệu sẽ hiện thông báo

Private Sub Nghenghiep_NotInList(NewData As String, Response As Integer)

Response = acDataErrContinue

MsgBox "Cai nay khong co trong Combbox.", , "Bao loi !"

End Suba

2 Khi muốn thông báo cho người nhập biết trị số nhập vào testbox vượt quá 100

Private Sub Tuoi_LostFocus()

If ((Tuoi) > 100) Then

MsgBox "chu y qua cao tuoi", , "Canh bao"

End If

End Sub

3 Khi muốn che đi các thông báo lỗi tiếng anh của Access thì bằng cách

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

Const SaiDuLieu = 2113 ‘ Loi nhap sai dinh dang so thanh chu

Const Rong = 3058 ' Loi khoa chinh hoặc bo trống

Const Nhapsai = 2279 ' Loi nhap sai so voi dinh dang inputmat

Dim strMsg As String

Select Case DataErr

Case SaiDuLieu

Response = acDataErrContinue

strMsg = "Xin kiem tra lai cach nhap du lieu "

MsgBox strMsg, , "Bao loi !"

Case Rong

Response = acDataErrContinue

strMsg = "Ban phai nhap ma so?"

MsgBox strMsg, , "Bao loi !"

Case Nhapsai

Response = acDataErrContinue

strMsg = "Ban nhap sai so?"

MsgBox strMsg, , "Bao loi !"

End Select

End Sub

4 Làm dòng chữ chạy từ phải qua trái

Tại thuộc tính on Timer của Forms ta viết

Private Sub Form_Timer()

Me.TimerInterval = 400

Dim x, y, AsString

Trang 8

x = Left(label.Caption, 2)

y = Right(label.Caption, Len(label.Caption) - 2)

label.Caption = y + x

End Sub

( Dịng chữ chạy trên forms với test tên là label, caption là gì cũng được)

5 Khi xố một mẫu tin trên forms ta muốn hệ thống hiện thơng báo thì làm như sau Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer)

Dim n_Reply As Integer

n_Reply = MsgBox("XOA THAT KHONG", vbQuestion + vbYesNo)

If n_Reply = vbNo Then

Cancel = True

SendKeys "{Enter}", False

Else

If n_Reply = vbYes Then

SendKeys "{Enter}", False

End If

End If

End Sub

6 Tạo cảnh báo khi nhập “từ ngày” lớn hơn “đến ngày”

Private Sub Denngay_AfterUpdate()

If ((Tungay) >= (Denngay)) Then 'Neu tu ngay lon hon den ngay thi thong bao'

MsgBox "Chu y nhap sai ngay", vbOKOnly, "Bao loi !"

SendKeys "+{TAB}", False

End If

End Sub

7 Nếu nhập từ ngày rồi mà quên nhập đến ngày thì báo lỗi

Private Sub Denngay_LostFocus()

If (Not IsNull(Tungay)) Then 'Neu tu ngay nhap roi ma den ngay chua co thi bao loi'

If (IsNull(Denngay)) Then

MsgBox "Xin nhap Den ngay ", vbOKOnly, "Bao loi"

SendKeys "+{TAB}", False

End If

End If

8 Nếu khi rời khỏi 1 ơ textbox mà rỗng thì báo lỗi

Private Sub Giuong_GotFocus() ‘ Khi vao textbox Giuong’

If (IsNull(Phong)) Then ' Neu phong trong thi bao loi

MsgBox "Xin loi chua co phong", vbInformation, "Chu y"

SendKeys "+{TAB}", False

End If

End Sub

9 Khi Chọn là BH mà khơng nhập số BH thì thơng báo

Private Sub SoBH_LostFocus()

If (txtDoituong) = "BH" Then 'nếu đói tuợng là BH '

If (IsNull(SoBH)) Then 'Mà số BH không có thì thông báo'

MsgBox "Chú ý chưa nhập số bảo hiểm ", vbOKOnly, "Thông báo"

SendKeys "+{TAB}", False

End If

End If

10 Tao nút lệnh trong forms ĐĂNG NHẬP (co tên Command3) để đăng nhập hệ thĩng Private Sub Command3_Click()

If (Not IsNull(DLookup("[Ten]", "MK", "[Ten]=[txtMK]"))) Then

DoCmd.Close

Else

MsgBox "DANG NHAP TRAI PHEP" & Chr(13) & "BAN KHONG CO QUYEN SU DUNG", _

Trang 9

vbOKOnly, "CANH BAO"

End If

End Sub

‘ Trên forms DANG NHAP tạo một test box có tên là “txtMK” và trong table MK có trường là [Ten] ,song bây giờ sẽ giải nghĩa như sau: Khi người nhập gõ mật khẫu đăng nhập và nhắp nút Command3 để vào

hệ thống, chương trình sẽ kiểm tra (nếu txtMK là không rỗng thì đối chiếu trong table MK nếu mật khẩu

“Ten” mà trùng với “txtMK” thì thoát form này, ngược lại thì thong báo)

11 Làm vô hiệu hoá các nút lệnh không cần thiết

Private Sub Form_Current()

If Not IsNull(txtMabenh) Then ‘Neu txtMabenh không rỗng thì

Me.txtthem.Enabled = True ‘ làm nút lệnh txtthem hiệu lực

Else

If IsNull(txtMabenh) Then ‘Neu txtMabenh rỗng thì

Me.txtthem.Enabled = False ‘Nút lênh txtthem khong sử dụng được

End If

End If

End Sub

12 Khi thoát khỏi một đối tượng mà lại muốn con trỏ về một control khác thì làm như sau:

Private Sub BSDT_LostFocus()

DoCmd.GoToControl "Ngay" ‘Dời về control Ngay

End Sub

13 Hiệu ứng màu cho label

Tạo một label có tên là label25

“khi mở form thì label 25 hiện 1 dòng chữ màu xanh

Private Sub Form_Open(Cancel As Integer)

Label25.Caption= “Hiện chữ màu xanh nè”

Label25.ForeColor=vbBlue

14 Cập nhật lại một đối tượng

Docmd Requery “CboMabenh”

15 Cảnh báo nếu chưa chọn mã kho trong comboBox mã bệnh nhân thì báo lỗi

Private Sub Tenhuoc_GotFocus() ‘Khi con tro nhảy vào combobox Tenthuoc

If(isNull(Forms![Danhmucbenhnhan]![cboMabenh])) then ‘ Nếu cboMabenh trong form Danhmucbenhnhan

mà rỗng thì hiện thông báo dưới đây

Msgbox “Chưa chọn mã bệnh nhân”,_vbExclamation, “Quan ly thuoc”

Sendkeys “+{TAB}”, False

Exit Sub

End if

End Sub

16 Hỏi : Tôi có 1 combo box (cboMaHang), tôi muốn khi người dùng đánh mã hàng không có trong hộp danh sách thì hiện lên thông báo lỗi, phải làm sao ?

Đáp : dùng sự kiện NotInList của combo box

Private Sub cboMaHang_NotInList(NewData As String, Response As Integer)

Response = acDataErrContinue

MsgBox "Ma hang nay khong co.", , "Bao loi !"

End Sub

- Mở properties của cboMaHang > Tab Data > Limit To List : Yes

17 Dùng các phím F1, F2…để mở các form

Trang 10

Bạn Tạo macro Autokeys :

Macro Name : {F1}

Action : OpenForm

Form Name : Form_NhapXuat

18 Hỏi: Tôi có thể mở bất kỳ mẫu biểu nào trong CSDL bằng cách chọn tên mẫu biểu từ combo box (list box) trong mẫu biểu khác không

Trả lời:

Tạo một combo box từ mẫu biểu nào mà bạn muốn chọn để mở mẫu biểu đầu tiên Combo box được thiết lập các thuộc tính sau:

Name: List of forms

Data: Value list (để cài đặt thuộc tính Row Suorce type)

Event: [On Enter]

' Đoạn mã xử lý như sau:

Private Sub Listofforms_enter()

Dim MyDb as Database

Dim MyContainer as Container

Dim I as integer

Dim list as string

Set MyDb = DBEngine.Workspace(0).Database(0)

Set My Container = MyDb.Containers("Forms")

List = " "

For I=0 to MyContainer.Documents.count - 1

List = List & MyContainer.Documents(I).name & ";"

Next I

me!

 Row Suorce = Left(List, Len(list)-1)

End sub

' Nhập tiếp thuộc tính After Update của Combo box

Private Sub ListofForms_AfterUpdate()

Docmd.OpenForm me![ListofForms)

End Sub

19 Tạo dòng chữ nhấp nháy trên thanh tiêu đề

Bạn dùng 2 sự kiện của Form: Open và Timer

- Private Sub Form_Open(Cancel As Integer)

Me.Caption = "Dữ liệu đã bị khóa !"

Me.TimerInterval = 600

End Sub

- Private Sub Form_Timer()

If Me.Caption = Space(1) Then

Me.Caption = "Dữ liệu đã bị khóa !"

Else

Me.Caption = Space(1)

End If

End Sub

20 Tạo dòng chữ chạy trên thanh tiêu đề chính là tên của Form được hiện:

Tại thuộc tính on Timer của Forms ta viết

Private Sub Form_Timer()

Me.TimerInterval = 400

Dim x, y, AsString

x = Left(Me.Caption, 2)

y = Right(Me.Caption, Len(Me.Caption) - 2)

Me.Caption = y + x

End Sub

21 Để List trong Combobox được thả nhanh hơn ta làm như sau:

Ngày đăng: 05/07/2014, 23:21

TỪ KHÓA LIÊN QUAN

w