maidinhdan > 06-04-17, 07:55 PM
(06-04-17, 10:49 AM)thanhtruong Đã viết: Nếu áp dụng vào sẽ có vấn đề sau:
Không thể nén file back_end: Nếu file font_end đang link table đến nó
Do đó nếu vậy thì có tác dụng gì? không lẽ khi muốn nén phải đi nói tất cả máy con đều thoát phần mềm, vậy thì áp cái tự động nén 1 tháng 1 lần nó sẽ làm được gì?
Xin mọi người cho ý kiến!
![[Hình: demoNenfileBackend.jpg]](https://sites.google.com/site/thuthuataccess2003/home/demo-hinh/demoNenfileBackend.jpg)
thanhtruong > 30-06-17, 12:03 PM
(06-04-17, 07:55 PM)maidinhdan Đã viết:(06-04-17, 10:49 AM)thanhtruong Đã viết: Nếu áp dụng vào sẽ có vấn đề sau:
Không thể nén file back_end: Nếu file font_end đang link table đến nó
Do đó nếu vậy thì có tác dụng gì? không lẽ khi muốn nén phải đi nói tất cả máy con đều thoát phần mềm, vậy thì áp cái tự động nén 1 tháng 1 lần nó sẽ làm được gì?
Xin mọi người cho ý kiến!
Bạn có xem ghi chú trên hình này chưa?
Tin chắc là chưa, nên mới nói thế.
Cứu từ từ bạn ạh, Võ công cần tập luyện, suy xét, áp dụng, suy nghĩ.... nhưng đó cũng là 1 hướng tốt để bạn phải viết thêm lệnh để giải quyết với ý kiến này.
Ngoài ra, Bạn cần hiểu là nếu file đó mở bạn có thể xóa file chia sẽ đó không.
* Như vậy khi bạn thiết kế ứng dụng, bạn phải tạo 1 hàm để ngắt kết nối không cho máy con mở table. Chuyện đó thì mình nghĩ bạn từ từ tìm hiểu sẽ có 1 giải pháp cho bạn.
* Còn nhanh hơn bạn chỉ cần viết 1 lệnh Ngắt kết nối Internet trên máy chủ là xong. ( Hầu hết người ta dùng phương pháp này, cho đỡ mất công sức)
maidinhdan > 01-07-17, 12:50 PM
(30-06-17, 12:03 PM)thanhtruong Đã viết:(06-04-17, 07:55 PM)maidinhdan Đã viết:(06-04-17, 10:49 AM)thanhtruong Đã viết: Nếu áp dụng vào sẽ có vấn đề sau:
Không thể nén file back_end: Nếu file font_end đang link table đến nó
Do đó nếu vậy thì có tác dụng gì? không lẽ khi muốn nén phải đi nói tất cả máy con đều thoát phần mềm, vậy thì áp cái tự động nén 1 tháng 1 lần nó sẽ làm được gì?
Xin mọi người cho ý kiến!
Bạn có xem ghi chú trên hình này chưa?
Tin chắc là chưa, nên mới nói thế.
Cứu từ từ bạn ạh, Võ công cần tập luyện, suy xét, áp dụng, suy nghĩ.... nhưng đó cũng là 1 hướng tốt để bạn phải viết thêm lệnh để giải quyết với ý kiến này.
Ngoài ra, Bạn cần hiểu là nếu file đó mở bạn có thể xóa file chia sẽ đó không.
* Như vậy khi bạn thiết kế ứng dụng, bạn phải tạo 1 hàm để ngắt kết nối không cho máy con mở table. Chuyện đó thì mình nghĩ bạn từ từ tìm hiểu sẽ có 1 giải pháp cho bạn.
* Còn nhanh hơn bạn chỉ cần viết 1 lệnh Ngắt kết nối Internet trên máy chủ là xong. ( Hầu hết người ta dùng phương pháp này, cho đỡ mất công sức)
Lỗi như hình bên dưới, nếu test trên access 2010
thanhtruong > 05-07-17, 10:35 AM
maidinhdan > 07-07-17, 12:10 PM
(05-07-17, 10:35 AM)thanhtruong Đã viết: Có vấn đề rồi đây. mà hình như không ai để ý
Ta có: File Data dung lượng 10MB
Nén bằng chương trình dọn rác 1 tháng 1 lần thì còn 8MB , nghĩa là nó nén được có 2MB
Mà nén bằng tay thì giảm còn 5MB, nghĩa là nén được 5 MB
Vậy thì sao, làm sao để nó nén như nén bằng tay.???????
ongke0711 > 07-07-17, 03:16 PM
(06-04-17, 10:49 AM)thanhtruong Đã viết: Nếu áp dụng vào sẽ có vấn đề sau:
Không thể nén file back_end: Nếu file font_end đang link table đến nó
Do đó nếu vậy thì có tác dụng gì? không lẽ khi muốn nén phải đi nói tất cả máy con đều thoát phần mềm, vậy thì áp cái tự động nén 1 tháng 1 lần nó sẽ làm được gì?
ongke0711 > 07-07-17, 07:30 PM
(07-07-17, 04:46 PM)thanhtruong Đã viết:(07-07-17, 03:16 PM)ongke0711 Đã viết: Do cái DAO.DBEngine 3.6 không làm việc được với các file .accdb đời sau này nên phải đổi lại cái DBEngine thành 120.
Mình tìm hoài mà không ra cái code này
Public Function CompactFile(ByVal strSource As String, _
                           ByVal strDest As String, _
                           ByVal vntDestinationPath As Variant, _
                           ByVal vntPassword As Variant) As Boolean
             
             
   If (conHandleErrors) Then On Error GoTo ErrorHandler
   Dim objEngine As Object
   Set objEngine = CreateObject("DAO.DBEngine.120")
   '   Access cannot compact a file into itself, so we must work around this.
   '   If strDest is an empty string, this file is to be compacted into itself.
   If strDest = "" Then
       '   Add the name of a temporary file to the Access Directory.
       '   This will be the path of the file we will compact into.
       strDest = SysCmd(acSysCmdAccessDir) & "TEMPCOMP.MDB"
       If IsNull(vntPassword) Then
           objEngine.CompactDatabase strSource, strDest, conDbLangGeneral
       Else
           objEngine.CompactDatabase strSource, strDest, conDbLangGeneral, , ";pwd=" & vntPassword
       End If
       
       '   Delete the original (source) file.
       Kill strSource
       
       '   Rename the temporary file to the original (source) file.
       Name strDest As strSource
   Else
       '   This is where we compact into a new file if Replace was false.
       '   Again, Access cannot compact into the same file, so work around this.
       '   The Err_Compact: section (below) handles this.
       If IsNull(vntPassword) Then
           objEngine.CompactDatabase strSource, strDest, conDbLangGeneral
       Else
           objEngine.CompactDatabase strSource, strDest, conDbLangGeneral, , ";pwd=" & vntPassword
       End If
   End If
   CompactFile = True
       
ExitProcedure:
   Exit Function
ErrorHandler:
   '   Do not display errors here as it would halt the process.
   '   If appropriate, log the errors for the report and continue.
   Select Case Err.Number
   
       Case conDbExists
           '   If the file already exists, then delete it and resume at the same line.
           '   Since the file no longer exists, we can compact without error (hopefully).
           Kill strDest
           Resume
           
       Case conDbIsOpen, conDbUnknown, conDbNotFound, conDiskOrNetworkError
           '   Mark file as unusable.
           If IsNull(vntDestinationPath) Then
               CurrentDb.Execute " Update tbNenfileBackend" & _
                                 " Set Nenfilenaykhong = False" & _
                                 " Where Duongdanfile = " & Chr$(34) & strSource & Chr$(34)
           Else
               CurrentDb.Execute " Update tbNenfileBackend" & _
                                 " Set Nenfilenaykhong = False" & _
                                 " Where Tenfilemoi = " & Chr$(34) & vntDestinationPath & Chr$(34)
           End If
       
   End Select
   
   '   Except for conDbExists, add a new record to the Error Log Table,
   '   containing the FileName and the actual Access error string.
   With CurrentDb.OpenRecordset("tblErrorLog", conDbOpenDynaset)
       .AddNew
           !Duongdanfile = strSource
           !ErrorMessage = Err.Description
       .Update
       .Close
   End With
       
   blnCompactError = True
   Resume ExitProcedure
   
End Function 
ongke0711 > 07-07-17, 07:35 PM
(01-07-17, 12:50 PM)maidinhdan Đã viết: Lỗi như hình bên dưới, nếu test trên access 2010
minhminh25767 > 04-01-19, 10:02 AM