Chào mừng đến với Diễn đàn Dân Kế Toán - Kế toán tổng hợp thực tế.
Kết quả 1 đến 9 của 9
  1. #1
    Ngày tham gia
    Mar 2016
    Bài viết
    0

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

    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

  2. #2
    Ngày tham gia
    Apr 2016
    Bài viết
    130
    Ðề: 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é.

  3. #3
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: 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

  4. #4
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: 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 .

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: 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

  6. #6
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Cơ sở dữ liệu Access nhiều người người dùng




    Trích dẫn Gửi bởi tuannhcs
    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

  7. #7
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: 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.

  8. #8
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Cơ sở dữ liệu Access nhiều người người dùng




    Trích dẫn Gửi bởi Thang_MADI
    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!

  9. #9
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: 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.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •