Thủ thuật Access là gì? thủ thuật phổ biến trong Microsoft Access

Mục Lục

Thủ thuật Access là gì? thủ thuật phổ biến trong Microsoft Access

Thủ thuật Access là các kỹ thuật hoặc phương pháp được sử dụng để tối ưu hóa hoặc thực hiện các công việc hiệu quả trong việc sử dụng phần mềm Microsoft Access. Microsoft Access là một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) được sử dụng để lưu trữ và quản lý dữ liệu trong môi trường Windows.

Thủ thuật Access là gì? thủ thuật phổ biến trong Microsoft Access

Thủ thuật Access là gì? thủ thuật phổ biến trong Microsoft Access

Dưới đây là một số thủ thuật phổ biến trong Microsoft Access:

  1. Thiết kế cơ sở dữ liệu hiệu quả: Thiết kế cơ sở dữ liệu chặt chẽ và có cấu trúc tốt để tối ưu hóa hiệu suất và tiện ích trong việc truy xuất và quản lý dữ liệu.
  2. Sử dụng chỉ mục: Sử dụng chỉ mục trong các trường dữ liệu có thể tăng tốc độ truy xuất và tìm kiếm dữ liệu.
  3. Tối ưu hóa truy vấn: Sử dụng cách viết truy vấn hiệu quả và sử dụng các hàm tính toán phù hợp để truy xuất dữ liệu một cách nhanh chóng và chính xác.
  4. Sử dụng macro và module: Tận dụng tính năng macro và module để tự động hóa các tác vụ lặp đi lặp lại và thực hiện các chức năng phức tạp trong Access.
  5. Tạo mẫu nhập liệu: Tạo mẫu nhập liệu giúp người dùng dễ dàng và chính xác nhập liệu vào cơ sở dữ liệu.
  6. Sử dụng tính năng báo cáo: Tạo các báo cáo chuyên nghiệp và dễ đọc để hiển thị thông tin từ cơ sở dữ liệu một cách rõ ràng và thuận tiện.
  7. Thực hiện sao lưu định kỳ: Thực hiện sao lưu cơ sở dữ liệu định kỳ để đảm bảo an toàn và khả năng khôi phục dữ liệu khi có sự cố.
  8. Bảo mật dữ liệu: Áp dụng bảo mật dữ liệu và quyền truy cập để đảm bảo rằng chỉ người dùng có quyền có thể truy cập và sửa đổi dữ liệu.
  9. Sử dụng tiện ích tích hợp: Tận dụng các tiện ích tích hợp có sẵn trong Access hoặc các add-in bổ sung để mở rộng tính năng và chức năng của phần mềm.

Những thủ thuật trên giúp người dùng sử dụng Microsoft Access một cách hiệu quả và tối ưu hóa việc quản lý và truy xuất dữ liệu.

Trong bài viết này là các thủ thuật về Ms Access. Tất cả đều sưu tập từ internet. Các bạn nào có những thủ thuật hay, đơn giản, mời góp vô cho .. vui nhà vui cửa.

Microsoft Access là gì?

Microsoft Access là một phần mềm hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) được phát triển và phân phối bởi Microsoft Corporation. Nó là một thành phần của bộ công cụ Microsoft Office và được sử dụng để lưu trữ, quản lý và truy xuất dữ liệu trong môi trường Windows.

Access cho phép người dùng tạo và quản lý các cơ sở dữ liệu, gồm các bảng, truy vấn, biểu mẫu, báo cáo và macro. Người dùng có thể sử dụng Access để lưu trữ thông tin liên quan đến công việc, dự án, khách hàng, hàng tồn kho, v.v. và sau đó truy xuất dữ liệu này một cách dễ dàng để thực hiện các tác vụ phân tích và báo cáo.

Một số tính năng chính của Microsoft Access bao gồm:

  1. Bảng: Dùng để lưu trữ dữ liệu theo dạng bảng có cấu trúc, với các trường và hàng.
  2. Truy vấn: Dùng để truy xuất dữ liệu từ bảng và thực hiện các phép tính, lọc và sắp xếp dữ liệu.
  3. Biểu mẫu: Dùng để tạo giao diện người dùng dễ sử dụng để nhập và hiển thị dữ liệu từ bảng.
  4. Báo cáo: Dùng để tạo các báo cáo chuyên nghiệp và tùy chỉnh cho việc hiển thị dữ liệu.
  5. Macro: Dùng để tự động hóa các tác vụ trong Access.

