Private Sub Form_Current()
'Kiểm Tra số thứ tự, nếu Null thì đó là recodr mới
If IsNull(Me.STT) Then
STT.Value = SoTT
End If
End Sub
Function SoTT() As String
Dim so As Integer
so = Nz(DMax("[Couter]", "BangChi", "[Date]= date()"))
Couter.Value = so + 1
SoTT = Date & "-" & Format(Couter, "000")
End Function
Function CalcWorkdays(StartDate, EndDate) As Integer
Dim LTotalDays As Integer
Dim LSaturdays As Integer
Dim LSundays As Integer
On Error GoTo Err_Execute
CalcWorkdays = 0
If IsDate(StartDate) And IsDate(EndDate) Then
If EndDate <= StartDate Then
CalcWorkdays = 0
Else
LTotalDays = DateDiff("d", StartDate - 1, EndDate)
LSaturdays = DateDiff("ww", StartDate - 1, EndDate, 7)
LSundays = DateDiff("ww", StartDate - 1, EndDate, 1)
'Workdays is the elapsed days excluding Saturdays and Sundays
CalcWorkdays = LTotalDays - LSaturdays - LSundays
End If
End If
Exit Function
Err_Execute:
'If error occurs, return 0
CalcWorkdays = 0
End Function
Chú ý:
1/Nếu chúng ta làm luôn thứ bảy thì thay thế:
Mã:
CalcWorkdays = LTotalDays - LSaturdays - LSundays
Thành:
Mã:
CalcWorkdays = LTotalDays -LSundays
2/ Phạm vi hàm này không bao gồm ngày lễ. Lẽ ra mình có thể thiết kế tính luôn ngày lễ nếu như chúng ta không có nghỉ tết âm lịch và giỗ tổ Hùng Vương. Mình sẽ bổ sung nếu tìm thấy module chuyển ngày dương thành âm lịch!
Hỏi: Em có tạo một sổ địa chỉ lấy dữ liệu từ tập tin MDB. Khi chạy chương trình trên máy nhà em thì bình thường nhưng khi chạy trên máy khác thì không được và có thông báo lỗi "Run-time error '429': Active X component can't create object". Thông báo này là sao, xin chỉ cho em cách khắc phục.
Trả lời: Khi sử dụng Access, thông báo lỗi "ActiveX component can't create object" xảy ra có thể do một hay nhiều nguyên nhân:
- Thư viện DAO 3.6 không được đăng ký thích hợp. Cách giải quyết: Trên Windows, chọn Start > Run và gõ dòng lệnh (tùy theo máy, đường dẫn có thể khác):
regsvr32 "C:\Program Files\Common Files\Microsoft Shared\DAO\DAO360.DLL"
- Thiếu một hay nhiều References. Cách giải quyết: Mở database đã gặp lỗi này, nhấn ALT+F11 để mở Microsoft Visual Basic Editor, chọn Tools > References, kiểm tra thư viện nào cần có nhưng chưa được đánh dấu chọn thì đánh dấu chọn vào checkbox bên cạnh. Thường thì Microsoft DAO 3.6 Object Library là thư viện cần có.
- Có một tham chiếu không hợp lệ đến Utility Database. Cách giải quyết: Mở database đã gặp lỗi này, nhấn ALT+F11 để mở Microsoft Visual Basic Editor, chọn Tools > References, xóa đánh dấu chọn ở bất kỳ tham chiếu nào đến Utility Database hoặc Utility.MDA.
- Không có quyền truy cập đến các thư viện cần thiết. Cách giải quyết: Phải bảo đảm các user có quyển “read” đối với tất cả các tập tin trong thư mục:
\Windows\System32 (nếu là Windows XP) hoặc \Winnt\System32 (nếu là Windows NT, 2000) hoặc \Windows\System (nếu là Windows 95, 98, Me).
- Có một tập tin wizard gặp nguy hiểm. Cách giải quyết: Sử dụng Windows Explorer để tìm các tập tin wizard sau: Acwzmain.mde, Acwztool.mde và Acwzlib.mde, đổi phần đuôi tên tập tin của mỗi tập tin thành .old, dùng Add or Remove Programs của Control Panel để Reinstall or Repair Office (trong đó chọn Access) nhằm khôi phục các tập tin này.
CHƯƠNG CAN CHÍP (echip)
Gần đâydo nhu cầu bảo mật chống sửa form/ Report , chống luc lọi trong các đoan code cũng như cải thiện tốc độ chương trình do VBA đã được biên dịch. Một số bạn đã chuyển ứng dụng Access của mình thành file *. mde nhưng vướng lỗi. Sau đây, mình xin thống kê và cách xử lý.
Cách chuyển:
Vào menu Tool -->Database Utility--> make MDE file...
Lỗi 1: Lỗi thường gặp phải là do bạn đang dùng phiên bản Access cũ hơn. Bạn phải dùng phiên bản Access đó để chuyển hoặc convert file MDB sang phiên bản Access hiện hành.
Cách Convert. Vào Tool--> Database Utilities -> Convert Database --> To Access 2002 2003 Database ( hoặc mới hơn)
Sau khi thành công, nó sẽ tạo cho bạn 1 file MDB mới có phiên bản. Bạn vào file này để tiến hành make sang file *.MDE
Lỗi 2: Hệ Thống báo như sau
"This error is usually associated with compiling a large database into an MDE file. Due to the method used to compile the database, a considerable number of TableID references are created for each table. The Microsoft Jet database engine version 4.0 can only create a maximum of 2048 open TableIDs at one time. Exporting a database as an MDE potentially can exceed this limit if the database has a large number of objects (table, macro, form, report, etc).
There is no accurate method to estimate the number of TableIDs the Jet database engine uses during the process of compiling a database as an MDE. However, each VBA module and each form uses one TableID, as a result, if the database has 500 forms, and each form's HasModule property is set to Yes, as many as 1,000 TableIDs are used."
Thường lỗi này do có 1 số đoạn code bạn dùng wizard tạo ra. ( ví dụ event Click của các nút nhấn). Sau đó bạn đổi tên đối tượng nên các code này trở nên "vô thừa nhận" và thông báo lỗi trên.
Giải pháp tốt là bạn nhấn Alt + F11, nhảy ra khung soạn VBA. Trong khung soạn, bạn vào Debug--> Compiler. Nó sẽ nhảy đến đoạn code bị thừa đó và bạn xóa đi.