MINI.MIS - Biểu mẫu truy vấn SQL

TỔNG QUAN BÀI VIẾT

Giới thiệu hộp truy vấn

Biểu mẫu có yêu cầu nhập mật khẩu: Sử dụng khi kết nối đến SQL Server trong trường hợp máy chủ sử dụng phương thức xác thực bằng tên đăng nhập và mật khẩu (SQL Server Authentication) và tất cả các trường hợp khác.

Biểu mẫu không yêu cầu nhập mật khẩu: Sử dụng trong tất cả các trường hợp trừ trường hợp kết nối đến SQL Server có sử dụng phương thức xác thực (SQL Server Authentication.

Biểu mẫu này được sử dụng để nhập các tham số phục vụ thực thi lệnh truy vấn SQL, bao gồm:

  • ô B1: địa chỉ nguồn dữ liệu 
  • ô D1: câu lệnh truy vấn SQL 
  • ô B2: các tùy chọn truy vấn
  • ô D2: vị trí trả về kết quả truy vấn 
  • ô B3: mật khẩu truy cập nguồn dữ liệu (chỉ sử dụng khi kết nối SQL Server bằng phương thức xác thực tên đăng nhập và mật khẩu).

Thông báo kết quả truy vấn được ghi tại:

  • ô D3: đối với biểu mẫu 3 dòng
  • ô D2' comment: đối với biểu mẫu 2 dòng.

Cách tạo hộp truy vấn

Tạo mới: Nhấn nút Create New Query Sheet trên thanh menu của chương trình.

Chuyển đổi giữa biểu mẫu 2 dòng và 3 dòng: Nhấn nút Switch Query Form.

Tạo bảng nhập nhanh các trường truy vấn: Nhấn nút Insert SQLBuilderTable.


FILE: nguồn dữ liệu 

Nguồn dữ liệu cần truy vấn

  • Là tham số bắt buộc, nhập tại ô B1.

  • Nếu truy vấn dữ liệu trong chính tệp Excel hiện tại, để trống ô này.

  • MINI.MIS hỗ trợ truy cập các nguồn dữ liệu sau:

    • Excel Local

    • Excel Online

    • Google Sheets

    • Microsoft Access

    • SQL Server

    • Oracle

  • Đối với Excel Online, Google Sheets và Dropbox: nhập share-link tạo bởi ứng dụng đó.

  • Đối với Excel, Access:

    • Nhập đường dẫn đến tệp dữ liệu.

    • Chấp nhận cả:

      • Đường dẫn tuyệt đối, ví dụ: D:\Docs\Data.xlsx

      • Đường dẫn tương đối, ví dụ: \Data.xlsx

  • Đối với SQL Server:

    • Nhập theo định dạng: Server/Database/User

    • Ví dụ: 113.160.225.20/BEEREM/MIS

    • Nếu User là SSPI (không phân biệt chữ hoa, chữ thường), chương trình sẽ sử dụng cơ chế xác thực của Windows (Windows Authentication).

  • Khi truy vấn nhiều nguồn dữ liệu liên tiếp, phân tách các nguồn bằng dấu ;. Ví dụ:

    \Data\File1.xlsx;\Data\File2.xlsx;\Data\File3.xlsx
    
    IPName1/FastHN/Admin;IPName2/FastDN/sa;IPName3/FastSG/user
    
  • Khi truy vấn nhiều khối dữ liệu, các phần gồm SourceOption được phân tách bằng dấu |.

  • Để kết nối tới các nguồn dữ liệu chưa được MINI.MIS hỗ trợ trực tiếp:

    • Nhập đầy đủ chuỗi kết nối (Connection String) vào tham số Source. Cú pháp có thể tham khảo tại www.connectionstrings.com.

    • Đồng thời, tham số Option phải chứa từ khóa connection hoặc string.


SQL: Mệnh đề truy vấn

  • Là tham số bắt buộc, nhập tại ô D1.
  • Nhập câu lệnh SQL dùng để truy vấn dữ liệu.
  • Khi thực hiện nhiều câu lệnh SQL liên tiếp, phân tách các câu lệnh bằng dấu ;.

    Ví dụ:

    SELECT * FROM [AC_Exp$];
    SELECT * FROM [HR_Exp$];
    SELECT * FROM [IT_Exp$];
    SELECT 201901 AS M, Jan AS V FROM Budget;
    SELECT 201902 AS M, Feb AS V FROM Budget;
    ...
    SELECT 201912 AS M, Dec AS V FROM Budget;
  • Khi thực hiện truy vấn theo nhiều khối dữ liệu, các mệnh đề SQL của từng khối được phân tách bằng dấu |.

Option: Tùy chọn

  • Là tham số tùy chọn, nhập tại ô B2.

  • Có thể khai báo nhiều tùy chọn trong cùng một ô, các từ khóa được phân tách bằng khoảng trắng hoặc theo đúng cú pháp yêu cầu.

Từ khóa Chức năng
Refresh hoặc Query Tự động cập nhật toàn bộ các truy vấn trong workbook khi thực hiện Query Workbook.
Source Thêm thông tin nguồn dữ liệu (file, bảng...) vào kết quả trả về.
Name='name_range' Gán tên (Name) cho vùng kết quả. name_range phải đặt trong nháy đơn và tuân thủ quy tắc đặt tên vùng của Excel.
Header Bao gồm dòng tiêu đề trong kết quả trả về. Không áp dụng khi kết quả ở dạng Data Table.
Filter Tự động bật Auto Filter cho vùng kết quả. Không áp dụng khi kết quả ở dạng Data Table.
parallel Khi số nguồn dữ liệu bằng số câu lệnh SQL, mỗi nguồn dữ liệu chỉ thực hiện câu lệnh SQL tương ứng theo thứ tự.
complex Khi số nguồn dữ liệu bằng số câu lệnh SQL, mỗi nguồn dữ liệu sẽ thực hiện toàn bộ các câu lệnh SQL.
Lock Khóa truy vấn, không cho phép cập nhật lại dữ liệu.
Gap=n Chèn n dòng trống giữa các kết quả truy vấn. Không áp dụng với Data Table.
calc Tự động tính toán (Calculate) sau khi hoàn thành truy vấn của từng worksheet.
keep Ghi nối dữ liệu mới vào cuối vùng kết quả, không xóa dữ liệu cũ.
Driver='connection_string' Sử dụng chuỗi kết nối (Connection String) tùy chỉnh.
screen Tắt cập nhật màn hình (ScreenUpdating = False) trong quá trình truy vấn để tăng tốc độ xử lý.
debug Hỗ trợ xử lý lỗi No value given.
Macro='macro_name' Thực thi macro sau khi truy vấn hoàn tất. macro_name phải đặt trong nháy đơn.
Query='sheet_name' Thực hiện tiếp một Query Form khác sau khi truy vấn. sheet_name là tên worksheet chứa Query Form và phải đặt trong nháy đơn.
Pivot Tự động cập nhật toàn bộ PivotTable trong workbook sau khi truy vấn.
MsgBefore='Tiêu đề;Nội dung' Hiển thị hộp thoại xác nhận trước khi truy vấn. Người dùng chọn Yes để tiếp tục hoặc No để hủy. Nếu chỉ khai báo một chuỗi thì được hiểu là nội dung thông báo.
MsgAfter='Tiêu đề;Nội dung' Hiển thị thông báo sau khi truy vấn hoàn tất. Nếu chỉ khai báo một chuỗi thì được hiểu là nội dung thông báo.
FitCol='A:E' Tự động điều chỉnh độ rộng các cột sau khi truy vấn. Có thể khai báo nhiều vùng cột, ví dụ: A:E;H:L.
timeout Bỏ giới hạn thời gian thực thi khi kết nối SQL Server.
scroll Tự động cuộn worksheet về đầu trang sau khi truy vấn thành công.
save Tự động lưu workbook sau khi hoàn tất truy vấn.
shadow Khi truy vấn dữ liệu từ chính workbook hiện hành có số dòng vượt quá 65.536, chương trình sẽ tạo một bản sao (shadow file) để thực hiện truy vấn thay vì truy vấn trực tiếp trên file đang mở.

**Lưu ý về chế độ parallel và **complex

Khi số lượng nguồn dữ liệu bằng số lượng câu lệnh SQL (ví dụ: 12 nguồn dữ liệu và 12 câu lệnh SQL), MINI.MIS có hai phương thức thực hiện:

  • complex: Mỗi nguồn dữ liệu thực hiện toàn bộ các câu lệnh SQL. Tổng số lần truy vấn bằng số nguồn dữ liệu × số câu lệnh SQL.

  • parallel: Nguồn dữ liệu thứ n chỉ thực hiện câu lệnh SQL thứ n. Tổng số lần truy vấn bằng số nguồn dữ liệu.

Nếu không khai báo parallel hoặc complex, MINI.MIS sẽ ưu tiên lựa chọn phương thức complex do thường xảy ra hơn.


To: Vị trí kết quả truy vấn

  • Là tham số bắt buộc, nhập tại ô D2.

  • Xác định vùng trên bảng tính để ghi kết quả truy vấn.

  • Có thể:

    • Nhập trực tiếp địa chỉ vùng dữ liệu.

    • Sử dụng hàm m_qRange(Vùng_kết_quả) để tham chiếu vùng kết quả.

  • Khi thực hiện truy vấn thành công, MINI.MIS sẽ tự động xóa toàn bộ dữ liệu hiện có trong vùng kết quả và ghi dữ liệu mới.

  • Nếu truy vấn không thành công (ví dụ do sai nguồn dữ liệu hoặc câu lệnh SQL không hợp lệ), dữ liệu hiện có trong vùng kết quả sẽ được giữ nguyên.


Pwd: Mật khẩu

  • Là tham số tùy chọn, nhập tại ô B3.

  • Dùng để khai báo mật khẩu đăng nhập đối với nguồn dữ liệu SQL Server hoặc Oracle.

  • Có thể khai báo mật khẩu theo một trong các cách sau:

    • Nhập trực tiếp mật khẩu gốc.

    • Nhập mật khẩu đã được MINI.MIS mã hóa. Mật khẩu này chỉ có MINI.MIS giải mã và sử dụng được.

    • Lưu mật khẩu trong Windows Registry và tham chiếu bằng hàm m_qRegedit(). Mật khẩu chỉ có hiệu lực trên máy tính đã lưu.

  • Khi truy vấn đồng thời nhiều nguồn dữ liệu SQL Server hoặc Oracle, số lượng mật khẩu phải tương ứng với số lượng nguồn dữ liệu. Các mật khẩu được phân tách bằng dấu ;;.

  • Đối với nguồn dữ liệu Excel, tham số này còn hỗ trợ xóa các bản ghi trước khi cập nhật dữ liệu bằng cú pháp:

    Delete='Field_name;String_value1;String_value2;...;String_valueN'
    

    Trong đó:

    • Field_name là tên cột dùng để xác định dữ liệu cần xóa.

    • String_value1...String_valueN là các giá trị cần tìm để xóa.

    • Toàn bộ nội dung phải đặt trong cặp nháy đơn.

    Khi kết hợp với tùy chọn keep trong tham số Option, chức năng này giúp thay thế các bản ghi cũ bằng dữ liệu mới mà không cần cập nhật lại toàn bộ tập dữ liệu.


Log: Ghi kết quả truy vấn

Sau mỗi lần thực hiện truy vấn, MINI.MIS ghi lại các thông tin sau:

  • Số lượng truy vấn đã thực hiện.

  • Số cột, số dòng của kết quả trả về.

  • Thời gian cập nhật dữ liệu lúc nào và trong bao lâu.

×