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.
. Tải thư viên hỗ trợ hàm kết nối dữ liệu 32-bit:
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/