Kết nối Excel tới SQL Server và làm báo cáo động bằng Add-in A-Tools

Liên hệ QC

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia
13/6/06
Bài viết
4,650
Được thích
10,138
Giới tính
Nam
Nghề nghiệp
Giáo viên, CEO tại Bluesofts
Không cần qua các bước trung gian là export SQL Server ra Excel rồi mới dùng các hàm Excel làm báo cáo. Add-in A-Tools kết nối trực tiếp từ Excel vào SQL Server và làm báo cáo động rất nhanh và linh hoạt...
Nội dùng bài hướng dẫn:
+ Làm quen SQL Server đơn giản
+ Kết nối Excel tới SQL Server bằng Add-in A-Tools
+ Tạo báo cáo phân cấp đẹp và chuyên nghiệp
(*) Download Add-in A-Tools:
 
Không cần qua các bước trung gian là export SQL Server ra Excel rồi mới dùng các hàm Excel làm báo cáo. Add-in A-Tools kết nối trực tiếp từ Excel vào SQL Server và làm báo cáo động rất nhanh và linh hoạt...
Nội dùng bài hướng dẫn:
+ Làm quen SQL Server đơn giản
+ Kết nối Excel tới SQL Server bằng Add-in A-Tools
+ Tạo báo cáo phân cấp đẹp và chuyên nghiệp
(*) Download Add-in A-Tools:
Giải pháp của anh hay quá.
Chỉ có điều tự download tool về (bản miễn phí) và làm thử thì chưa bao giờ thành công.
 
Giải pháp của anh hay quá.
Chỉ có điều tự download tool về (bản miễn phí) và làm thử thì chưa bao giờ thành công.

Bản miễn phí chức năng này dùng được nhé. Chỉ giới hạn tối đa 200 dòng xuất ra blwir xông thức. Bạn vướng chỗ nào gửi mình chi tiếp cho .
 
Bản miễn phí chức năng này dùng được nhé. Chỉ giới hạn tối đa 200 dòng xuất ra blwir xông thức. Bạn vướng chỗ nào gửi mình chi tiếp cho .
Em vướng rất nhiều chỗ, nhưng vì chưa biết về SQL và lại đang làm quen với bản Free nên cũng ngại hỏi. Nếu được anh chỉ giúp mấy câu hỏi đơn giản sau;
1. Sao trong Clip, em thấy anh nhập xong dữ liệu ở bất cứ ô nào thì công thức tự động tính toán ngay, mà bản em thử làm thì không. Nó chỉ tính toán khi edit ô B1 hoặc B2 hoặc edit ô có hàm BS_SQL. Em cần khi edit ô C4 hoặc C5 là Excel tính toán ngay nhưng thực tế nó không.
2. Trong SQL Database thấy định dạng ngày tháng là yyyy-mm-dd (như ô D5) nên khi có dòng lệnh có tham số FLIDATE = Cell (C5) là hàm không chạy mà phải là FLIDATE = Cell (D5). Vậy sửa này định dạng ngày như thế nào trong hàm BS_SQL ?
3. Em thấy trong Clip, các ô đều co giãn có boder, tuy nhiên em làm thì lúc có, lúc mất Boder của Cell. Không rõ nguyên nhân gì ?
Xin cảm ơn




215329
 
Em vướng rất nhiều chỗ, nhưng vì chưa biết về SQL và lại đang làm quen với bản Free nên cũng ngại hỏi. Nếu được anh chỉ giúp mấy câu hỏi đơn giản sau;
1. Sao trong Clip, em thấy anh nhập xong dữ liệu ở bất cứ ô nào thì công thức tự động tính toán ngay, mà bản em thử làm thì không. Nó chỉ tính toán khi edit ô B1 hoặc B2 hoặc edit ô có hàm BS_SQL. Em cần khi edit ô C4 hoặc C5 là Excel tính toán ngay nhưng thực tế nó không.
2. Trong SQL Database thấy định dạng ngày tháng là yyyy-mm-dd (như ô D5) nên khi có dòng lệnh có tham số FLIDATE = Cell (C5) là hàm không chạy mà phải là FLIDATE = Cell (D5). Vậy sửa này định dạng ngày như thế nào trong hàm BS_SQL ?
3. Em thấy trong Clip, các ô đều co giãn có boder, tuy nhiên em làm thì lúc có, lúc mất Boder của Cell. Không rõ nguyên nhân gì ?
Xin cảm ơn

View attachment 215329

Mình giải thích như sau:
1. Để cập nhật công thức bạn cần làm:
=BS_SQL("Lệnh SQL" & LEFT(oo1 & oo2... ,0) )
(oo1, oo2 là các ô điều kiện)
Trong ví dụ của bạn thì là:
=BS_SQL(B2 & LEFT(C5&C6, 0) , B1)

2. Kiểu định dạng trong SQL Server hay MySQL ngày tháng theo cấu trúc yyyy-mm-dd. Mỗi loại CSDL có một số tính chất khác nhau. Vì đây là CSDL ngoài Excel nên để A-Tools biết nó thuộc loại bạn phải thêm thuộc tính ;DBTYPE=5 vào tham số Options. Trong ví dụ của bạn, ô B1 phaith êm chuỗi
;DBTYPE=5
(5 là hằng số chỉ ra kiểu CSDL là SQL Server)

