maidinhdan > 19-01-19, 04:45 PM
Public Function CompactFileKhac(DiaChiFileCanNen As String, Optional DiaChiFileDaNen As String = "", Optional MatKhauFile As String = "")
On Error GoTo Loi
Dim MaLoi As Single, TenLoi As String
Dim objEngine As DAO.DBEngine
Set objEngine = Application.DBEngine
DoCmd.Hourglass True
' Compact CSDL hien tai DiaChiFileCanNen.
If DiaChiFileDaNen = "" Or DiaChiFileDaNen = DiaChiFileCanNen Then
MaLoi = 1
DiaChiFileDaNen = Application.CurrentProject.Path & "\TaptinTam.MDB"
If MatKhauFile = "" Then
objEngine.CompactDatabase DiaChiFileCanNen, DiaChiFileDaNen
Else
objEngine.CompactDatabase DiaChiFileCanNen, DiaChiFileDaNen, , , ";pwd=" & MatKhauFile
End If
' Delete file Goc.
Kill DiaChiFileCanNen
' Doi ten File Da nen thanh file Goc.
Name DiaChiFileDaNen As DiaChiFileCanNen
' Compact CSDL va xuat sang mot tap tin moi (DiaChiFileDaNen).
Else
If MatKhauFile = "" Then
objEngine.CompactDatabase DiaChiFileCanNen, DiaChiFileDaNen
Else
objEngine.CompactDatabase DiaChiFileCanNen, DiaChiFileDaNen, , , ";pwd=" & MatKhauFile
End If
End If
MsgBox "Da Compact xong file: " & LaytenFile(DiaChiFileCanNen), vbInformation, "Thông báo thanh cong"
KetThuc_Loi:
DoCmd.Hourglass False
Set objEngine = Nothing
Exit Function
Loi:
MaLoi = Err.Number
Debug.Print MaLoi
Select Case MaLoi
Case 3031: TenLoi = "Mat khau: [ " & MatKhauFile & " ] khong chinh xac"
Case 3204: TenLoi = "File nen: [ " & DiaChiFileDaNen & " ] dang ton tai, vui long xem lai"
Case 3024: TenLoi = "File chon khong phai la file Access"
Case Else: TenLoi = "Chua xac dinh dc loi"
End Select
MsgBox "Nguyen nhan Loi: " & TenLoi, vbCritical, "Loi ham Compact and Repaire"
Resume KetThuc_Loi
End Function
CompactFileKhac "Địa chỉ file cần nén"
CompactFileKhac "Địa chỉ file cần nén", Nz("Địa chỉ file đã nén với tên mới:")
CompactFileKhac "Địa chỉ file cần nén", , Nz("Mật khẩu file cần nén")
CompactFileKhac "Địa chỉ file cần nén", Nz("Địa chỉ file đã nén với tên mới:"), Nz("Mật khẩu file cần nén")
ongke0711 > 19-01-19, 09:08 PM
maidinhdan > 19-01-19, 10:07 PM
(19-01-19, 09:08 PM)ongke0711 Đã viết: Tôi thấy Dân lưu file tạm vào cùng thư mục của ứng dụng MsAccess.exe trong ổ C:\Program Files\...\TaptinTam.MDB. Việc lưu này có khi bị lỗi nếu người dùng không có quyền copy vào ổ C:\ do đó tôi nghĩ Dân nên cho lưu vào cùng đường dẫn file FE này luôn thì tiện hơn (Application.CurrentProject.Path).
DiaChiFileDaNen = SysCmd(acSysCmdAccessDir) & "TaptinTam.MDB"
DiaChiFileDaNen = Application.CurrentProject.Path & "\TaptinTam.MDB"
mrtoanbin > 21-01-19, 09:19 PM
(19-01-19, 04:45 PM)maidinhdan Đã viết: Demo Phần 2 Compact & Repaire file Back End giúp làm giảm dung lượng file Back end
So Sánh với phần 1([Thủ Thuật] Demo_Compact & Repaire nhiều file Back End): Bẩy các lỗi phát sinh, và code gọi ngắn gọn hơn
Khả năng ứng dụng và Thông tin phần 2:
- Compact & Repaire file Back End trên chính file đó
- Compact & Repaire file Back End cho ra mộtfile mới ( giống như lệnh sao lưu backup), bạn có thể ứng dụng để sao lưu định kỳ dữ liệu hoặc phục hồi dữ liệu của bạn.
Khả năng tương thích; trên Access 2003 trở lên.
Hàm chính:
Cú pháp gọi hàm:Mã PHP:Public Function CompactFileKhac(DiaChiFileCanNen As String, Optional DiaChiFileDaNen As String = "", Optional MatKhauFile As String = "")
On Error GoTo Loi
Dim MaLoi As Single, TenLoi As String
Dim objEngine As DAO.DBEngine
Set objEngine = Application.DBEngine
DoCmd.Hourglass True
' Compact CSDL hien tai DiaChiFileCanNen.
If DiaChiFileDaNen = "" Or DiaChiFileDaNen = DiaChiFileCanNen Then
MaLoi = 1
DiaChiFileDaNen = Application.CurrentProject.Path & "\TaptinTam.MDB"
If MatKhauFile = "" Then
objEngine.CompactDatabase DiaChiFileCanNen, DiaChiFileDaNen
Else
objEngine.CompactDatabase DiaChiFileCanNen, DiaChiFileDaNen, , , ";pwd=" & MatKhauFile
End If
' Delete file Goc.
Kill DiaChiFileCanNen
' Doi ten File Da nen thanh file Goc.
Name DiaChiFileDaNen As DiaChiFileCanNen
' Compact CSDL va xuat sang mot tap tin moi (DiaChiFileDaNen).
Else
If MatKhauFile = "" Then
objEngine.CompactDatabase DiaChiFileCanNen, DiaChiFileDaNen
Else
objEngine.CompactDatabase DiaChiFileCanNen, DiaChiFileDaNen, , , ";pwd=" & MatKhauFile
End If
End If
MsgBox "Da Compact xong file: " & LaytenFile(DiaChiFileCanNen), vbInformation, "Thông báo thanh cong"
KetThuc_Loi:
DoCmd.Hourglass False
Set objEngine = Nothing
Exit Function
Loi:
MaLoi = Err.Number
Debug.Print MaLoi
Select Case MaLoi
Case 3031: TenLoi = "Mat khau: [ " & MatKhauFile & " ] khong chinh xac"
Case 3204: TenLoi = "File nen: [ " & DiaChiFileDaNen & " ] dang ton tai, vui long xem lai"
Case 3024: TenLoi = "File chon khong phai la file Access"
Case Else: TenLoi = "Chua xac dinh dc loi"
End Select
MsgBox "Nguyen nhan Loi: " & TenLoi, vbCritical, "Loi ham Compact and Repaire"
Resume KetThuc_Loi
End Function
hoặc file không có mật khẩuMã PHP:CompactFileKhac "Địa chỉ file cần nén"
hoặc file có mật khẩuMã PHP:CompactFileKhac "Địa chỉ file cần nén", Nz("Địa chỉ file đã nén với tên mới:")
hoặc công thức chungMã PHP:CompactFileKhac "Địa chỉ file cần nén", , Nz("Mật khẩu file cần nén")
Mã PHP:CompactFileKhac "Địa chỉ file cần nén", Nz("Địa chỉ file đã nén với tên mới:"), Nz("Mật khẩu file cần nén")
Ghi chú:
- chữ Nz để phòng hờ bạn không điền dữ liệu nó sẽ lấy công thức đầu tiên để nén file
- Ô màu đỏ trong hình không cần nhập vào.
Hình minh họa[/b][/color]
[b]Nếu cần nghiên cứu xin để lại Email.
Phần tiếp theo: Demo Compact & Repaire liên quan đến file Front End trên Access 2003 và các phiên bản cao hơn.
Lý do: Access 2003 và các phiên bản cao hơn phải dùng những hàm khác nhau để thực hiện.
[/b]
tieu_ngao > 27-02-19, 12:04 PM
(19-01-19, 10:07 PM)maidinhdan Đã viết:(19-01-19, 09:08 PM)ongke0711 Đã viết: Tôi thấy Dân lưu file tạm vào cùng thư mục của ứng dụng MsAccess.exe trong ổ C:\Program Files\...\TaptinTam.MDB. Việc lưu này có khi bị lỗi nếu người dùng không có quyền copy vào ổ C:\ do đó tôi nghĩ Dân nên cho lưu vào cùng đường dẫn file FE này luôn thì tiện hơn (Application.CurrentProject.Path).
Cảm ơn anh Bảo
như vậy chúng ta chỉ việc đổi đoạn:
ThànhMã PHP:DiaChiFileDaNen = SysCmd(acSysCmdAccessDir) & "TaptinTam.MDB"
Mã PHP:DiaChiFileDaNen = Application.CurrentProject.Path & "\TaptinTam.MDB"
maidinhdan > 07-05-19, 03:49 PM
nguyenhungcuong > 05-07-19, 04:08 PM
tamibms > 30-07-19, 09:59 AM
(21-01-19, 09:19 PM)mrtoanbin Đã viết:(19-01-19, 04:45 PM)maidinhdan Đã viết: Demo Phần 2 Compact & Repaire file Back End giúp làm giảm dung lượng file Back end
So Sánh với phần 1([Thủ Thuật] Demo_Compact & Repaire nhiều file Back End): Bẩy các lỗi phát sinh, và code gọi ngắn gọn hơn
Khả năng ứng dụng và Thông tin phần 2:
- Compact & Repaire file Back End trên chính file đó
- Compact & Repaire file Back End cho ra mộtfile mới ( giống như lệnh sao lưu backup), bạn có thể ứng dụng để sao lưu định kỳ dữ liệu hoặc phục hồi dữ liệu của bạn.
Khả năng tương thích; trên Access 2003 trở lên.
Hàm chính:
Cú pháp gọi hàm:Mã PHP:Public Function CompactFileKhac(DiaChiFileCanNen As String, Optional DiaChiFileDaNen As String = "", Optional MatKhauFile As String = "")
On Error GoTo Loi
Dim MaLoi As Single, TenLoi As String
Dim objEngine As DAO.DBEngine
Set objEngine = Application.DBEngine
DoCmd.Hourglass True
' Compact CSDL hien tai DiaChiFileCanNen.
If DiaChiFileDaNen = "" Or DiaChiFileDaNen = DiaChiFileCanNen Then
MaLoi = 1
DiaChiFileDaNen = Application.CurrentProject.Path & "\TaptinTam.MDB"
If MatKhauFile = "" Then
objEngine.CompactDatabase DiaChiFileCanNen, DiaChiFileDaNen
Else
objEngine.CompactDatabase DiaChiFileCanNen, DiaChiFileDaNen, , , ";pwd=" & MatKhauFile
End If
' Delete file Goc.
Kill DiaChiFileCanNen
' Doi ten File Da nen thanh file Goc.
Name DiaChiFileDaNen As DiaChiFileCanNen
' Compact CSDL va xuat sang mot tap tin moi (DiaChiFileDaNen).
Else
If MatKhauFile = "" Then
objEngine.CompactDatabase DiaChiFileCanNen, DiaChiFileDaNen
Else
objEngine.CompactDatabase DiaChiFileCanNen, DiaChiFileDaNen, , , ";pwd=" & MatKhauFile
End If
End If
MsgBox "Da Compact xong file: " & LaytenFile(DiaChiFileCanNen), vbInformation, "Thông báo thanh cong"
KetThuc_Loi:
DoCmd.Hourglass False
Set objEngine = Nothing
Exit Function
Loi:
MaLoi = Err.Number
Debug.Print MaLoi
Select Case MaLoi
Case 3031: TenLoi = "Mat khau: [ " & MatKhauFile & " ] khong chinh xac"
Case 3204: TenLoi = "File nen: [ " & DiaChiFileDaNen & " ] dang ton tai, vui long xem lai"
Case 3024: TenLoi = "File chon khong phai la file Access"
Case Else: TenLoi = "Chua xac dinh dc loi"
End Select
MsgBox "Nguyen nhan Loi: " & TenLoi, vbCritical, "Loi ham Compact and Repaire"
Resume KetThuc_Loi
End Function
hoặc file không có mật khẩuMã PHP:CompactFileKhac "Địa chỉ file cần nén"
hoặc file có mật khẩuMã PHP:CompactFileKhac "Địa chỉ file cần nén", Nz("Địa chỉ file đã nén với tên mới:")
hoặc công thức chungMã PHP:CompactFileKhac "Địa chỉ file cần nén", , Nz("Mật khẩu file cần nén")
Mã PHP:CompactFileKhac "Địa chỉ file cần nén", Nz("Địa chỉ file đã nén với tên mới:"), Nz("Mật khẩu file cần nén")
Ghi chú:
- chữ Nz để phòng hờ bạn không điền dữ liệu nó sẽ lấy công thức đầu tiên để nén file
- Ô màu đỏ trong hình không cần nhập vào.
Hình minh họa[/b][/color]
[b]Nếu cần nghiên cứu xin để lại Email.
Phần tiếp theo: Demo Compact & Repaire liên quan đến file Front End trên Access 2003 và các phiên bản cao hơn.
Lý do: Access 2003 và các phiên bản cao hơn phải dùng những hàm khác nhau để thực hiện.
[/b]
Cần ngâm cứu lắm ạ: nguyentrungtoan0288@gmail.com.
Sẵn bác Dân cho hỏi luôn: File của bác có cái quyền không cho ai can thiệp vào bất kỳ trên form, modul… hay quá ạ. Có thể chia sẻ được không ạ, một cách hay để bảo vệ Data và design Form,...