Ứng dụng viết trên MS Access tách ra thành 2 file Front end và Backend, file Front end sẽ copy cho nhiều người dùng để sử dụng, nhập liệu...Khi có hiệu chỉnh file Front end thì người quản trị ứng dụng sẽ phải copy lại từng file cho từng người dùng hoặc thông báo cho họ biết tự lấy copy về ghi đè file FE cũ. Code trong thủ thuật này giúp cho mỗi người dùng tự cập nhật ứng dụng Front end của họ khi kiểm tra có phiên bản mới và tự cập nhật chính nó (FE).
Sơ đồ lại vụ tách ứng dụng Access (Split database) thành file BE và FE: dành cho những bạn chưa hình dung được tính năng nổi bật này của Ms Access.
Như trong hình thì file FE Access có thể kết nối với file dữ liệu BE Access qua mạng nội bộ (LAN) hoặc nếu muốn qua internet thì dữ liệu BE phải là SQL Server. File BE Access có thể kết nối được qua internet nếu dùng cái thủ thuật khai thác tính năng đồng bộ file của Google drive (hoặc One drive). Thủ thuật này anh tranthanhan1962 cũng đã có nhiều bài viết về nó.
Nói về việc cập nhật file FE: - Nếu chỉ dùng trong mạng LAN thì việc cập nhật file cũng khá đơn giản. File FE mới sẽ lưu ở máy chủ trong hệ thống và chia sẻ full, sau đó dùng File System Object để copy file FE mới về máy con, tiến hành ghi đè là xong. - Nếu file FE có kết nối tới BE qua internet (SQL Server, dùng thủ thuật Google drive) thì không thể dùng cách trên để lấy file FE mà phải download file thông qua Webserver hoặc các ứng dụng đám mây (Cloud) đang phổ biến hiện nay. Riêng đối với thủ thuật chia sẻ BE qua internet bằng công cụ Backup & Syn Google drive, RaidDrive ... thì cũng phải tốn thêm việc phải cài đặt các ứng dụng hỗ trợ này cho từng máy con, tính linh hoạt cũng không còn. Từ nhưng yếu tố trên nên tôi chọn cách cập nhật FE qua internet thông qua cloud drive để áp dụng chung cho cả 2 trường hợp file FE được phân phối trong LAN hoặc qua Internet. Ngoài việc chọn cách thức tải file cập nhật, một vấn đề quan trọng cần giải quyết là file FE cập nhật từ trên internet này sau khi tải về phải tự động tìm và kết nối lại toàn bộ các Linked Table mà file FE hiện tại đang kết nối. Đối với CSDL BE là SQL Server thì không cần làm tác vụ này.
Trong demo code lần này tôi viết cho trường hợp file BE là Access Database trong mạng LAN và file FE kết nối thông qua Linked table. Code này chỉ chỉnh sửa chút ít là áp dụng cho CSDL BE là SQL Server (FE dùng ADODB kết nối hoặc Linked Table với SQL SV thông qua ODBC - DNS less).
- Ứng dụng đã chạy tốt với cả 2 hệ 32 bit và 64 bit (Windows và Office). - Code có bao gồm luôn thủ thuật: + "Tăng tốc kết nối với Linked table" trong bài viết của tôi lúc trước. Xem tại đây. + "Tự động kết nối lại với BE Database cho Linked Table. Xem tại đây.
*** Hướng dẫn sử dụng:
- File FE cập nhật lưu lên ổ đĩa đám mây và copy link download cùng số version về lưu vào tblVersion trong file BE. Các máy con sẽ kiểm tra thông tin này để biết có file mới hay không. - Sửa tham số phiên bản trong module trước khi upload lên cloud. - Thêm dòng mới trong tblVerson: số phiên bản, đường link file FE mới vừa upload lên cloud drive. - Không xoá các Table: tblVersion, tblBackendDBs, tblLinkTables, tblUpdateHistory - Pass các file BE: 123456
*** Giải thuật xử lý của demo:
- Quản trị ứng dụng sau khi có sửa chữa, cập nhật ứng dụng FE mới sẽ upload lên cloud drive nào đó như Google drive, One drive... và cập số version, đường link download file FE mới vào tblVersion (lưu trên Back end database ở máy chủ). - Ở máy con, khi người dùng bấm nút cập nhật thì code sẽ kiểm tra đối chiếu Version hiện tại của ứng dụng với version trong tblVersion. Thông tin version của FE hiện tại lưu trong module modUpdateFE - mstrVersion. Nếu thấy phiên bản mới hơn thì sẽ tiến hành download file mới về folder "TEMP" của hệ thống. Tiến hành sao lưu thông tin đường dẫn tới file BE đối với FE hiện tại của người dùng vào file FE mới. Sau đó sẽ đóng ứng dụng FE hiện tại, xóa nó, tiến hành copy phiên bản mới vào folder mà FE hiện tại đang lưu, khởi động lại ứng dụng FE. Khi FE mới khởi động sẽ tiến hành kết nối lại với CSDL BE theo đường dẫn đã lưu. Các bạn tham khảo cách thức làm và tuỳ biến theo ý muốn để cải tiến hơn.
--------------------------------------------------------------------------------------------- PS: File chia sẻ full source code. Các bạn nào cảm thấy code có ích, ứng dụng được cho mình thì cứ thoải mái mà dùng. Nếu có lòng thì quyên góp chút ít cho diễn đàn để có thêm kinh phí hoạt động nhé. (Nút "Quyên góp" góc trên bên phải.)
Xin cho tôi hỏi. Tôi có report như sau:
Cột A Côt B ... Tổng theo dòng
20 12 32
30 5 35
10 3 13
Tổng theo cột 60 20 80
Tôi muốn xuất ra excel mà tại cột tổng theo dòng (=sum(A1:B...) và theo cột (sum(A1:A...)) đều có cộng thức trên excel.
Vậy code xuất ra như thế nào, xin cám ơn.
Thông thường Acess chỉ có lệnh tự động liên kết trên 2 form là Cha-con; để thực hiện việc liên kết form con-cháu thì cần phải làm thêm vài bước nửa;
Và đây là các bước của nó.
Bước 1. Tạo 3 table có mối liên quan hệ Cha-Con-Cháu (1-~)
Bước 2. Tạo 3 form, tạm gọi là form Cha; form Con; form Cháu. và làm theo hình.