ledangvan > 20-02-13, 03:50 PM
Noname > 20-02-13, 05:52 PM
ledangvan > 21-02-13, 10:16 AM
(20-02-13, 05:52 PM)Noname Đã viết: Không có cách nào cả bạn ạ.
Nếu file access bạn thiết kế hợp lý, việc compact là không cần thiết.
Những dữ liệu tạm, sửa và xóa thường xuyên mới gây phình database thôi, chứ dữ liệu thuần thì không làm database phình bao nhiêu. Và dù có compact cũng không giảm bao nhiêu.
Tách dữ liệu lưu trữ thành 1 file riêng, chương trình 1 file riêng. Rồi link chúng lại với nhau là cách tốt nhất.
Những dữ liệu nào thuộc loại tạm, hoặc phục vụ cho báo cáo thì hãy để nó lưu ở chương trình tại máy client. Còn dữ liệu chính để ở server thì lâu lâu mới cần compact 1 lần.
Noname > 21-02-13, 10:26 AM
tuanle570 > 25-12-13, 12:45 PM
(20-02-13, 03:50 PM)ledangvan Đã viết: Chào cả nhà, mình có một khó khăn trong việc compact and repair dữ liệu (vì nó cứ đầy lên khi sử dụng) vấn đề cùng lúc có rất nhiều máy sử dụng chung một dữ liệu. Mình chỉ có thể thực hiện Compact khi có một mình máy mình mở hoặc là đợi cho mọi người tắt hết chương trình mới thực hiện được. Vậy cho mình hỏi có cách nào giải quyết được vướng mắc này không ? Xin chân thành cảm ơn.
Private Sub Form_Open(Cancel As Integer)
boolCountDown = False
End Sub
Private Sub Form_Timer()
On Error GoTo Err_Form_Timer
Dim strFileNameShutdown As String, strFileNameUpdate As String
Dim Ngay As String, thang As String, nam As String
Dim tenshutdown As String
tenshutdown = "đường dẫn"\chkfile.lat"
strFileNameShutdown = Dir(tenshutdown)
If boolCountDown = False Then
If (strFileNameShutdown <> "chkfile.lat") Then
boolCountDown = True
intCountDownMinutes = 2
End If
Else
intCountDownMinutes = intCountDownMinutes - 1
DoCmd.OpenForm "frmAppShutDownWarn" 'cái form này để hiện thông báo Chương trình tạm ngưng sử dụng để bảo trì
Forms!frmAppShutDownWarn!txtWarning = DLookup("TB", "BangThongBao", "ID=4") ' cái này mình tạo thông báo bằng tiếng Việt, bạn xem chơi thôi
If intCountDownMinutes < 1 Then
Application.Quit acQuitSaveAll
End If
End If
Exit_Form_Timer:
Exit Sub
Err_Form_Timer:
Resume Next
End Sub
@echo off
cls
set nam=%date:~-4%
set duongdan=D:\Vi Sinh\Vi Sinh %nam%\Vi Sinh_DATA.mdb
set ldb=D:\Vi Sinh\Vi Sinh %nam%\Vi Sinh_DATA.ldb
set tenfile=Vi Sinh %nam%
set time=0
set mtime=0
if exist "%duongdan%" (
:ldb
if exist "%ldb%" (
cls
ren "T:\Vi Sinh %nam%\chkfile.*" chkfile.lat
echo Thong bao loi:
echo --------------
echo.
echo - Khong sua duoc file Vi Sinh, do file nay van con dang su dung
echo.
echo - Vui long goi dien thoai den cac phong, yeu cau tat file %tenfile%
echo.
echo - Sau khi da tat het. Chay lai chuong trinh nay de sua file
echo.
echo - Nhan mot phim bat ky de thoat
echo.
pause
exit
)
ren "T:\Vi Sinh %nam%\chkfile.*" chkfile.la
:loop
cls
set /a time=%time% + 1
If %time%==60 (
set time=0
set /a mtime=%mtime%+1
)
If %mtime%==1 (
echo Runtime [%mtime% Minute and %time% Seconds]
ping 127.0.0.1 -n 2 > NUL
goto loop
)
echo Huong dan:
echo ----------
echo.
echo - Chi duoc su dung chuc nang nay khi khong vao duoc file %tenfile%
echo.
echo - Vui long thong bao den cac don vi dang su dung: dong file Vi Sinh lai
echo.
echo - Xin cho 30 giay...
echo.
echo.
echo Dem thoi gian: %time% giay
if %time%==30 goto ThucHien
ping 127.0.0.1 -n 2 > NUL
goto loop
:ThucHien
echo.
echo.
echo - Nhan mot phim bat ky de sua file %tenfile%
ren "T:\Vi Sinh %nam%\chkfile.*" chkfile.lat
echo.
echo.
pause
if exist "%ldb%" goto ldb
c:
cd\
cd "Program Files\Microsoft Office\Office11"
MSACCESS.EXE "D:\VI SINH\VI SINH %nam%\VI SINH_DATA.MDB" /COMPACT
cls
echo Tuan Le:
echo.
echo - Da sua xong
ren "T:\Vi Sinh %nam%\chkfile.*" chkfile.lat
echo.
echo - Nhan mot phim bat ky de thoat
echo.
pause
exit
) else (
ren "T:\Vi Sinh %nam%\chkfile.*" chkfile.lat
echo.
echo Thong bao:
echo ----------
echo.
echo May vi tinh nay khong co quyen sua file
echo.
echo Vui long thuc hien tai may server
echo.
echo Nhan mot phim bat ky de thoat
echo.
pause
exit
)