Cách tạo Query dữ liệu

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}}

Mục liên quan: