Cơ sở dữ liệu Access nhiều người người dùng

tuannhcs

Member
Hội viên mới
Chào các bạn
Phần mềm của mình viết bằng access,được tổ chức theo mô hình Front end,Back End
Và mình bắt đầu cho nó chạy trong mạng LAN,vì vậy mà mình phải tính đến việc đụng độ
trong chế độ nhiều người dùng(như trùng khóa chính,nhiều người truy cập vào 1 bản ghi v v...)
-Mình đã dùng một số giải pháp sau để tính toán phân quyền việc đụng độ
1.Tạo thông tin user bằng Tool Security của Access( Workgroup information) (file .mdw)
2.Dùng một số thiết lập trong Tool Option của access
Nhưng cả 2 giải pháp trên nhìn chung không giải quyết được đụng độ
-Mình đang tính đến việc tự làm một module để giải quyết việc đụng độ
Vậy mình muốn các bạn trợ giúp cho mình cách làm module để tính toán giải quyết việc đụng độ
Rất mong trợ giúp các bạn
 
Ðề: Cơ sở dữ liệu Access nhiều người người dùng

Mấy cái Workgroup information đó hình như trong Access 2007 trở nên nó bỏ rồi mà.
Còn cái ý của bạn mình cũng đã làm trong phần mềm của công ty mình. Lâu rồi mình không có nhớ,đại loại như sau :
Mình không dùng autonumber (dùng cái này hay vì không lo đụng độ khóa chính nhưng nó cứ tăng nên mình không thích) ,cái này mình dùng Function để tăng +1.
Khi có 1 người insert dữ liệu trong sự kiện Before Insert bạn chạy 1 câu lệnh sql update cái mã ID đã tăng do Function vào 1 table nào đó, người thứ 2 trước khi insert sẽ phải kiểm tra trong table đó để lấy mã ID +1.
Đấy là vấn đề insert còn chỉnh sửa dữ liệu đang có thì bạn dựa vào cái sự kiện On dirty . Thế này nhé khi 1 ai đó chỉnh sửa dữ liệu thì mã record đó sẽ được insert vào 1 table ABC ,cho đến khi sửa xong thì cái After update sẽ xóa nó đi. Người thứ 2 khi vào đúng bản ghi đó để sửa thì trên sự kiện on dirty sẽ kiểm tra mã ID trên Form có trùng với mã trong table ABC trên không ,nếu không thì cho insert và chạy sql để update mã vào ABC ,còn nếu có thì khóa Form với bản ghi đó .

Để làm vấn đề này bạn cần phải làm nhiều cái nữa, giả dụ như lợi dụng On time sau một thời gian nào đó thì bỏ khóa chẳng hạn ...

Cái này mình làm chạy trên máy công ty 2 người cùng ínert dữ liệu 1 lúc chưa thấy có vấn đề gì. Đây là ý kiến của mình ,nếu sai mọi người góp ý nhé.
 
Ðề: Cơ sở dữ liệu Access nhiều người người dùng

cảm ơn trợ giúp của bạn glasseggs
Mình sẽ làm theo cách của bạn,theo bạn mô hình csdl access mdb dùng cho 5 máy
có ổn không hay bắt buộc phải chuyển theo mô hình access project+sql server
Rất mong trợ giúp của bạn
 
Ðề: Cơ sở dữ liệu Access nhiều người người dùng

Cái vụ sql mình giờ mới đang học. Nên không dám phán bừa ,cái này bạn hỏi bác Phat nhiều kinh nghiệm hơn.

Còn phần mềm công ty mình dung tất cả là 3 máy chưa có vấn đề gì. Theo ý kiến cá nhân mình nếu csdl của bạn không quá rắc rối thì dùng access cũng được.
Mà khi thiết kế nó không biết bạn có để ý đến cái vụ compact dữ liệu tự động không, trước đây mình cũng không để ý đến nó vì nghĩ không cần. Nhưng để đảm bảo phần mềm hoạt động tốt và nhanh qua mang LAN mình đã thử cái này như sau :
Mình tạo code để insert gần 30.000 record vào table, cơ sở dữ liệu phình ra là hơn 250 Mb. Sau đó mình vào table xóa gần hết để lại vài bản ghi. Sau đó thoát phần mềm kiểm tra back end vẫn là 250 Mb. Mình mở phần mềm lên và compact, kết quả back end chỉ còn vài trăm kb .
 
Ðề: Cơ sở dữ liệu Access nhiều người người dùng

cảm ơn bạn glasseggs
Mình đã giải quyết được trường hợp nhiều người cùng nhập số liệu không bị trùng khoá chính
Nhưng mà còn 1 vấn đề thế này
1.Khi nhiều người cùng nhập chứng từ
Người thứ 1 nhập chứng từ số 1
Người thứ 2 nhập chứng từ số 2
....
...
v ..vv
Người thứ 1 lưu chứng từ số 1 trước
mình dùng nút lệnh lưu gen bởi ms access

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Tiếp theo người thứ 2 lưu chứng từ số 2
....
cũng với nút lệnh có code
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

Thì xuất hiện thông báo trên form
This record has been changed by another user since you started editing it.
if you save the record ,you will overwrite the change the other made

