1. Chuẩn bị Data làm query
2. Ý nghĩa tham số
3. Các loại query
3.1. Xml lấy dữ liệu file XML
3.2. Sql: kết nối với CSDL SQL Server
3.3. Sql_array
Kết nối dữ liệu dạng bảng với SQL
3.4. Xml_row_copy
3.5. FileInfo
3.6. Xml_row_delete
3.7. Xml_row_update
3.8 Xml_row_paste
3.9 Xml_row_move
3.10 Xml_Remove_DataTable
3.11 Xml_save
3.12 GetValue
3.13 ForData
3.14 GoTo
-------------------------
+ Mục đích: Jquery để lấy dữ liệu, trộn dữ liệu, thông kê, tính toán, cập nhật dữ liệu.
+ Kết quả trả về 1 DataSet gồm nhiều DataTable
* Tham khảo cách tạo Query
1. Chuẩn bị Data làm query
Truy cập: /Adminxml/xml_getdata.aspx?file=SysDataQuery.xml
+ Đặt tên: Tên ký tự dính liền không dấu cách
+ Cấu hình lệnh
<Query>
<ID>Tên</ID>
<Type>xml</Type>
<Cmd>File.xml</Cmd>
<Column></Column>
<ColumnDel></ColumnDel>
<Para01></Para01>
<Where></Where>
<FieldLoopkup></FieldLoopkup>
<Distinct></Distinct>
<Compute_Exp></Compute_Exp>
<Compute_Filter></Compute_Filter>
</Query>
* Có thể nhiều câu Query bằng nhiều lệnh, phải cấu hình lệnh <Name></Name> để biết tham chiếu đúng.
<Query></Query>
<Query></Query>
2. Ý nghĩa tham số
Tham số Cmd:Tên_Tham_Chiếu
- Tên file: file xml hay đường dẫn, sẽ truy cập trực tiếp đến file xml
Ví dụ: nhanvien.xml hay nhanvien/ketoan.xml
- #Tên : truy cập tên query đã khởi tạo ở trang đã được gán query,
-> Nếu có # sẽ truy cập biến DataSet theo tên, ví dụ #NhanVien, tức sẽ truy cập bảng có tên NhanVien đã đưa vào Query trước
- #_SYS_DATA , nếu query loại thực hiện nối tiếp từ xml_form.aspx, muốn truy cập bảng dữ liệu từ xml_form cung cấp
- #_SYS_ROW , nếu query loại thực hiện nối tiếp từ xml_form.aspx, muốn truy cập dòng dữ liệu từ xml_form cung cấp
**** _SYS_DATA và _SYS_ROW là dữ liệu được truyền từ các trang xml_form hay xml_getdata.
3. Các loại query
1. Type:Xml lấy dữ liệu file XML
Ví dụ: Lấy dữ liệu file nhanvien.xml
<Query>
<ID>Q1</ID>
<Type>Xml</Type>
<Cmd>nhanvien.xml</Cmd>
</Query>
Ví dụ: hiển thị danh sách các phòng ban có trong file nhanvien.xml
<Query>
<ID>Q1</ID>
<Type>Xml</Type>
<Distinct>PhongBan</Distinct>
<Cmd>nhanvien.xml</Cmd>
</Query>
<Query>
<ID>Q1</ID>
<Type>Xml</Type>
<Cmd>nhanvien.xml</Cmd>
<Where>Ma='KT'</Where>
</Query>
<Query>
<ID>Q1</ID>
<Type>Xml</Type>
<Cmd>nhanvien.xml</Cmd>
<Where>Ma='<iif-D>Url:MaPB</iif-D>'</Where>
</Query>
Ví dụ: truy xuất tổng số bảng ghi trong file nhanvien.xml
<Query>
<ID>Q1</ID>
<Type>Xml</Type>
<Cmd>nhanvien.xml</Cmd>
<Compute_Exp>Count(MaNhanVien)</Compute_Exp>
</Query>
Ví dụ tạo thống kê nhiều tiêu chí
<Query>
<ID>Q1</ID>
<Type>Xml</Type>
<Cmd>#_SYS_DATA<Cmd>
<Compute_Exp>Count(_SYS_KEY)/->/TongSo1/-and-/Count(_SYS_KEY)/->/TongSo2</Compute_Exp>
<Compute_Filter>HoTen='b'/-and-/HoTen='c'<Compute_Filter>
<Compute_Type>1</Compute_Type>
</Query>
Compute_Type:1 / hay để trống -> kết quả trả về theo từng cột
* Sẽ kết quả trả về là 1 bảng kết quả
---------------------------
TongSo1 TongSo 2
---------------------------
1 3
Compute_Type:2 -> kết quả trả về theo từng dòng
-----------------
TongSo1 2
TongSo2 5
---------------------------
Ví dụ: truy xuất tổng số bảng ghi và tổng tiền lương phải trả trong file nhanvien.xml
Sử dụng thêm Cmd:#TênQuery
Nếu Query đầu tiên đã đưa dữ liệu vào bộ nhớ DataSet rồi , Query chỉ tính toán ta dùng # phía trước
Ví dụ:
<Query>
<ID>Q1</ID>
<Type>Xml</Type>
<Cmd>nhanvien.xml</Cmd>
</Query>
<Query>
<ID>Q2</ID>
<Type>Xml</Type>
<Cmd>#Q1</Cmd>
<Compute_Exp>Count(MaNhanVien)</Compute_Exp>
</Query>
** giải thích: <Cmd>#Q1</Cmd> Query Q2 tham chiếu dữ liệu Q1
<Query>
<ID>Q3</ID>
<Type>Xml</Type>
<Cmd>#Q1</Cmd>
<Compute_Exp>Sum(TienLuong)</Compute_Exp>
</Query>
<Query>
<ID>Q4</ID>
<Type>Xml_Remove_DataTable </Type>
<Scr>Q1</Scr>
</Query>
2. Xóa table đã có trong DataSet (chỉ xóa trên bộ nhớ tạm)
Xml_Remove_DataTable: là query xóa Data đã nạp vào DataSet
--> Scr là nhập tên Query cần xóa, nếu xóa nhiều Query cùng 1 lúc nhập cách nhau dấu ,
Giải thích tiến trình xử lý
Q1-> Đưa dữ liệu vào DataSet (coi như nạp vào bộ nhớ)
Q2-> đến bảng ghi
Q3-> tính tổng lương
Q4-> Xóa Q1 ra khỏi DataSet để trả về kết quả Q2 và Q3 ra màn hình (nếu không xóa sẽ in luôn Q1 là danh sách rất nhiều)
---> Mục đích tăng tốc độ xử lý tối ưu, nếu không dùng dữ liệu được truy cập nhiều lần khi tính toán
2. Type:FileInfo Lấy thông tin file
Cmd: đường dẫn lấy thông tin file
Para01: 0 -> lấy thông tin file và thư mục (không truy cập file trong thư mục)
Para01: 1 -> chỉ lấy file (ko lấy thư mục) tất cả các file nằm bất kỳ thư mục nào.
2. Kiểu query lấy Update
- Xóa
{{Query:
Name:Q1
Type:Xml_row_delete
Cmd:File.xml
Where:TenTruong='x'
:Query}}
Ví dụ:
{{Query:
Name:xxx
Cmd:test_nhan.xml
Type:Xml_row_delete
Where:_SYS_KEY='55269540-fdf7-4a41-987d-8b9740f0f487'
:Query}}
- Cập nhật
{{Query:
Name:Q1
Type:Xml_row_update
Cmd:File.xml
FieldUpdate:TenTruong1=x/-/TenTruong2=x
Where:TenTruong='x'
:Query}}
Gợi ý:
FieldUpdate:TenTruong1={dsg:Tên_Table-Dòng-Cột:dsg} -> dsg viết tắt DataSet Get
FieldUpdate:TenTruong1==7+10 -> Sử dụng công thức tính toán
Ví dụ:
{{Query:
Name:xxx
Cmd:test_nhan.xml
Type:Xml_row_update
FieldUpdate:name=xxxxxxxx/-/message=111111111111
Where:_SYS_KEY='e7744445-0f66-4c66-8f75-f6aae9111dd1'
:Query}}
+ Ví dụ
Đặt tên trong Data Query là TinhLaiSoLuong , và khi form nhanvien.xml đặt lệnh QueryCmd là add:NhanVien
Khi thêm mới nhân viên xong sẽ tự động thực thi Query TinhLaiSoLuong
{{Query:
Name:Q1
Type:Xml
Cmd: #_SYS_DATA
Compute_Exp:Count(_SYS_KEY)
:Query}}
{{Query:
Name:Q2
Type:Xml_row_update
Cmd:BoPhan.xml
FieldUpdate:MoTa={dsg:Q1-0-0:dsg}
Where:BoPhan='xx'
:Query}}
Q1 truy xuất danh sách nhân viên từ xml_form.xml truyền qua bằng lệnh Cmd: #_SYS_DATA, tính toàn tổng bảng ghi
Q2 cập nhập thông số lượng bảng ghi ra file BoPhan.xml
- Copy
Copy các bảng ghi thỏa điều kiện vào Session(bộ nhớ)
{{Query:
Name:Q1
Type:Xml_row_copy
Cmd:File.xml
Where:TenTruong='x'
:Query}}
- Paste
Nạp bảng ghi đã đưa vào Session vào file xml chỉ định
{{Query:
Name:Q2
Type:Xml_row_paste
ClipboardName:Q1
Cmd:File.xml
:Query}}
Giải thích:
ClipboardName:Q1 , Q1 là tên mà Query tạo Copy
- Move
{{Query:
Name:Q2
Type:Xml_row_move
Cmd:File.xml
CmdReceive:FileNhan.xml
:Query}}
Giải thích:
Cmd:File.xml file sẽ vào lấy dữ liệu
CmdReceive:FileNhan.xml file nhận
Nếu chuyển thành công, dữ liệu chuyển sẽ bị mất ở file File.xml
Ví dụ:
{{Query:
Name:q_copy
Cmd:test_nhan.xml
CmdReceive:test_nhan_2.xml
Type:Xml_row_move
Where:_SYS_KEY='a4c3d78d-9ff6-4cbc-a7eb-94d2d38d19cb'
:Query}}
- Save Xml
{{Query:
Name:Q2
Type:Xml_save
Cmd:#TênQuery
Path:/Đường_dẫn/FileNhan.xml
:Query}}
Nếu để trống mặc định đưa vào App_Data/OUT_Query, nếu nhập thêm đường dẫn sẽ lưu theo đường dẫn chỉ định.
- Clear Clipboard
{{Query:
Name:Q1
Type:Xml_clear_clipboard
:Query}}