Cách tạo Query

+ 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
<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ố:




 

Mục liên quan: