kamikaze1310 > 11-08-20, 03:36 PM
(11-08-20, 01:09 PM)ongke0711 Đã viết:Tại vì file kia e xài trước 2 tháng rồi mà k phát sinh gì nên file này e tiếp tục để như vậy nhưng chả hiểu sao chỉ mỗi file này bị lỗi. Do lúc đầu e cũng không biết vụ Split database nữa. Trường ID của e chỉ là text thôi bác. Để khi nào có lỗi e chụp lại gửi lên bác xem dùm, hiện tại sáng giờ thì e bảo người nhập chính của file khi nào k sử dụng thì thoát ra chứ k mở lên để từ sáng tới chiều thì sáng giờ lại không bị lỗi gì hết.(10-08-20, 09:00 PM)kamikaze1310 Đã viết: Em cũng từng nghĩ trường hợp này nhưng suy nghĩ lại thì k đúng lắm. Vì cùng 1 ổ đĩa đó e để đến 2 file ở 2 folder khác nhau để 2 team sử dụng. Về dung lượng thì file kia hiện tại 55mb, file này chỉ 3mb. Số người sử dụng cũng ngang nhau tầm 10-15 người. Số lượng truy cập cùng 1 lúc thì file kia hầu như mở suốt và 10-15 người kia cũng nhập liên tục, còn file này chỉ có 1 người mở suốt và nhập liên tục, các người còn lại chỉ là mở hồ sơ ra và cập nhật các thông tin còn lại. Ngày xưa rất ít khi bị, nhưng hiện tại 1 ngày chỉ cần mở ra xíu là người khác k vô file dc, muốn vô thì phải copy file về để nó sinh ra bản backup rồi đổi tên khác và để lên lại ổ đĩa cho mọi người sử dụng. 1 ngày như vậy cũng 4-5 lần. E cũng đang rất đau đầu k biết file bị gì nữa
Nguyên tắc thiết kế Accesss cho nhiều người dùng là phải Split database, chứ nhiều người mở cùng một file Access trên ổ đĩa chia sẻ chung là sai bài rồi. Chuyện phát sinh lỗi, treo máy, dữ liệu cập nhập sai v.v.. là điều không tránh khỏi bởi cách làm này.
Việc tách file Access ra thành 2 file: dữ liệu và giao diện người dùng cũng gặp lỗi do việc lập trình chưa tính tới những trường hợp nhiều người dùng cùng thao tác dữ liệu cùng đúng một thời điểm nhưng cũng khá hiếm.
Trường hợp của bạn có thể do thiết kế Table, trường ID của bạn dạng AutoNumber hay sao? Lỗi phát sinh do nhiều người dùng nó liên quan nhiều thứ. Nói chung không có file mẫu thì cũng khó định bệnh. Tối thiểu cũng phải có hình ảnh thông báo lỗi, lỗi ở chỗ nào, cách thiết kế ra sao v.v..
kamikaze1310 > 11-08-20, 05:49 PM
tranthanhan1962 > 11-08-20, 09:03 PM
(11-08-20, 03:32 PM)kamikaze1310 Đã viết: Cái file yên ổn của em thì team đó được cài máy cùng 1 lúc nên có thể cùng phiên bản với nhau. Mọi người đều nhập liệu trên 1 Form, dữ liệu e xài tới nay là 4 tháng với hơn 12.000 record nhưng 1 tháng bị lỗi như file kia chỉ 1 2 lần hoặc có khi k có luôn đó bác.Bởi vậy, mình mới thấy lạ. Mọi người đều nhập liệu trên 1 Form, Điều này sẽ không xảy ra lỗi khi tất cả mọi người đều nhập record mới, table đó cũng không có field nào có indexed : Yes (No Duplicates) hoặc autonumber. Nhưng chỉ cần 2 người sửa chữa cùng 1 record sẽ bị xung đột dữ liệu ngay lập tức. Lúc đó, sẽ tạo lỗi. Chương trình sẽ bị dừng, Nặng hơn là máy treo, đứng máy. Bạn có thể kiểm tra bằng cách cho 2 máy cùng mở 1 lượt và mở cùng một form và sửa cùng một record là thấy thông báo xung đột dữ liệu ngay. Nếu không xử lý thỏa đáng. Thì sau khi mở ra lần sau sẽ có câu thông báo :The last time you opened "File.accdb", it caused a serious error. Do you still want to open it? (Lần cuối cùng bạn mở "File.accdb", nó đã gây ra lỗi nghiêm trọng. Bạn vẫn muốn mở nó?) Đó là lỗi xung đột dữ liệu chưa được xử lý.
kamikaze1310 > 12-08-20, 12:05 PM
(11-08-20, 09:03 PM)tranthanhan1962 Đã viết:Vậy e hiểu rồi, file kia chỉ là nhập record mới chứ k chỉnh sửa chung 1 hồ sơ nên dẫn đến ít phát sinh lỗi. Còn file này thì 1 hồ sơ 1 số ID có thể người này hoặc người kia chỉnh sửa nên dẫn đến tình trạng vậy. Hiện giờ có cách nào khắc phục k bác(11-08-20, 03:32 PM)kamikaze1310 Đã viết: Cái file yên ổn của em thì team đó được cài máy cùng 1 lúc nên có thể cùng phiên bản với nhau. Mọi người đều nhập liệu trên 1 Form, dữ liệu e xài tới nay là 4 tháng với hơn 12.000 record nhưng 1 tháng bị lỗi như file kia chỉ 1 2 lần hoặc có khi k có luôn đó bác.Bởi vậy, mình mới thấy lạ. Mọi người đều nhập liệu trên 1 Form, Điều này sẽ không xảy ra lỗi khi tất cả mọi người đều nhập record mới, table đó cũng không có field nào có indexed : Yes (No Duplicates) hoặc autonumber. Nhưng chỉ cần 2 người sửa chữa cùng 1 record sẽ bị xung đột dữ liệu ngay lập tức. Lúc đó, sẽ tạo lỗi. Chương trình sẽ bị dừng, Nặng hơn là máy treo, đứng máy. Bạn có thể kiểm tra bằng cách cho 2 máy cùng mở 1 lượt và mở cùng một form và sửa cùng một record là thấy thông báo xung đột dữ liệu ngay. Nếu không xử lý thỏa đáng. Thì sau khi mở ra lần sau sẽ có câu thông báo :The last time you opened "File.accdb", it caused a serious error. Do you still want to open it? (Lần cuối cùng bạn mở "File.accdb", nó đã gây ra lỗi nghiêm trọng. Bạn vẫn muốn mở nó?) Đó là lỗi xung đột dữ liệu chưa được xử lý.
Microsoft access has detected that this database is in an inconsistent state, and will attempt to recover the database. During the process, a backup copy of database will be made and all recovered objects will be placed in a new database. Access will then open the new database. The names of objects that were not successfully recovered will be logged in the "Recovery errors" table. (Quyền truy cập của Microsoft đã phát hiện rằng cơ sở dữ liệu này ở trạng thái không nhất quán và sẽ cố gắng khôi phục cơ sở dữ liệu. Trong quá trình này, một bản sao lưu của cơ sở dữ liệu sẽ được thực hiện và tất cả các đối tượng được phục hồi sẽ được đặt trong một cơ sở dữ liệu mới. Access sau đó sẽ mở cơ sở dữ liệu mới. Tên của các đối tượng không được khôi phục thành công sẽ được ghi vào bảng "Lỗi khôi phục".) Khi bạn xử lý tập tin backup sẽ xuất hiện 1 table tên Recovery errors chứa giá trị những record bị xung đôt
tranthanhan1962 > 12-08-20, 12:32 PM
kamikaze1310 > 12-08-20, 12:41 PM
(12-08-20, 12:32 PM)tranthanhan1962 Đã viết: 1/Bạn nên xử lý Front End cho từng máy có nguồn chung Back End để xử lý dữ liệu
2/Form Nhâp liệu (Chỉ nhâp mới, không chỉnh sửa) và form cho phép sửa dữ liệu riêng
3/Trên form cho phép sửa dữ liệu thiết đặt propreties Data: All Records. Để dành ưu tiên cho người đầu tiên mở form toàn quyền xử lý. Nhưng người mở form sau đó bị khóa không cho phép sửa (chỉ được xem) thì sẽ không bị xung đột dữ liệu.
DooHoaangPhuuc > 12-08-20, 12:53 PM
tranthanhan1962 > 12-08-20, 02:18 PM
(12-08-20, 12:41 PM)kamikaze1310 Đã viết: Bác cho e hỏi từng bước nha:Đúng rồi Sau khi chiếm quyền sử dụng thì người khác sẽ không còn quyền trừ khi đóng form lại. Còn có một thiêt đặt khác là Edited Record. Nếu Single form thì nó chỉ khóa record hiên hành của form chiếm quyền và không khóa các record khác. Nhưng nếu là Continuous Forms hay Datasheet thì tất cả các record đang hiển thị đều bị khóa
1. E để file ở ổ chung, sau đó copy về từng máy con, xoá table đi và link table đến file chung là xong.
2. Vậy e sẽ có 1 form nhập và 1 form sửa cùng chung 1 source là 1 table nào đó
3. Ngoài cách này ra còn cách nào k bác, vì có khi người trước sửa xong nhưng k thoát file ra thì những người sau cũng sẽ k làm được j
kamikaze1310 > 12-08-20, 02:59 PM
(12-08-20, 02:18 PM)tranthanhan1962 Đã viết:(12-08-20, 12:41 PM)kamikaze1310 Đã viết: Bác cho e hỏi từng bước nha:Đúng rồi Sau khi chiếm quyền sử dụng thì người khác sẽ không còn quyền trừ khi đóng form lại. Còn có một thiêt đặt khác là Edited Record. Nếu Single form thì nó chỉ khóa record hiên hành của form chiếm quyền và không khóa các record khác. Nhưng nếu là Continuous Forms hay Datasheet thì tất cả các record đang hiển thị đều bị khóa
1. E để file ở ổ chung, sau đó copy về từng máy con, xoá table đi và link table đến file chung là xong.
2. Vậy e sẽ có 1 form nhập và 1 form sửa cùng chung 1 source là 1 table nào đó
3. Ngoài cách này ra còn cách nào k bác, vì có khi người trước sửa xong nhưng k thoát file ra thì những người sau cũng sẽ k làm được j
Cũng có thể sử dụng lệnh VBA xư lý như sau:
Private Sub Form_Open(Cancel As Integer)
Me.RecordLocks = 1
End Sub
Private Sub Form_Close()
Me.RecordLocks = 0
End Sub
No Locks=0, All Records=1, Edited Record=2
tranthanhan1962 > 14-08-20, 08:00 AM
kamikaze1310 Đã viết:bác cho e hỏi trường hợp e thiết kế 1 query gồm 2 table, và e tạo 1 form từ 1 query đó để khi bấm vào form sẽ hiện số ID để mọi người tìm lại hồ sơ, nếu nhập mới thì enter vô bình thường. Trường hợp này có ảnh hưởng hay gây lỗi gì k bác. Sáng nay e mới tạo back end cho 1 máy nhập chính thôi, các máy con ít sử dụng nên e chưa tạo, để cho các máy con khi muốn tìm sửa hồ sơ thì vô trực tiếp file ổ chung. E mới tách ra 2 Form là Form nhập cho người nhập chính, còn file trên ổ chung e chỉ để Form tìm hồ sơ, thật ra 2 form như nhau, cùng 1 source là query lúc đầu.