NGUYENTHANHPHUONG > 06-02-17, 10:07 AM
yamakashi2003 > 13-02-20, 03:40 AM
(26-08-10, 08:25 PM)Noname Đã viết: Gần đâydo nhu cầu bảo mật chống sửa form/ Report , chống luc lọi trong các đoan code cũng như cải thiện tốc độ chương trình do VBA đã được biên dịch. Một số bạn đã chuyển ứng dụng Access của mình thành file *. mde nhưng vướng lỗi. Sau đây, mình xin thống kê và cách xử lý.Bác ơi cho em hỏi làm sao để biết được file access đang ở phiên bản nào ạ
Cách chuyển:
Vào menu Tool -->Database Utility--> make MDE file...
Lỗi 1: Lỗi thường gặp phải là do bạn đang dùng phiên bản Access cũ hơn. Bạn phải dùng phiên bản Access đó để chuyển hoặc convert file MDB sang phiên bản Access hiện hành.
Cách Convert. Vào Tool--> Database Utilities -> Convert Database --> To Access 2002 2003 Database ( hoặc mới hơn)
Sau khi thành công, nó sẽ tạo cho bạn 1 file MDB mới có phiên bản. Bạn vào file này để tiến hành make sang file *.MDE
Lỗi 2: Hệ Thống báo như sau
"This error is usually associated with compiling a large database into an MDE file. Due to the method used to compile the database, a considerable number of TableID references are created for each table. The Microsoft Jet database engine version 4.0 can only create a maximum of 2048 open TableIDs at one time. Exporting a database as an MDE potentially can exceed this limit if the database has a large number of objects (table, macro, form, report, etc).
There is no accurate method to estimate the number of TableIDs the Jet database engine uses during the process of compiling a database as an MDE. However, each VBA module and each form uses one TableID, as a result, if the database has 500 forms, and each form's HasModule property is set to Yes, as many as 1,000 TableIDs are used."
Thường lỗi này do có 1 số đoạn code bạn dùng wizard tạo ra. ( ví dụ event Click của các nút nhấn). Sau đó bạn đổi tên đối tượng nên các code này trở nên "vô thừa nhận" và thông báo lỗi trên.
Giải pháp tốt là bạn nhấn Alt + F11, nhảy ra khung soạn VBA. Trong khung soạn, bạn vào Debug--> Compiler. Nó sẽ nhảy đến đoạn code bị thừa đó và bạn xóa đi.
Nếu vẫn không được. Bạn tạo file MDB trống và tiến hành import tất cả qua. Thực hiện lại!
tranthanhan1962 > 13-02-20, 10:40 AM
yamakashi2003 > 13-02-20, 09:56 PM
(13-02-20, 10:40 AM)tranthanhan1962 Đã viết: Từ ver 2010 trở về trước vào help, từ 2013 trở về sau vào account. Đại loại mở help hoặc account sẽ báo phiên bản office.Bác ơi ý em là giả sử cái file access của em làm ở máy khác dùng office 2007 thì làm sao em biết được file đó được tạo ra từ office 2007 ý ạ, còn cách xem phiên bản office của máy em đang dùng thì em biết ạ
tranthanhan1962 > 13-02-20, 11:14 PM
yamakashi2003 > 14-02-20, 12:13 PM
(13-02-20, 11:14 PM)tranthanhan1962 Đã viết: Bạn có thể dễ dàng tìm phiên bản office (cũng là phiên bản của access) đang chạy trên máy tính, nhưng rất tiếc là không thể tìm phiên bản của tập tin mdb cũng như accdb đã được thiết kế trên phiên bản access nào vì microsoft không hỗ trợ điều này.Em cảm ơn bác ạ, bác cho em hỏi nếu file mdb/ accdb được thiết kế trên access cũ thì khi chuyển file thành mde/accde có thể dùng access phiên bản mới hơn được không ạ, hay nhất thiết phải dùng phiên bản access cùng vs phiên bản cũ mà thiết kế ra file mdb/accdb
Tuy nhiên mdb được chia sẽ để chạy trên access 97 - access 2000 - access 2003, accdb được chia sẽ trên access 2007, access 2010, access 2013, accesss 2016, access 2019.
* Đối với một tập tin back-end (chỉ có table), hoặc một thiết kế CSDL không có code VBA bạn có thể sử dụng mdb cho tất cả version, accdb chỉ sử dụng cho access 2007 trở lên (trừ một vài trường hợp bị lỗi do không có sự hỗ trợ một số control ActiveX).
* Trường hợp tập tin mdb hoặc accdb thiết kế có code VBA.
- Tâp tin mdb thiết kế trên access 97 chạy trên access 2000 hoặc 2003, nó sẽ đòi convert lên access 2000 hoặc 2003, Sao khi convert xong nó sẽ chạy bình thường, nếu có lỗi VBA chỗ nào thì nó báo ngay chỗ đó để sửa chữa.
- Tập tin mdb khi chạy trên access 2007 trở lên nó cũng sẽ đòi convert từng cấp cho đến khi đủ điều kiện để chạy được trên với phiên bản đang sử dụng trên máy tính.
Ví dụ: bạn có một tập tin mdb thiết kế trên access 97 chạy trên máy cài access 2010 bạn phải convert lần lượt lên access 2003 -> access 2007 -> access 2010, các phiên bản 2010-2013-2016-2019 sẽ không đòi convert.
- Ngay cả một tập tin thiết kế chạy cùng một phiên bản access trên 2 máy khác nhau vẫn có thể bị lỗi VBA do cách thiết đặt reference khác nhau.
- Từ access 2010 trở đi mỗi version lại có 2 phiên bản 32 bit và 64 bit. Thậm chí nó sẽ không cho mở CSDL nếu phiên bản khác bit. Trường hợp này chỉ có một cách là tạo CSDL trống rồi import tất cả qua CSDL mới rồi mới xử lý sửa lỗi.
* Thông thường sau khi tạo một CSDL thành mde (accde) phải chạy debug toàn bộ module để access biên dịch code VBA khi đã OK không có lỗi thì mới chuyển được
tranthanhan1962 > 14-02-20, 12:40 PM
(14-02-20, 12:13 PM)yamakashi2003 Đã viết: Em cảm ơn bác ạ, bác cho em hỏi nếu file mdb/ accdb được thiết kế trên access cũ thì khi chuyển file thành mde/accde có thể dùng access phiên bản mới hơn được không ạ, hay nhất thiết phải dùng phiên bản access cùng vs phiên bản cũ mà thiết kế ra file mdb/accdbNgay cả file mde (accde) khi chạy trên máy khác cùng phiên bản vẫn có thể không được nếu như bị lỗi reference. Tất nhiên nó cũng vẫn có thể chạy trên phiên bản cao hơn nếu không bị lỗi gì.