Views

Phạm vi áp dụng

✅ Bravo 8 · ❌ Bravo 10 — thẻ chỉ có ở Bravo 8

Ý nghĩa

Khai báo thẻ <Views> trong DataSource để tạo các view dựa trên các bảng trong <Tables>.

Các view có thể:

  • Có relation bất kỳ, khác với relation trong <Tables> (khai báo ParentTable / ParentKey / ChildKey)
  • Hoặc không có relation (hiển thị toàn bộ bảng)
  • Khai báo FilterKey và Sort để lọc và sắp xếp view theo ý muốn

Bản chất

Các view được tạo sau khi đã query dữ liệu và dùng để binding cho các control. Còn việc query và lưu CSDL vẫn tuân thủ theo khai báo trong <Tables>.

Cú pháp

<root>
  <Views>
    <Ten_View>
      <Name>Ten_View</Name>
      <ParentKey>Gia_tri</ParentKey>
      <ChildKey>Gia_tri</ChildKey>
    </Ten_View>
  </Views>
  <Tables>
    <!-- ... -->
  </Tables>
</root>

Ví dụ

Màn hình Editor của chức năng Thanh toán nợ ở Explorer phiếu chi:

<root>
  <Views>
    <viewPaybill>
      <Name>vB30AccDocPaybill</Name>
      <ParentKey>Stt</ParentKey>
      <ChildKey>Stt</ChildKey>
    </viewPaybill>
  </Views>
  <Tables>
    <ParentTable>...</ParentTable>
    <ChildTable_Detail>...</ChildTable_Detail>
  </Tables>
</root>

Layout của form này khai báo trong BravoGrid:

<DataMember>viewPaybill</DataMember>

Diễn giải: mục đích của Grid trên màn hình này là hiển thị thông tin của bảng cháu để người dùng tác động trực tiếp. Khi lưu lại thì các thông tin được lưu tuân thủ đúng như khai báo trong <Tables> của DataSource.

Khi nào dùng?

Khi bạn muốn hiển thị dữ liệu theo một cấu trúc khác với cấu trúc lưu trữ — ví dụ “làm phẳng” bảng cháu lên một Grid duy nhất.

Bravo 10

Bravo 10 không có thẻ <Views> riêng. Nhu cầu tương đương được đáp ứng bằng khả năng khai báo query linh hoạt: `<SourceCollection>`, `<JoinCollection>`.

Liên quan

TempTable · DataMember · Truy vấn dữ liệu Bravo 10 · Grid - Tổng quan