lethanhnhan
Thành viên chính thức
- Tham gia
- 27/5/07
- Bài viết
- 76
- Được thích
- 249
Chào các bạn,
Sử dụng Excel, cũng lắm lúc các bạn cảm thấy chán ! Tại sao? Chắc có lẻ vì:
_ File Excel càng ngày lại càng lớn.
_ Xử lý thông tin với số lượng nhiều record thì lại quá lâu.
_ Bảo mật cũng...không tốt lắm.
_ Phân quyền thì cũng ... chán.
Vâng và các bạn có thể liệt kê nhiều nguyên nhân nữa.
Còn Access thì sao?
Vấn đề này đã khiến một số người dùng Access chán cái thằng cha Excel.
Vậy tại sao chúng ta không phối hợp dùng Excel và Access để tận dụng thế mạnh lẫn nhau?
Tôi xin giới thiệu giải pháp của tôi cho vấn đề này.
1. Dựa trên dữ liệu tôi cần lưu trữ tôi sẽ thiết kế file database trên Access.
2. Dùng kỹ thuật ADO để kết nối với dữ liệu.
3. Thiết kế các form nhập liệu, các thủ tục cần thiết cho công việc.
4. Các công cụ nâng cao liên quan đến cơ sở dữ liệu.
Vài bước mạn phép cùng các Lập trình viên
Đầu tiên tôi sử dụng một module để sử lý lỗi:
Tôi sẽ giới thiệu tiếp trong bài sau.
Lê Thanh Nhân
Sử dụng Excel, cũng lắm lúc các bạn cảm thấy chán ! Tại sao? Chắc có lẻ vì:
_ File Excel càng ngày lại càng lớn.
_ Xử lý thông tin với số lượng nhiều record thì lại quá lâu.
_ Bảo mật cũng...không tốt lắm.
_ Phân quyền thì cũng ... chán.
Vâng và các bạn có thể liệt kê nhiều nguyên nhân nữa.
Còn Access thì sao?
Vấn đề này đã khiến một số người dùng Access chán cái thằng cha Excel.
Vậy tại sao chúng ta không phối hợp dùng Excel và Access để tận dụng thế mạnh lẫn nhau?
Tôi xin giới thiệu giải pháp của tôi cho vấn đề này.
1. Dựa trên dữ liệu tôi cần lưu trữ tôi sẽ thiết kế file database trên Access.
2. Dùng kỹ thuật ADO để kết nối với dữ liệu.
3. Thiết kế các form nhập liệu, các thủ tục cần thiết cho công việc.
4. Các công cụ nâng cao liên quan đến cơ sở dữ liệu.
Vài bước mạn phép cùng các Lập trình viên
Đầu tiên tôi sử dụng một module để sử lý lỗi:
Mã:
Option Explicit
'Source code from Professional Excel Development
Public Const gbDEBUG_MODE As Boolean = False
Public Const glHANDLED_ERROR As Long = 9999
Public Const glUSER_CANCEL As Long = 18
Private Const msSILENT_ERROR As String = "UserCancel"
Private Const msFILE_ERROR_LOG As String = "Error.log"
Private Const gsAPP_TITLE As String = "NOTICE"
Public Function [B]bCentralErrorHandler[/B]( _
ByVal sModule As String, _
ByVal sProc As String, _
Optional ByVal sFile As String, _
Optional ByVal bEntryPoint As Boolean) As Boolean
Static sErrMsg As String
Dim iFile As Integer
Dim lErrNum As Long
Dim sFullSource As String
Dim sPath As String
Dim sLogText As String
' Grab the error info before it's cleared by
' On Error Resume Next below.
lErrNum = err.Number
' If this is a user cancel, set the silent error flag
' message. This will cause the error to be ignored.
If lErrNum = glUSER_CANCEL Then sErrMsg = msSILENT_ERROR
' If this is the originating error, the static error
' message variable will be empty. In that case, store
' the originating error message in the static variable.
If Len(sErrMsg) = 0 Then
sErrMsg = err.Description
sErrMsg = err.Number & "| " & sErrMsg
End If
' We cannot allow errors in the central error handler.
On Error Resume Next
' Load the default filename if required.
If Len(sFile) = 0 Then sFile = ThisWorkbook.Name
' Get the application directory.
sPath = ThisWorkbook.Path
If Right$(sPath, 1) <> "\" Then sPath = sPath & "\"
' Construct the fully-qualified error source name.
sFullSource = "[" & sFile & "]" & sModule & "." & sProc
' Create the error text to be logged.
sLogText = " " & sFullSource & ", Error " & _
CStr(lErrNum) & ": " & sErrMsg
' Open the log file, write out the error information and
' close the log file.
iFile = FreeFile()
Open sPath & msFILE_ERROR_LOG For Append As #iFile
Print #iFile, Format$(Now(), "mm/dd/yy hh:mm:ss"); sLogText
If bEntryPoint Then Print #iFile,
Close #iFile
' Do not display silent errors.
If sErrMsg <> msSILENT_ERROR Then
' Show the error message when we reach the entry point
' procedure or immediately if we are in debug mode.
If bEntryPoint Or gbDEBUG_MODE Then
Application.ScreenUpdating = True
MsgBox sErrMsg, vbCritical, gsAPP_TITLE
' Clear the static error message variable once
' we've reached the entry point so that we're ready
' to handle the next error.
sErrMsg = vbNullString
End If
' The return value is the debug mode status.
bCentralErrorHandler = gbDEBUG_MODE
Else
' If this is a silent error, clear the static error
' message variable when we reach the entry point.
If bEntryPoint Then sErrMsg = vbNullString
bCentralErrorHandler = False
End If
End Function
Lê Thanh Nhân