Copy the changed to the clipboard will let you look at the value the other
user entered,and then paste your change back in if you decide to make change

SAVE COPY TO CLIPBOARD DROP CHANGE

Đây không phải là trường hợp 2 người cùng sửa 1 bản ghi mà trường hợp
cùng thêm mới ,sau đó cất giữ thì những bản ghi đang nhập ở máy khác cũng tự động lưu thì phải

-Mình nghĩ rằng có phải do câu lệnh

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

lưu thay đổi bản ghi hiện tại hay là lưu tất cả thay đổi của Table đó

Để khắc phục tình trạng trên mình làm như nào
Rất mong ý kiến của bạn
 
Ðề: Cơ sở dữ liệu Access nhiều người người dùng

cảm ơn bạn glasseggs
Mình đã giải quyết được trường hợp nhiều người cùng nhập số liệu không bị trùng khoá chính
Nhưng mà còn 1 vấn đề thế này
1.Khi nhiều người cùng nhập chứng từ
Người thứ 1 nhập chứng từ số 1
Người thứ 2 nhập chứng từ số 2
....
...
v ..vv
Người thứ 1 lưu chứng từ số 1 trước
mình dùng nút lệnh lưu gen bởi ms access

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Tiếp theo người thứ 2 lưu chứng từ số 2
....
cũng với nút lệnh có code
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

Thì xuất hiện thông báo trên form
This record has been changed by another user since you started editing it.
if you save the record ,you will overwrite the change the other made

Copy the changed to the clipboard will let you look at the value the other
user entered,and then paste your change back in if you decide to make change

SAVE COPY TO CLIPBOARD DROP CHANGE

Đây không phải là trường hợp 2 người cùng sửa 1 bản ghi mà trường hợp
cùng thêm mới ,sau đó cất giữ thì những bản ghi đang nhập ở máy khác cũng tự động lưu thì phải

-Mình nghĩ rằng có phải do câu lệnh

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

lưu thay đổi bản ghi hiện tại hay là lưu tất cả thay đổi của Table đó

Để khắc phục tình trạng trên mình làm như nào
Rất mong ý kiến của bạn

Vào bỏ cái lệnh đó ra thay bằng:
DoCmd.RunCommand acCmdSaveRecord
 
Ðề: Cơ sở dữ liệu Access nhiều người người dùng

Bài toán truy cập nhiều người sử dụng khó có thể giải quyết trong MS Access. Trên thực tế thì có rất nhiều vấn đề liên quan đến việc quản lý truy cập nhiều người sử dụng, và nó liên quan cả đến hiệu suất của cả hệ thống bạn sử dụng. Trong các hệ quản trị cơ sở dữ liệu có tiếng hiện nay, có rất nhiều các công cụ và cơ chế để giải quyết các vấn đề về truy cập chung, ví dụ như cơ chế Phong tỏa các bản ghi.
Có thể có một vài cách giải quyết những vấn đề bạn đưa ra ở trên, nhưng chỉ mang tính cục bộ và sẽ có rủi ro là phát sinh thêm nhiều vấn đề khác khi vận hành.
 
Ðề: Cơ sở dữ liệu Access nhiều người người dùng

Bài toán truy cập nhiều người sử dụng khó có thể giải quyết trong MS Access. Trên thực tế thì có rất nhiều vấn đề liên quan đến việc quản lý truy cập nhiều người sử dụng, và nó liên quan cả đến hiệu suất của cả hệ thống bạn sử dụng. Trong các hệ quản trị cơ sở dữ liệu có tiếng hiện nay, có rất nhiều các công cụ và cơ chế để giải quyết các vấn đề về truy cập chung, ví dụ như cơ chế Phong tỏa các bản ghi.
Có thể có một vài cách giải quyết những vấn đề bạn đưa ra ở trên, nhưng chỉ mang tính cục bộ và sẽ có rủi ro là phát sinh thêm nhiều vấn đề khác khi vận hành.

Nếu bạn có làm cơ chế Phong tỏa bản ghi thì vẫn có thể tái hiện nó lại trên Access mà. Nói chung Access hoàn toàn giải quyết được vấn đề nếu chúng ta thiết kế tốt!
 
Ðề: Cơ sở dữ liệu Access nhiều người người dùng

Hiện tại mình sử dụng 1 chương trình Access, sử dụng nhiều người dùng, chạy trên mạng Lan, chưa gặp rắc rối gì ngoại trừ rớt mạng và cúp điện.
 
Ðề: Cơ sở dữ liệu Access nhiều người người dùng

Chào bạn domfootwear
Bạn có thể cho mình biết chương trình access của bạn dùng csdl sql server hay csd access mdb
Số người dùng là bao nhiêu,tốc độ chạy nhanh hay chậm
Số chứng từ phát sinh trong 1 ngày,có phải dùng server chuyên dụng không,hay là máy PC thường làm máy chủ
Bạn có thể tư vấn giúp mình để csdl mdb theo mô hình Front End,Back END chạy hiệu quả trong mạng LAN
Thanh you !
 

CẨM NANG KẾ TOÁN TRƯỞNG


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Cách làm file Excel quản lý lãi vay

Đăng ký kênh nhé cả nhà

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top