ServerLoading
Phạm vi áp dụng
✅ Bravo 8 · ❌ Bravo 10 — thẻ chỉ có ở Bravo 8
Ý nghĩa
Khai báo các cột bổ sung vào câu lệnh query lấy dữ liệu từ server về client.
Được hiểu như một chuỗi FieldList sau mệnh đề SELECT trong câu lệnh SQL.
Thường dùng để:
- Thêm trường được tính toán bằng hàm
- Thêm cột hằng:
<Ten_Truong>CAST(0 AS INT)</Ten_Truong>
Cú pháp phải hợp lệ với SQL
Cú pháp
<root>
<Tables>
<Ten_bang>
<ServerLoading>
<Ten_Truong>Bieu_Thuc</Ten_Truong>
</ServerLoading>
</Ten_bang>
</Tables>
</root>Ví dụ
Lấy UserName trước khi tải dữ liệu (để ẩn/hiện trạng thái chứng từ theo user) — khai báo ở ParentTable:
<ServerLoading>
<UserName>'{=USER()}'</UserName>
</ServerLoading>Thêm cột tính tồn kho sau mỗi dòng — khai báo trong <ChildTable_Sales>:
<ServerLoading>
<QuantityAfterTrans>IIF(AllowIssueWhenNotEnough=0 OR
{=Config('M_ShowCurrentINV')}=1,
dbo.ufn_B30CurrentInventory_GetValue(BranchCode,'{=FiscalYear()}',
WarehouseCode,ItemCode,'{=FiscalYear('DataCode')}',Null,Null,
DocGroup,DocCode,Null),0)</QuantityAfterTrans>
</ServerLoading>Ghi chú
Vì sao nên dùng
ServerLoadingthay vì sửa view?Khi tạo view mà cần một cột phải tính toán từ hàm hoặc thủ tục sẽ rất chậm. Khai báo ở
ServerLoadingthì:
- Chỉ thực thi ở 1 chức năng (trong khi view có thể được gọi ở nhiều chức năng)
- Giảm tải cho server, chia sẻ phần xử lý cho các client
So sánh với TempColumns: TempColumns chỉ định nghĩa thêm cột; ServerLoading còn bao hàm cả việc xử lý dữ liệu của cột đó ngay trong câu query.
Cân nhắc
Có cơ chế tạo cột tạm trên Client không có nghĩa là tất cả các cột không có trong cấu trúc bảng đều nên xử lý ở layout. Cần cân nhắc theo từng bài toán cụ thể.
Ví dụ: Explorer chứng từ có cột tên đối tượng — bản chuẩn khai báo view
vB30AccDoc_ExplorerJOINB20Customerđể lấyCustomerName, hiệu quả hơn xử lý trên layout.
Ràng buộc bảo mật từ v4.7.0.1
Chương trình chặn các khai báo
SELECT,DELETE,UPDATE,INSERT,TRUNCATE,FROM,INNER JOIN,GROUP BY… trongServerLoading→ xem Cơ chế lưu trữ B00Layout
Tương đương ở Bravo 10
Bravo 10 không có thẻ ServerLoading. Chức năng này được thay bằng khả năng khai báo câu truy vấn trực tiếp:
| Nhu cầu ở B8 | Cách làm ở B10 |
|---|---|
| Thêm cột tính toán | <Columns> với biểu thức |
| JOIN lấy thêm dữ liệu | <JoinCollection> |
| Lọc | <FilterKey> / <FilterCollection> |
Liên quan
ServerLoaded · TempColumns · Truy vấn dữ liệu Bravo 10 · FilterKey