CÔNG TY CỔ PHẦN BLUESOFTS

Kết nối dữ liệu Foxpro trong Excel 32 bit và 64 bit

Hiện nay vẫn còn các doanh nghiệp dùng những phần mềm chạy với CSDL Foxpro. Khi bạn làm Excel nếu cần liên kết với Foxpro và làm báo cáo động thì xem hướng dẫn của mình về ứng dụng Add-in A-Tools với hàm #BS_SQL trong clip này.
Trường hợp Excel 32-bit
Khi Excel 32-bit bạn cài Add-in A-Tools 32-bit thì các kết nối tới CSDL đều theo 32-bit khi đó bạn chỉ cần tạo DBKEY và kết nối bình thường. Bạn hãy xem chi tiết hướng dẫn trong video này.
Download dữ liệu Foxpro mẫu để thực hành.

Nếu Excel của bạn là 64-bit, muốn kết nối dữ liệu Foxpro thì làm theo hướng dẫn dưới đây.

Kết nối dữ liệu Foxpro trong Excel 64-bit

Bước 1. Tải thư viên hỗ trợ hàm kết nối dữ liệu 32-bit: Download BSDataService32
Bước 2. Cài đặt thư viện, chỉ phải làm lần đầu tiên trên máy tính sử dụng

+ Giải nén file đã tải ở trên, đặt vào một thư mục có đướng dẫn ngắn nhất có thể, ví dụ "C:\"
Tên file "BSDataService32.exe" không được đổi tên, phải nằm chung folder có file "setup.exe".
 
+ Chạy file "Setup.exe" để cài đặt.
 
Sử dụng thư viện BSDataService32 trong Excel VBA
1. Trong VBA, vào menu "Tools"->"References..."
2. Click nút "Browse...", dưới đây màn hình Browser chọn "Type libraries"->"Executable files (*.exe. *.dll)
3. Chọn file "BSDataService32.exe" (Nếu không nhìn thấy các file EXE hãy chú ý bước 3).
4. Import module code vào file Excel
Nhấp chuột phải trên VBAProject của file bạn muốn lập trình.

Trong module "modData32" tôi đã viết 2 hàm để sử dụng:

+ GetData(SQL, ConnectionString, HDR)
Hàm này trả về mảng 2D, là kết quả của truy vấn câu lệnh SQL, cơ sở dữ liệu khai báo trong tham số ConnectionString, tham số HDR nếu là True thì trả về mảng kết quả có dòng tiêu đề cột, ngược lại không có.
 
+ GetTables(ConnectionString)
Hàm trả về mảng chứa danh sách tên các table trong CSDL, CSDL khai báo trong ConnectionString.

Ví dụ thư mục chứa các table của Foxpro nằm tại đường dẫn: "C:\TEMP\2021A". Thì ConnectionString cho Foxpro khai báo là:  "Provider=VFPOLEDB.1;Data Source=C:\TEMP\2021A"

Nếu máy tính chưa cài "Microsoft OLE DB Provider for Visual FoxPro" thì bấm vào link sau để tải về và cài Microsoft OLE DB Provider for Visual FoxPro
 
Bây giờ trên bảng tính Excel tại file bạn đã nạp modData32. Sử dụng công thức kết hợp với hàm BS_SQL để tạo báo cáo động như sau:

=bs_FillArray(getData("SELECT * FROM CT", "Provider=VFPOLEDB.1;Data Source=C:\TEMP\2021A", True), "INSERT=YES")

(*) Cấu trúc hàm BS_FILLARRAY:
=BS_FILLARRAY(array, "Options")  đổ mảng ra bảng tính, tự động co giãn khi mảng thay đổi.
(Tham số Options khai báo với "INSERT=YES" để khi co giãn dòng, cột của mảng hàm sẽ đẩy dữ liệu phía dưới và phía phải không ghi đè.)

Việc sử dụng thư viện BSDataServer32 trong Excel 64-bit tốc độ sẽ là chậm nhất so với các giải pháp thông thường. Đây chỉ là tình thế buộc phải làm mà thôi. Bạn nên cân nhắc chuyển sang cài Office 32-bit tốc độ sẽ nhanh hơn với tình huống này. Hoặc bạn dùng giải pháp kết nối thông qua máy chủ Add-in A-Tools tốc độ sẽ nhanh hơn và hay hơn với giải pháp chia sẻ dữ liệu cho nhiều người dùng chung. 

Phương pháp chia sẻ database 32-bit trong máy chủ cài Office 32-bit. Các máy chạy Office/Excel truy vấn dữ liệu là 32-bit hay 64-bit đều kết nối được.

Phướng pháp này đơn giản là:
+ Từ máy tính lưu dữ liệu nguồn - database 32-bit, cài Office 32-bit, Add-in A-Tools 32-bit
+ Trong Excel, vào menu A-Tools, Tạo DBKEY và kết nối tới database 32-bit. VÍ dụ bạn tạo là "VP"
(Cách tạo giống tình huống Excel 32-bit trên đàu bài viết này).
+ Tạo máy chủ, vào menu A-Tools->Tạo máy chủ
+ Tại các máy tính khác (máy client) bạn nhập công thức

=BS_SQL("SELECT * FROM CT", "DBKEY=VP; SVR=YES; INSERT=YES")

Excel máy khách sẽ kết nối đến máy chủ và nhận dữ liệu với câu lệnh SQL và CSDL trong DBKEY "VP". Hướng dẫn chi tiết về hàm BS_SQL lấy dữ liệu trong máy chủ bạn xem tại đây.



Hỗ trợ online: https://www.facebook.com/groups/hocexcel/
Tác giả: Nguyễn Duy Tuân - https://bluesofts.net