+ 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
1. Cách để tạo Quey
2. Cấu trúc
3. Các loại Query
3.1 Xử lý file XML
3.2 Xử lý lấy danh sách file
3.3 Xml_row_delete
3.5 Xml_row_update
3.6 Sql
3.7 Goto
3.8 GetValue
3.9 ForData
3.10 Xml_Remove_DataTable
4. Lệnh sử dụng để tham chiếu dữ liệu
5. Áp dụng lệnh iif trong Query
----------------------------------------------
1. Truy cập
/adminxml/xml_getList.aspx?file=SysDataQuery
Tạo nhóm query
2. Cấu trúc
<Query>
<ID>Q1</ID>
</Query>
<Query>
<ID>Q2</ID>
</Query>
<Query>
<ID>Q3</ID>
</Query>
.... n
<Query>
<ID>Tên</ID>
<Type></Type> * Quy định loại query
<Src></Src>
<Para01></Para01>
<Where></Where> : lọc trước khi tính toán
<WhereR></WhereR> : lọc chuẩn bị khi trả về giá trị
<ColumnAdd></ColumnAdd> : tạo cột tính toàn dành XML
<ColumnAddE></ColumnAddE> : tạo cột tính toàn dành cuối lệnh query, áp dụng cho tất cả
<Column></Column> : cột hiển thị, nhiều cột cách nhau dấu ,
<ColumnDel></ColumnDel> :cột cần xóa, nhiều cột cách nhau dấu ,
<ColumnRename></ColumnRename> :thay đổi lại tên cột
0/-/0/-/Số lượng cập nhật thành công
Chỉ số datatable, chỉ số cột, tên cột cần thay đổi
<FieldUpdate></FieldUpdate> : xử lý cho query Upadate
<Sort></Sort>
<Distinct></Distinct>
<Compute_Exp></Compute_Exp>
<Path></Path>
<FieldLoopkup></FieldLoopkup>
<Security>Public</Security>
* Để trống sẽ có bảo mật
* Hay nhập UserName=x / Group=x
</Query>
* Src: nguồn dữ liệu
- Tên file: hoso.xml , có .xml phía sau
- Tên thư mục: hoso
- Tên chỉ mục Query: #Tên hay #0 #1 ...
- Dữ liệu tự tạo: @Tên Cột 1;Tên Cột 2
Gt1;Gt2
Gt1;Gt2
Sẽ tạo ra 1 DataTable gồm 2 cột, và 2 dòng
+ Có thể chèn lệnh để lấy dữ liệu
* Where
- Giống SQL, có thể dùng lệnh <iif-D>Url:Ma</iif-D> trong where để lấy dữ liệu
- Hay dùng <iif-D>Url:Ma<notempty:TenCot={0}/></iif-D> để nếu có giá trị thì mới đưa điều kiện, nếu không có thì lấy hết
3. Các loại Query
* Quy định trong thẻ <Type></Type>
3.1 Xử lý file XML
3.2 Xử lý lấy danh sách file
3.3 Xml_row_delete
3.5 Xml_row_update
<Query>
<ID>Q4</ID>
<Type>Xml_Remove_DataTable</Type>
<Scr>Q1</Scr>
</Query>
Xml_Remove_DataTable
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 ,
** Nếu muốn xóa vị trí table thì gõ #0 , #1
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
---
4 Lệnh sử dụng để tham chiếu dữ liệu
- Tham chiếu đế giá trị của DataTable ..
{dsg:TênQuery</>Dòng_thứ</>Tên_Cột</>Format:dsg}
- Tính toán
{dsc:TênQuery</>Công_thức_tính</>Where</>Format:dsc}
Ví dụ:
{dsc:Q1</>Count(_SYS_KEY)</>Lop=10:dsc}
- Biểu thức
{dse:Biểu_Thức_tính</>Format:dse}
Ví dụ: {dse:100*10</>{n0}:dse} -> kết quả 1.000
Ví dụ: vừa tạo dữ liệu vừa tính toán:
<Query>
<ID>Q2</ID>
<Type>Xml</Type>
<Src>@Name;Icon;Am
Dự định;fas fa-eye;{dsc:Q1</>Count(_SYS_KEY)</>MoTa_P='Dự định':dsc}
Đang làm;far fa-bell;{dsc:Q1</>Count(_SYS_KEY)</>MoTa_P='Đang làm':dsc}
Đã xong;fab fa-angellist;{dsc:Q1</>Count(_SYS_KEY)</>MoTa_P='Đã xong':dsc}
</Src>
</Query>
5 Áp dụng lệnh iif trong query
- Khi vào sẽ lấy toàn bộ text của Query xử lý lần 1
các lệnh <iif-D></iif-D>
- Khi đến từng query con sẽ xử lý thêm lần 2
các lệnh <iif-DQ></iif-DQ>
Ví dụ: url id muốn vào bên trong query con mới lấy thì dùng <iif-DQ>
- Đối với lưu vào CSDL thì muốn đến lúc đưa vào tham số mới xử lý thì
<iif-DGV></iif-DGV>
GV là get value
* Ví dụ:
<Query>
<ID>Q1</ID>
<Src>12</Src>
<Type>Sql</Type>
<Cmd>Update tbTestSQL Set MoTa=@MoTa Where _SYS_KEY='1'; </Cmd>
<SqlParameter>
MoTa<pr&/><iif-DGVL>Form:MoTa</iif-DGVL><pr&/>ntext
</SqlParameter>
<SqlConfig>
Call:ExecuteNonQuery
</SqlConfig>
</Query>
* giúp giảm tải chữ, nếu dùng <iif-D> thì nó sẽ lấy giá trị đưa vào TEXT (gặp giá trị tempHTML thì quá nhiều)
*** Giải thích các tham số:
ColumnAddE: thêm cột tính toán ở cuối lệnh Query, áp dụng cho xml, sql..
Ví dụ thêm cột STT tăng dần:
<ColumnAddE>
STT/-/int/-/$AutoIncre
</ColumnAddE>
Ví dụ thêm cột ThanhTien với công thức SL*DG
<ColumnAddE>
ThanhTien/-/Int/-/SL*DG
</ColumnAddE>
// Nếu là SQL trả về 2 table hãy tác động bằng cách
<ColumnAddE>
ThanhTien/-/Int/-/SL*DG
/-and-/
ThanhTien/-/Int/-/SL*DG
</ColumnAddE>
Tìm là table 0, xanh là table 1
Cách tạo Query