Minh Tiên > 10-11-19, 10:13 AM
maidinhdan > 10-11-19, 04:10 PM
(10-11-19, 10:13 AM)Minh Tiên Đã viết: Chào ACE cả nhà !
Tiên có vấn đề này nhờ ACE Pro giúp.
Tiên có 1 file access khi mở ra thiết kế form, modue, ... thì dung lượng tăng lên 30M, Tiên Compact data, tíc vào compact database của Option dung lượng vẫn ko thay đổi (vẫn 30M). Nhưng Import sang 1 Database mới, Compact thì chỉ còn 15M.
Nhờ cả nhà giúp, có cách nào ko Import qua database mới mà data cũ vẫn trở về 15 M ko ?
Cảm ơn cả nhà !
'-----------------------------------------------------------------------------
' Utilities from http://blog.nkadesign.com/microsoft-access/
' (c) Renaud Bompuis, 2008-2009
' Licensed under the Creative Commons Attribution License
' http://creativecommons.org/licenses/by/3.0/
' http://creativecommons.org/licenses/by/3.0/legalcode
'-----------------------------------------------------------------------------
Option Compare Database
Option Explicit
' Time out set to 60 iterations, after which the batch file should delete itself
Private Const TIMEOUT = 60
Public Sub Restart(Optional Compact As Boolean = False)
Dim scriptpath As String
' Tao duong dan Tam cho file batch
scriptpath = Application.CurrentProject.FullName & ".dbrestart.bat"
' if the script already exists, then check it isn't an old remnant
' that has passed it's timeout.
If Dir(scriptpath, vbNormal) <> "" Then
If DateAdd("s", TIMEOUT * 2, FileDateTime(scriptpath)) < Date Then
' We've passed twice the batch file timeout, giving ample time for
' it to exectute, so if it's still there, it's most probably a dud
Kill scriptpath
Else
' Timeout hasn't expired beyond the acceptable limit, so it's probably
' still active, just try to close the application again
Application.Quit acQuitSaveAll
Exit Sub
End If
End If
' Construct the batch file
' Note that the TIMEOUT value is only used as a loop counter and
' we do not really count elapsed time in the batch file.
' The ping command takes some time to load and start and even though
' we set its timeout to 100ms, it will take much longer than that to
' execute.
' If we've been asked to comnpact the database, we launch the database
' using the /compact command line switch
Dim s As String
s = s & "SETLOCAL ENABLEDELAYEDEXPANSION" & vbCrLf
s = s & "SET /a counter=0" & vbCrLf
s = s & ":CHECKLOCKFILE" & vbCrLf
s = s & "ping 0.0.0.255 -n 1 -w 100 > nul" & vbCrLf
s = s & "SET /a counter+=1" & vbCrLf
s = s & "IF ""!counter!""==""" & TIMEOUT & """ GOTO CLEANUP" & vbCrLf
s = s & "IF EXIST ""%~f2.%4"" GOTO CHECKLOCKFILE" & vbCrLf
If Compact Then
s = s & """%~f1"" ""%~f2.%3"" /compact" & vbCrLf
End If
s = s & "start "" "" ""%~f2.%3""" & vbCrLf
s = s & ":CLEANUP" & vbCrLf
s = s & "del %0"
' Write batch file
Dim intFile As Integer
intFile = FreeFile()
Open scriptpath For Output As #intFile
Print #intFile, s
Close #intFile
' Create the arguments to be passed to the script
' Here we pass it the full path to the database minus the extension which we pass separately
' this is done so that we can reconstruct the path to the lock file easily in the script.
' The extension to the lock file is also passed as a third argument.
Dim dbname As String, ext As String, lockext As String, accesspath As String
Dim idx As Integer
' Get the path to the msaccess executable, wherever that is
accesspath = SysCmd(acSysCmdAccessDir) & "msaccess.exe"
' Find the extension, starting from the end
For idx = Len(CurrentProject.FullName) To 1 Step -1
If Mid(CurrentProject.FullName, idx, 1) = "." Then Exit For
Next idx
dbname = Left(CurrentProject.FullName, idx - 1)
ext = Mid(CurrentProject.FullName, idx + 1)
' Depending on the database extension, determine its lock file extension
If Left(ext, 2) = "ac" Then
lockext = "laccdb"
Else
lockext = "ldb"
End If
' Call the batch file
s = """" & scriptpath & """ """ & accesspath & """ """ & dbname & """ " & ext & " " & lockext
Shell s, vbHide
' Close our application
Application.Quit acQuitSaveAll
End Sub
Minh Tiên > 10-11-19, 05:11 PM
ongke0711 > 10-11-19, 08:58 PM
Minh Tiên > 11-11-19, 07:20 PM
(10-11-19, 08:58 PM)ongke0711 Đã viết: Kiểm tra lại xem code có tạo ra nhiều file rác như "~TMPCLP..." cho cả table, form, report không.Mình ko hiểu tìm và xóa file "~TMPCLP" trong Acesss ở đâu, code ntn sẽ tạo ra "~TMPCLP", bạn có thể giúp nói rõ hơn ko ?
Bạn thử kiếm và xoá nó xem có cải thiện gì không.
ongke0711 > 12-11-19, 12:16 PM
(11-11-19, 07:20 PM)Minh Tiên Đã viết:(10-11-19, 08:58 PM)ongke0711 Đã viết: Kiểm tra lại xem code có tạo ra nhiều file rác như "~TMPCLP..." cho cả table, form, report không.Mình ko hiểu tìm và xóa file "~TMPCLP" trong Acesss ở đâu, code ntn sẽ tạo ra "~TMPCLP", bạn có thể giúp nói rõ hơn ko ?
Bạn thử kiếm và xoá nó xem có cải thiện gì không.
Thanks bạn !
Minh Tiên > 14-11-19, 04:01 PM
maidinhdan > 14-11-19, 10:43 PM
Minh Tiên > 15-11-19, 03:30 PM
(14-11-19, 10:43 PM)maidinhdan Đã viết: Thử dùng cái này chưa Tiên: [Thủ Thuật] Demo Phần 2_Compact & Repaire Back EndCảm ơn Dân !
Nhưng phải viết thêm vài đoạn nửa
maidinhdan > 15-11-19, 11:33 PM
(15-11-19, 03:30 PM)Minh Tiên Đã viết:(14-11-19, 10:43 PM)maidinhdan Đã viết: Thử dùng cái này chưa Tiên: [Thủ Thuật] Demo Phần 2_Compact & Repaire Back EndCảm ơn Dân !
Nhưng phải viết thêm vài đoạn nửa
Tiên đã nghiên cứu áp dụng code này của bạn nhưng vẫn ko xuống được.
Cứ cũng file đó mở lên design form, module, ... 1 thời gian là phình lên 30 M có khi 60M làm mọi thứ đều ko xuống.
Nhưng mở database mới ,Import qua database mới này là chỉ còn 15M.
Tìm mãi ko biết nó phình lên là do gì ?
Thân./.