Microsoft Access là một công cụ mạnh mẽ cho việc quản lý và xử lý dữ liệu trong môi trường văn phòng và doanh nghiệp. Nó thích hợp cho những người không chuyên về lập trình nhưng muốn tạo và quản lý cơ sở dữ liệu một cách dễ dàng và hiệu quả.

Câu 1
Hỏi : Tôi có 1 combo box (cboMaHang), tôi muốn khi con chuột hoặc con trỏ nhảy đến cboMahang thì hộp danh sách tự động thả xuống, phải làm sao ?

Đáp : có nhiều cách, cách đơn giản nhất là tận dụng method sãn có của combo box : Dropdown.
Cách dùng:
Private Sub cboMahang_GotFocus()
cboMahang.Dropdown
End Sub

Câu 2
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

Câu 3:
Hỏi : Tôi có 1 combo box (cboMaHang), Số mã hàng trong table lên đến 2000 record. khi tôi mở Form, mở cboMahang, kéo thanh trượt của hộp danh sách để tìm mã hàng thì thấy từng record hiện lên rất chậm (nếu số mã hàng chỉ có 15 – 20 record thì rất nhanh). Có cach gì đơn giản và nhanh khi duyệt qua từng record trong hộp danh sách của combo box hay không ?

Đáp:
Giải thích : Khi bắt đầu kéo thanh trượt của hộp danh sách, bộ nhớ của máy tính mới bắt đầu tải các record từ table vào bộ nhớ để hiện lên trên form. Nếu số recod càng nhiều thì thời gian tải sẽ càng lâu.

Để khắc phục thực trạng này, ta sẽ cho chương trình tải tổng thể những record vào bộ nhớ ngay khi mở Form. Nhờ đó, khi nhảy đến combo box, hộp danh sach sẽ hiện những list rất nhanh vì đã có sẵn những record trong bộ nhớ máy tính .
Cách làm :
Ở sự kiện Form_Load

Private Sub Form_Load()
Dim lngCount As Variant

Câu 4:
Hỏi : Tôi đã hoàn tất chương trình bán hàng trên Access, đã viết xong File hướng dẫn sử dụng (HuongDan.chm). Nhưng tôi không biết làm sao để kết nối file HuongDan.chm với chương trình ?

Đáp :
Bạn phải dùng đến hàm API.

Tạo 1 module
Khai báo hàm API

Option Compare Database

Private Declare Function HtmlHelp Lib “HHCtrl.ocx” Alias “HtmlHelpA” _
(ByVal hwndCaller As Long, _
ByVal pszFile As String, _
ByVal uCommand As Long, _
dwData As Any) As Long
Const HH_DISPLAY_TOPIC = &H0
Const HH_HELP_CONTEXT = &HF

Public Function GoiHelp ( )

Dim strPath As String
strPath = Application.CurrentProject.Path
strPath = strPath & “huongdan.chm”

Call HtmlHelp(0, strPath, HH_DISPLAY_TOPIC, ByVal “Gioithieu.htm”)
End Function

Trong đó Gioithieu. htm là trang mặc định ( default ) của File HuongDan. chm. Mình xin bổ xung thêm

Câu Hỏi:

Private Sub Cboname_GotFocus()
SendKeys “%{DOWN}”
End Sub

Câu 2:Ngược lại

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 list thì hiện lên thông tin có thêm giá trị mới này vào Combobox ko ? Làm cách nào
Trả lời :
Private Sub Cboname_NotInList ( NewData As String, Response As Integer )
Dim db As Database

Dim LSQL As String
Dim LResponse As Integer
Dim ctl As Control

On Error GoTo Err_Execute
Set ctl = Me!Cboname
LResponse = MsgBox(NewData & ” là một giá trị mới. Bạn có muốn thêm nó vào combo box?”, vbYesNo, “Xác nhận”)
If LResponse = vbYes Then
Set db = CurrentDb()
LSQL = “insert into tablename (cboname) values (‘” & NewData & “‘)”

db. Execute LSQL, dbFailOnError
Set db = Nothing
Response = acDataErrAdded

Else
Response = acDataErrContinue
ctl.Undo
End If
On Error GoTo 0
Exit Sub

Err_Execute:
ctl.Undo
MsgBox “Action failed”

End Sub

