Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Làm thế nào Compact được dữ liệu khi nhiều máy cùng dung chung dữ liệu ?
#1
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.
Chữ ký của ledangvan Xin chào, mình là ledangvan, Tham gia http://thuthuataccess.com/forum từ ngày 22-08 -11.
ღღღღღTài sản của ledangvan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#2
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.
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn maidinhdan
#3
(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.

Cảm ơn bác Noname mình cũng làm như bạn rồi : Cũng có chương trình chạy riêng và dữ liệu riêng khi sử dụng các lệnh xóa, sửa, bảng tạm mình đều thông qua query của chương trình chạy, tuy nhiên không hiểu sao mà dữ liệu cứ phình to. Mình thấy có 1 chương trình cũng viết bằng Acc khi họ xử lý các dữ liệu tạm và sửa xóa ... thông qua một File có đuôi .tmp khi đó khi thoát chương trình thì cả chương trình chạy lẫn dữ liệu đều không bị phình lên; Không biết bác Noname có biết cách này không hướng dẫn giúp mình với. Xin chân thành cảm ơn
Chữ ký của ledangvan Xin chào, mình là ledangvan, Tham gia http://thuthuataccess.com/forum từ ngày 22-08 -11.
ღღღღღTài sản của ledangvan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#4
Ý mình là khi sửa xóa bảng tạm không phải là thông query, mà là một bảng tạm ở máy client.
Khi nào dữ liệu cần lưu lại thì mới phải push lên data chính thôi.

File temp của các chương trình bạn nói thật ra cũng là file Access, nhưng họ để đuôi khác, khi xử lý, họ copy dữ liệu cần xử lý ra đó, link vào chương trình chính. Sau khi xử lý xong, họ gọi lệnh xóa file.
Ở diễn đàn có một vài thủ thuật copy bảng qua 1 file mới, tự link 1 bảng ở file khác...

Ứng dụng nhuần nhuyễn sẽ làm tốt việc trên
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#5
(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.

Chào bạn !

Mình có tìm trên mạng và đã làm theo hướng dẫn của một số trang, xin gợi ý bạn cách làm như sau, hơi lúa một tí, xin đừng chê nhé:

1. Bạn tạo cho mình 1 file bất kỳ tại nơi đặt file chương trình của bạn (vd: chkfile.lat có nội dung hoặc rỗng cũng được)
2. Tạo 1 form (vd: frmAppShutDown) tại Event On Open:
Mã PHP:
Private Sub Form_Open(Cancel As Integer)
    
boolCountDown False
End Sub 
tại Event On Time:
Mã PHP:
Private Sub Form_Timer()
On Error GoTo Err_Form_Timer

    Dim strFileNameShutdown 
As StringstrFileNameUpdate As String
    Dim Ngay 
As Stringthang As Stringnam 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 
tại Event Timer Interval: nhập 5000 (hoặc tuỳ bạn set thời gian)
3. Bạn tạo macro hoặc VBA cho phép chạy ẩn cái form này khi khởi động chương trình.

--> Mục đích chính là để: form này chạy ẩn xuyên suốt trong chương trình, đến 1 thời điểm Timer Interval, nó tự động kiểm tra file chkfile.lat, nếu thấy file chkfile.lat bị đổi tên --> hiện thông báo bảo trì và đóng chương trình lại). Nếu bạn muốn compact and repair thì chỉ cần đổi lại tên file (vd: chkfile.lat thành chkfile.la chẳng hạn).

Nếu muốn tự động hơn nữa thì bạn tạo 1 file .bat để tự động làm hết từ a-z
File compact.bat của mình
Mã PHP:
@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 phongyeu cau tat file %tenfile%
        echo.
        echo - 
Sau khi da tat hetChay 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%==(
            echo 
Runtime [%mtimeMinute and %timeSeconds]    
            
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 dungdong file Vi Sinh lai
                
echo.     
                echo - 
Xin cho 30 giay... 
                echo.                
                echo.                    
                echo 
Dem thoi gian: %timegiay
            
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


Xin lỗi vì trả lời không chi tiết, để mình sắp xếp công việc xong, sẽ dọn lại chương trình và post lên cho bạn !
Chữ ký của tuanle570 Xin chào, mình là tuanle570, Tham gia http://thuthuataccess.com/forum từ ngày 16-09 -13.
Reply
Những người đã cảm ơn maidinhdan


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Làm thế nào đánh số trang của một report có nhiều nhóm ledangvan 11 2,668 20-11-16, 01:30 PM
Bài mới nhất: songngam_p89
  [Help] Thiết kế form nhập và lưu trữ dữ liệu theo yêu cầu brianhuynh 16 624 20-10-16, 10:54 PM
Bài mới nhất: brianhuynh
  Xóa tất cả các dữ liệu ChiMai 3 145 15-10-16, 02:47 PM
Bài mới nhất: cpucloi
  [Lỗi] Không chạy được VBA Code hungthanmx 3 219 04-09-16, 03:48 PM
Bài mới nhất: Nguyen Hoang Diep
  [Hỏi] Cách đưa chức năng compact & repair vào form toancvp 6 490 24-08-16, 12:19 AM
Bài mới nhất: paulsteigel

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