2008-09-26 33 views
5

Tôi đang làm việc trên cơ sở dữ liệu MS Access. Tôi đã thực hiện một số thay đổi đối với một trong các mô-đun. Tôi muốn đi ăn trưa, nhưng khi tôi thử đóng cơ sở dữ liệu, tôi nhận được thông báo sau:Không có quyền truy cập độc quyền vào cơ sở dữ liệu và do đó không thể lưu thay đổi

"Bạn không có quyền truy cập độc quyền vào cơ sở dữ liệu. Bạn không thể lưu thay đổi thiết kế tại thời điểm này. để đóng mà không lưu các thay đổi của bạn? "

Tôi chắc rằng không ai khác trên mạng có tệp cơ sở dữ liệu mở và tôi không có bất kỳ cơ sở dữ liệu Access nào khác mở. Tôi có thể thiếu một cái gì đó hiển nhiên, nhưng thực sự sẽ đánh giá cao một số trợ giúp!

Cập nhật:

Cuối cùng tôi sao chép tất cả các mã, đóng cửa cơ sở dữ liệu mà không lưu, mở lại nó và dán mã trở lại trong tôi sau đó có thể lưu cơ sở dữ liệu.. Tôi không chắc chắn nếu đây là một trong những off, nhưng tôi sẽ báo cáo lại nếu nó xảy ra một lần nữa.

Trả lời

1

Nếu bạn đóng cơ sở dữ liệu và chắc chắn không có ai khác mở nó, hãy kiểm tra xem có tệp .ldb không (nó sẽ có cùng tên với tệp cơ sở dữ liệu của bạn). Nếu tệp ở đó, thì có khả năng nó vẫn đang được sử dụng. Có phải đó là dịch vụ truy cập, như một trang web không?

Bạn có thể sao chép cơ sở dữ liệu sang một thư mục con khác và thực hiện thay đổi của mình. Nếu điều đó không hiệu quả, tôi sẽ phải xem xét nó. Tất nhiên luôn có công cụ cơ sở dữ liệu, "sửa và nén cơ sở dữ liệu ..."

Tệp có nằm trên máy chủ tệp không? Nếu vậy hãy kiểm tra xem liệu có bất kỳ người dùng nào có một tệp để xử lý nó hay không.

Nếu nó vẫn không hoạt động, hãy cập nhật bài đăng của bạn với thông tin mới của bạn và chúng tôi sẽ tiếp tục.

CẬP NHẬT (9/26): Một điều tôi làm khi gặp sự cố lạ với cơ sở dữ liệu truy cập có chứa mã vba là dịch ngược lại. Tôi không biết nếu điều này là tài liệu được nêu ra, tôi đã không nhìn vào năm, nhưng nó đã được (ít nhất) một chuyển đổi không có giấy tờ để msaccess.

Từ dòng cmd:

đổi thư mục thành nơi msaccess.exe nằm.
Chạy lệnh sau

MSAccess \ đường dẫn để truy cập tập tin \ databasefile.mdb/dịch ngược

thường chạy rất nhanh sau đó mở cơ sở dữ liệu. Mở bất kỳ mô đun và biên dịch nào.
Không phải lúc nào cũng hiệu quả, nhưng đôi khi có thể loại bỏ những điều lạ lùng.

Bạn đã bao giờ cố sao chép cơ sở dữ liệu vào một thư mục khác và thực hiện các chỉnh sửa của mình chưa? Điều đó nên làm việc; sau đó bạn có thể đổi tên bản gốc và sao chép lại tệp.
Dù sao, tôi vui vì bạn đang làm việc trở lại.

+0

Cảm ơn - tệp nằm trên ổ cứng của tôi và không ai khác đang truy cập tệp đó. – inglesp

4

Nếu bạn chắc chắn không có ai khác trong db nhưng bạn, đó là một kết nối bổ sung cho db của bạn từ máy tính của riêng bạn. Bạn có thể xác minh điều này bằng trình xem LDB, có thể tải xuống trong JetUtils miễn phí.tải exe từ Microsoft:

http://support.microsoft.com/kb/176670

Nhìn qua mã của bạn và kiểm tra xem bạn có hai đối tượng cơ sở dữ liệu riêng biệt trong không gian làm việc mặc định hoặc một đối tượng cơ sở dữ liệu trong một không gian làm việc riêng biệt. Điều đó sẽ gây ra vấn đề này. Để sửa lỗi, hãy đảm bảo rằng các đối tượng cơ sở dữ liệu được đặt thành không có gì trước khi chúng nằm ngoài phạm vi và nếu bạn đã mở đối tượng cơ sở dữ liệu trong mã, bạn cũng cần đóng nó trước khi đặt đối tượng cơ sở dữ liệu thành không có gì. Quay lại đầu trang

+0

trông rất hứa hẹn ... tôi sẽ có một cái nhìn khi tôi trở lại văn phòng vào ngày mai. – inglesp

0

Nếu thậm chí kết hợp thư từ được liên kết với cơ sở dữ liệu truy cập, được tính là kết nối truy cập.

+3

Có vẻ như một bình luận, không phải là một câu trả lời ... bạn có thể xây dựng trên đó không? – paisanco

+0

Tôi đã gặp phải sự cố tương tự và đó là một hoạt động hợp nhất thư không có trong từ vẫn mở cùng một lúc. Đó là một điều hiển nhiên và chưa được như vậy. Công cụ cơ sở dữ liệu rõ ràng sẽ đặt một tổ chức trên cơ sở dữ liệu nếu từ đã được tiếp cận vào nó để có được dữ liệu của nó cho việc hợp nhất thư. Cố gắng làm bất cứ điều gì bên trong cơ sở dữ liệu trong khi nó được tham gia và đoán những gì? : chúng ta đã gặp kẻ thù và chính là chúng ta! Bạn sẽ thấy mình là người dùng khác đã đăng nhập và chưa phải vì nó sẽ chỉ được liệt kê một lần nhưng không được liệt kê cho mỗi ứng dụng. –

0

Rất đơn giản. Đóng tất cả các tệp MSaccess của bạn. Mở trình quản lý tác vụ (bằng cách nhấp chuột phải vào thanh tác vụ). Chọn tab Xử lý trong đó. Nếu danh sách có một quá trình msaccess * 32 đóng quá trình đó bằng cách nhấp vào Kết thúc tiến trình.

Điều này phù hợp với tôi. Tôi nghĩ rằng nó đóng tất cả các recordset mà chúng tôi đã không đóng cửa trong các mã hoặc đó là đóng cửa mạnh mẽ.

Các vấn đề liên quan