Câu 6:
Hỏi : Trong chương trình mydb.mdb của tôi, mỗi khi tôi nhấn phím F1 thì đều hiện lên hướng dẫn của MS Access, rất bực mình. Tôi muốn thay hướng dẫn của MS Access bằng File help của tôi (huongdan.chm) khi nhấn F1, phải làm sao ?

Đáp :
Bạn Tạo macro Autokeys :
Name: autokey.bmp Views: 9 Size: 257,6 KB
Macro Name : {F1}
Action : RunCode
Function Name : GoiHelp()
(xem thêm câu hỏi đáp số 4 để tạo Function GoiHelp())
Lưu ý: Bạn có thể dùng MacCâu 7:

Hỏi: Làm thế nào để mở một file Word trong trong Access?

Đáp : Để mở một file Word trong Access bạn hoàn toàn có thể làm như sau ( vd khi bạn nhấn chuột vào Command1 của 1 form nào đó ) : ‘ Khai báo hàm API cần dùng
Private Declare Function WinExec Lib “ kernel32 ” ( ByVal lpCmdLine As String, ByVal nCmdShow As Long ) As Long
Option Compare Database
Option Explicit
‘ Hàm ship hàng nhấn chuột
Private Sub Command1_Click ( )
‘ Chạy Word và mở file c : datarose.doc
WinExec “ ” ” C : Program FilesMicrosoft OfficeOfficeWINWORD. EXE ” ” c : datarose.doc ”, 8
End Sub

Hỏi:

File Access của tôi ngày càng phình to ra, có khi lên đến 100 MB. Tôi biết trong Main Menu của Access có lịnh Compact and Repair Database. Nhưng trong chuơng trình của tôi Main Menu của Access đã được giấu đi, thay bằng My Custom Menu Bar, tôi phải làm sao để sử dụng lịnh này ?

Đáp :
Bạn tạo Public Function

Public Sub CompactDB()
CommandBars(“Menu Bar”). _
Controls(“Tools”). _
Controls(“Database utilities”). _
Controls(“Compact and repair database…”). _âu 9:

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 tiên phong. Combo box được thiết lập những thuộc tính sau :
Name : List of forms
Data : Value list ( để setup thuộc tính Row Suorce type )
Event : [ On Enter ]
‘ Đoạn mã giải quyết và 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 và MyContainer. Documents ( I ). name và “ ; ”
Next I
me ! [ List of Forms ]. 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

Hỏi: Tôi làm chương trình qlý SV, vô ý lúc nhập tên toàn nhập chữ thường, tôi muốn tạo một hàm có thể in hoa tất cả mẫu tự đầu của từng từ trong trường văn bản thì phải làm như thế nào?

Trả lời : Hàm của bạn làm như sau :
Function Inhoachucaidau ( Word as Variant ) as String
Dim temp as string, C as string, OldC as String, X as integer
If IsNull ( Word ) then
Exit Function
Else
temp = CStr ( LCase ( Word )
OldC = ” ”
For X = 1 to Len ( temp )
C = Mid ( temp, X, 1 )
If C > = “ a ” and C < = “ z ” and ( OldC < “ a ” or OldC > “ z ” ) then
Mid ( temp, X, 1 ) = UCase ( C )
End If
OldC = C
Next X
Inhoachucaidau = temp
End If
End Function
Lúc những bạn sử dụng thì biến hóa trường Control Suorce thành
= Inhoachucaidau ( [ text field_của bạn ] ) Câu 11

Hỏi:

Trong câu hỏi đáp số 8 tôi đã biết cách sử dụng lịnh Compact and Repair Database trong chương trình (gọi sub CompactDB()).Tuy nhiên khách hàng của tôi yêu cầu cao hơn : làm sao để chương trình mỗi tháng 1 lần tự động Compact and Repair Database. Đau đầu quá, tôi phải làm sao ?

Đáp :

Ý tưởng : Bạn tạo 1 table (T_Compact) chỉ có 1 field text (NamThang). Dữ liệu của field này có dạng : 200704 (tháng 04/2007). Khi mở chương trình bạn viêt code kiểm tra tháng hiện hành có trong T_compact hay không :
*****Nếu có thì không chạy Sub CompactDB ở câu 8
*****Nếu không có thì chạy Sub trên và thêm 1 record tháng hiện hành vào T_Compact.

Cách làm :
1 ) Tạo 1 table ( T_Compact ) chỉ có 1 field text ( NamThang )