Các hằng số A-Tools duy định, chúng tôi có ghi trong "WhatisNew.txt" như sau:
v9.1.0.2: 30-03-2019 (Add-in A-Tools 2019)
+ Thêm: thêm thuộc tính DBTYPE=Mã số - kiểu CSDL trong tham số OPTIONS của các hàm CSDL như BS_SQL, BS_TABLE, BS_DSUM,...
tham số này để chỉ định loại CSDL trong ConnectionString thuộc loại nào. Có các loại như sau:
0 - dbUnknown
1 - dbExcel
2 - dbAccess
3 - dbFoxpro
4 - dbVFP
5 - dbSQLserver
6 - dbParadox
7 - dbMySQL
8 - dbInterbase
9 - dbODBC
10 - dbGoogleSheets
11 - dbOracle

3. Vấn đề co giãn giữu được định dạng bạn hãy xem bài học số 1 về hàm BS_SQL tại đây
 
Mình giải thích như sau:
1. Để cập nhật công thức bạn cần làm:
=BS_SQL("Lệnh SQL" & LEFT(oo1 & oo2... ,0) )
(oo1, oo2 là các ô điều kiện)
Trong ví dụ của bạn thì là:
=BS_SQL(B2 & LEFT(C5&C6, 0) , B1)

2. Kiểu định dạng trong SQL Server hay MySQL ngày tháng theo cấu trúc yyyy-mm-dd. Mỗi loại CSDL có một số tính chất khác nhau. Vì đây là CSDL ngoài Excel nên để A-Tools biết nó thuộc loại bạn phải thêm thuộc tính ;DBTYPE=5 vào tham số Options. Trong ví dụ của bạn, ô B1 phaith êm chuỗi
;DBTYPE=5
(5 là hằng số chỉ ra kiểu CSDL là SQL Server)

Các hằng số A-Tools duy định, chúng tôi có ghi trong "WhatisNew.txt" như sau:
v9.1.0.2: 30-03-2019 (Add-in A-Tools 2019)
+ Thêm: thêm thuộc tính DBTYPE=Mã số - kiểu CSDL trong tham số OPTIONS của các hàm CSDL như BS_SQL, BS_TABLE, BS_DSUM,...
tham số này để chỉ định loại CSDL trong ConnectionString thuộc loại nào. Có các loại như sau:
0 - dbUnknown
1 - dbExcel
2 - dbAccess
3 - dbFoxpro
4 - dbVFP
5 - dbSQLserver
6 - dbParadox
7 - dbMySQL
8 - dbInterbase
9 - dbODBC
10 - dbGoogleSheets
11 - dbOracle

3. Vấn đề co giãn giữu được định dạng bạn hãy xem bài học số 1 về hàm BS_SQL tại đây

Ý thứ 2. Tức là nếu csdl nguồn là sql server thì như sau
=bs_sql(“select...”, “odbc(connectionstring); dbtype=5”)
 
Ý thứ 2. Tức là nếu csdl nguồn là sql server thì như sau
=bs_sql(“select...”, “odbc(connectionstring); dbtype=5”)
Cảm ơn anh, loay hoay mãi em mới làm được (phải đóng và mở lại file mới được).
Anh cho hỏi thêm:
1. A-Tools ngoài lệnh Select ra thì có lệnh khác của SQL không (Ví dụ: Update, Delete...)
2. Trong 1 số trường hợp, do cấu trúc của biểu mẫu nên 1 số ô phải Merge. A-tool có giải pháp nào trả được kết quả trên các ô bị merge không ?
 
Cảm ơn anh, loay hoay mãi em mới làm được (phải đóng và mở lại file mới được).
Anh cho hỏi thêm:
1. A-Tools ngoài lệnh Select ra thì có lệnh khác của SQL không (Ví dụ: Update, Delete...)
2. Trong 1 số trường hợp, do cấu trúc của biểu mẫu nên 1 số ô phải Merge. A-tool có giải pháp nào trả được kết quả trên các ô bị merge không ?

1. Về kỹ thuật Add-in A-Tools cho phép thực hiện tất cả các lệnh SQL gồn INSERT, UPDATE, DELETE nhưng vì an toàn dữ liệu khách hàng khi triển khai nên atools khoá các kệnh này, chỉ lấy dữ liệu về bởi SELECT.
2. Trong dữ liệu nguồn mà có ô bị MergeCell thì bạn buộc phải huỷ bỏ và điền dữ liệu đủ mới dùng SQL được nhé.
Dùng hàm BS_SQL kết hợp với hàm DATA bạn có thể tạo bảng trung gian để tự điền vào ô trống các giá trị bị merge, sau đó bạn copy ngược về data nguồn để chuẩn hoá nó. Muốn làm pp này bạn phải chú ý các clip trên Youtube của mình về hàn DATA để biết cách vận dụng.
 
Web KT
Back
Top Bottom