2) Tạo Form (F_Compact) chỉ có 1 label, caption : Đang tự động “dọn dẹp” chương trình định kỳ hàng tháng, bạn vui lòng chờ trong giây lát ….
Dung nhan mùa hạ của F_Compact :
*********************************************************

* Đang tự động hóa “ quét dọn ” chương trình định kỳ hàng tháng, *
* bạn sung sướng chờ trong giây lát …. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Lưu ý : Form này không có tiêu đề ( titlebar ) chắc bạn cũng biết nó để làm gì rôi !

Mở Properties của F_Compact :
****** Timer Interval : 4000
****** On Timer :
Private Sub Form_Timer()
Call CompactDB
End Sub
3) Mở cửa sổ viết code của Form Startup, chèn thêm 1 sub :
Private Sub DonDep()
Dim ChuoiNgay As String, TimKiem As Variant
Dim KyNay As Variant

KyNay = Year(Date) & Right(“0” & Month(Date), 2)
ChuoiNgay = “NamThang = ‘” & KyNay & “‘”
TimKiem = DLookup(“Namthang”, “T_Compact”, ChuoiNgay)

If IsNull(TimKiem) Then
DoCmd.SetWarnings False
DoCmd.RunSQL “INSERT INTO T_Compact(NamThang) VALUES(” & KyNay & “)”
DoCmd.SetWarnings True
DoCmd.OpenForm “F_Compact”
End If
End Sub
4) Ở sự kiện open hoặc close của Form Startup, bạn cho chạy sub DonDep

Hoi: Trong table Hocsinh của tôi có trường hoten bây giờ tôi muốn xắp xếp các tên theo thứ tự tăng dần, nếu cùng tên thì xắp xếp theo họ, vậy tôi phải làm thế nào?

Trả lời : Dùng hàm sau để tách tên, sau đó hoàn toàn có thể vận dụng gọi hàm này trong query cũng được

Function GetTen(hoten As String) As String
Dim pos As Integer
pos = 1
If InStr(pos, Trim(hoten), ” “) = 0 Then
GetTen = hoten
Exit Function
End If
While InStr(pos + 1, Trim(hoten), ” “) > 0

pos = InStr(pos + 1, Trim(hoten), ” “)
Wend

GetTen = Mid(hoten, pos)
End Function

Hỏi:
Báo cáo của chương trình in ra dựa trên 1 table (query). Thỉnh thoảng trên table không có dữ liệu phát sinh nhưng báo cáo vẫn được in ra ( dựa trên câu lịnh : docmd.OpenReport …… ), trong không đuọc đẹp lắm : có header, footer nhưng dữ liệu lại trống không vì không có dữ liệu.

Tôi muốn khi table nguồn không có tài liệu thì báo cáo giải trình sẽ không được in và hiện lên câu thông tin : không có tài liệu phát sinh ! Tôi phải làm thế nào ?

Đáp:
Bạn có thể viết code kiểm tra nếu table nguồn có record = 0 thì hiện lên thông báo không có dữ liệu phát sinh ! và không cho chạy dòng lệnh doCmd.OpenReport ….

Tuy nhiên có 1 cách đơn thuần hơn : sử dụng sự kiện On No Data của report .

Private Sub Report_NoData(Cancel As Integer)
MsgBox “Khong co du lieu phat sinh.”,, “Thong bao !”
Cancel = TrueCâu 14:

Hỏi: Tôi muốn làm một trường thông báo những thông tin mới nhất nhưng không biết giải thuật làm sao cho chữ chạy trên màn hình?

Đáp : Ý tưởng đặt ra là bạn phải sử dụng một label với sự kiện On Timer của Form
Name : label ; Caption : muốn chạy chữ gì ở đây cũng được
Code :

Private Sub Form_Timer()
me.TimerInterval = 400

Dim x, y As String
x = Left(label.Caption, 1)
y = Right(label.Caption, Len(label.Caption) – 1)
label.Caption = y + x
End Sub

Note :

Giá trị TimerInterval có thể thay đổi tùy thuộc vào tốc độ mà các bạn muốn. Với giải thuật đơn giản trên các bạn cũng có thể làm cho Caption của Form hiện hành chạy bằng cách thay label.Caption bằng me.Caption
End Sub 5) Tạo 1 module, đưa Public Sub Compact() trong câu 8 vào.
accDoDefaultAction
End Sub

Từ 1 Command Button hoặc Menu Command bạn gọi CompactDB ( ) là xong .

Share this:

Thích bài này:

Thích

Đang tải …

Alternate Text Gọi ngay