Chia sẻ qua


Hiểu bảng biểu và bản ghi trong ứng dụng canvas

Trong Power Apps, bạn có thể tạo một ứng dụng canvas truy cập thông tin trong Microsoft Excel, SharePoint, SQL Server và một số nguồn khác lưu trữ dữ liệu trong bản ghi và bảng. Để làm việc hiệu quả nhất với loại dữ liệu này, hãy xem lại các khái niệm làm nền tảng cho các cấu trúc này.

  • Một bản ghi chứa một hoặc nhiều loại thông tin về một người, địa điểm hoặc sự vật. Ví dụ: bản ghi có thể chứa tên, địa chỉ email và số điện thoại của một khách hàng. Các công cụ khác đề cập đến bản ghi là "hàng" hoặc "mục".
  • Bảng chứa một hoặc nhiều bản ghi có chứa cùng loại thông tin. Ví dụ: bảng có thể chứa tên, địa chỉ email và số điện thoại của 50 khách hàng.

Trong ứng dụng của bạn, hãy sử dụng công thức để tạo, cập nhật và thao tác với các bản ghi và bảng. Bạn có thể đọc và ghi dữ liệu vào một nguồn dữ liệu bên ngoài, đó là một bảng mở rộng. Ngoài ra, bạn có thể tạo một hoặc nhiều bảng bên trong, được gọi là bộ sưu tập.

Bạn có thể xây dựng các công thức lấy tên của một bảng làm đối số, giống như một công thức trong Excel lấy một hoặc nhiều tham chiếu ô làm đối số. Một số công thức trong Power Apps trả về một bảng phản ánh các đối số khác mà bạn chỉ định. Ví dụ: bạn có thể tạo công thức:

  • để cập nhật một bản ghi trong một bảng bằng cách chỉ định bảng đó là một trong nhiều đối số cho hàm Patch
  • để thêm, xóa và đổi tên các cột trong một bảng bằng cách chỉ định bảng đó làm đối số cho hàm AddColumns, DropColumns hoặc RenameColumns . Không có hàm nào trong số đó sửa đổi bảng gốc. Thay vào đó, hàm trả về một bảng khác dựa trên các đối số khác mà bạn chỉ định.

Thành phần của bảng

Thành phần bảng.

Bản ghi

Mỗi bản ghi chứa ít nhất một hoặc nhiều loại thông tin về một người, địa điểm hoặc sự vật. Ví dụ trên cho thấy bản ghi cho mỗi sản phẩm (Chocolate, BreadWater) và một cột cho mỗi loại thông tin (Price, Quantity on HandQuantity on Order).

Trong một công thức, bạn có thể tự tham chiếu bản ghi, bên ngoài ngữ cảnh của bảng, bằng cách sử dụng dấu ngoặc nhọn. Ví dụ: bản ghi này { Tên: "Strawberries", Giá: 7,99 } không liên kết với bảng. Tên trường, chẳng hạn như TênGiá trong ví dụ đó, không được đặt trong dấu ngoặc kép.

Trường

Trường là một phần thông tin riêng trong bản ghi. Bạn có thể hình dung loại trường này như một giá trị trong cột cho một bản ghi cụ thể.

Cũng giống như với điều khiển, bạn tham chiếu đến một trường của bản ghi bằng cách sử dụng toán tử .trên bản ghi. Ví dụ, First(Products).Name trả về trường Tên cho bản ghi đầu tiên trong bảng sản phẩm.

Một trường có thể chứa một bản ghi hoặc bảng khác, như ví dụ về hàm GroupBy cho thấy. Bạn có thể lồng nhiều cấp độ của bản ghi và bảng theo ý muốn.

Số cột

Cột đề cập đến cùng một trường cho một hoặc nhiều bản ghi trong bảng. Trong ví dụ trước, mỗi sản phẩm có một trường giá và tất cả các sản phẩm đều có cùng một cột cho mức giá đó. Bảng trước có bốn cột, được hiển thị theo chiều ngang trên cùng:

  • Tên
  • Giá
  • Số lượng trong tay
  • Số lượng đặt hàng

Tên của cột phản ánh các trường trong cột đó.

Tất cả các giá trị trong một cột có cùng kiểu dữ liệu. Trong ví dụ trước, cột "Số lượng trên tay" luôn chứa một số và không thể chứa chuỗi, chẳng hạn như "12 đơn vị" cho một bản ghi. Giá trị của bất kỳ trường nào cũng có thể để trống.

Bạn có thể đã gọi các cột là "trường" trong các công cụ khác.

Lưu ý

Đối với các nguồn dữ liệu như ngăn xếp SharePoint, Excel hoặc Power BI có chứa tên cột có dấu cách, Power Apps thay thế khoảng trắng bằng "_x0020_". Ví dụ: "Tên cột" trong ngăn xếp SharePoint, Excel hoặc Power BI xuất hiện dưới dạng "Column_x0020_Name" trong Power Apps khi được hiển thị trong bố cục dữ liệu hoặc được sử dụng trong công thức.

Table

Một bảng bao gồm một hoặc nhiều bản ghi, mỗi bản ghi có nhiều trường có tên nhất quán trong các bản ghi.

Bạn sử dụng tên bảng để tham chiếu đến bất kỳ bảng nào được lưu trữ trong nguồn dữ liệu hoặc bộ sưu tập. Bạn cũng có thể chuyển tên bảng cho các hàm lấy bảng làm đối số. Một hàm hoặc công thức cũng có thể trả về bảng.

Như được hiển thị trong ví dụ sau, bạn có thể thể hiện một bảng trong một công thức bằng cách sử dụng hàm Bảng với một tập hợp các bản ghi mà bạn thể hiện trong dấu ngoặc nhọn:

Table( { Value: "Strawberry" }, { Value: "Vanilla" } )

Bạn cũng có thể xác định bảng một cột bằng cách sử dụng dấu ngoặc vuông. Biểu thức sau đây là một cách tương đương để viết biểu thức trước:

[ "Strawberry", "Vanilla" ]

Công thức bảng

Trong Excel và Power Apps, bạn sử dụng các công thức để thao tác số và chuỗi văn bản theo cách tương tự:

  • Trong Excel, nhập một giá trị, chẳng hạn như 42, trong ô A1 và sau đó nhập một công thức, chẳng hạn như A1+2, trong một ô khác để hiển thị giá trị của 44.
  • Trong Power Apps, đặt thuộc tính Default của Slider1 thành 42 và đặt thuộc tính Text của nhãn thành Slider1.Value + 2 để hiển thị giá trị của 44.

Trong cả hai trường hợp, giá trị được tính sẽ tự động thay đổi nếu bạn thay đổi giá trị của các đối số (ví dụ: số trong ô A1 hoặc giá trị của Slider1).

Tương tự, bạn có thể sử dụng các công thức để truy cập và thao tác dữ liệu trong bảng và bản ghi. Bạn có thể sử dụng tên của các bảng làm đối số trong một số công thức, chẳng hạn như Min(Catalog, Price) để hiển thị giá trị thấp nhất trong cột Giá của bảng Danh mục. Các công thức khác cung cấp toàn bộ bảng dưới dạng giá trị trả về, chẳng hạn như RenameColumns(Catalog, "Price", "Cost"), trả về tất cả các hồ sơ từ bảng Danh mục nhưng thay đổi tên của cột Giá thành Chi phí.

Cũng giống như với số, các công thức liên quan đến bảng và bản ghi sẽ tự động tính toán lại khi bảng hoặc bản ghi cơ bản thay đổi. Nếu chi phí của một sản phẩm trong bảng Danh mục được giảm xuống giá trị nhỏ hơn giá trị tối thiểu trước đó, giá trị trả về của công thức Tối thiểu sẽ tự động thay đổi để khớp với giá trị đó.

Hãy xem một số ví dụ đơn giản.

  1. Tạo một ứng dụng trống cho điện thoại và thêm một điều khiển Bộ sưu tập dọc chứa các điều khiển khác.

    Theo mặc định, màn hình hiển thị văn bản giữ chỗ từ bảng có tên CustomGallerySample. Thuộc tính Items của điều khiển Gallery của màn hình được tự động đặt thành bảng đó.

    Thư viện.

    Lưu ý

    Một số điều khiển được sắp xếp lại và phóng to cho mục đích minh họa.

  2. Thay vì đặt thuộc tính Items thành tên của một bảng, hãy đặt nó thành một công thức bao gồm tên của bảng làm đối số, như trong ví dụ này:

    Sort(CustomGallerySample, SampleHeading, SortOrder.Descending)

    Công thức này kết hợp hàm Sort , hàm này lấy tên của bảng làm đối số đầu tiên và tên của cột trong bảng đó làm đối số thứ hai. Hàm này cũng hỗ trợ một đối số thứ ba tùy chọn, quy định rằng bạn muốn sắp xếp dữ liệu theo thứ tự giảm dần.

    Hàm Sort cho thư viện.

  3. Đặt thuộc tính Items thành một công thức lấy công thức từ bước trước làm đối số và trả về một bảng, như trong ví dụ này:

    FirstN(Sort(CustomGallerySample, SampleHeading, SortOrder.Descending), 2)

    Trong công thức này, bạn sử dụng hàm FirstN để hiển thị số lượng bản ghi cụ thể trong một bảng. Bạn sử dụng hàm Sort làm đối số đầu tiên cho FirstN và một số (trong trường hợp này là 2) làm đối số thứ hai, chỉ định số lượng bản ghi cần hiển thị.

    Toàn bộ công thức trả về một bảng chứa hai bản ghi đầu tiên của bảng CustomGallerySample , được sắp xếp theo cột SampleHeading theo thứ tự giảm dần.

    FirstN cho thư viện.

Các hàm và thuộc tính điều khiển bảng

Hãy xem xét hàm Lower. Nếu biến welcome chứa chuỗi văn bản "Hello, World", công thức Lower( welcome) sẽ trả về "hello, world". Hàm này không thay đổi giá trị trong biến đó. Lower là một hàm thuần túy vì nó chỉ xử lý đầu vào và tạo ra đầu ra. Nó không có tác dụng phụ. Tất cả các hàm trong Excel và hầu hết các hàm trong Power Apps đều là các hàm thuần túy, có nghĩa là sổ làm việc hoặc ứng dụng sẽ tự động tính toán lại.

Power Apps cung cấp một tập hợp các hàm hoạt động trên bảng theo cách tương tự. Các hàm này lấy các bảng làm đầu vào và bộ lọc, sắp xếp, biến đổi, giảm và tóm tắt toàn bộ các bảng dữ liệu. Trong thực tế, Lower và nhiều hàm khác thường lấy một giá trị đơn lẻ cũng có thể lấy bảng một cột làm đầu vào.

  • Sắp xếp, lọc - Sắp xếp và lọc bản ghi.
  • FirstN, LastN - Trả về N bản ghi đầu tiên hoặc N bản ghi cuối cùng của bảng.
  • Abs, Sqrt, Round, RoundUp, RoundDown - Thực hiện các phép toán số học trên mỗi bản ghi của một bảng một cột, dẫn đến một bảng kết quả một cột.
  • Trái, Giữa, Phải, Thay thế, Thay thế, Cắt, Dưới, Trên, Thích hợp - Thực hiện các thao tác chuỗi trên mỗi bản ghi của bảng một cột, dẫn đến một bảng chuỗi một cột.
  • Len - Đối với một cột chuỗi, trả về một bảng một cột chứa độ dài của mỗi chuỗi.
  • Nối chuỗi - Nối chuỗi nhiều cột, tạo thành bảng chuỗi một cột.
  • AddColumns, DropColumns, RenameColumns, ShowColumns - Thực hiện thao tác cột của bảng, dẫn đến một bảng mới với các cột khác nhau.
  • Khác biệt - Xóa các bản ghi trùng lặp.
  • Xáo trộn - Xáo trộn các bản ghi theo thứ tự ngẫu nhiên.
  • HashTags - Tìm kiếm các hashtag trong một chuỗi.
  • Lỗi - Cung cấp thông tin lỗi khi bạn làm việc với nguồn dữ liệu.

Nhiều hàm trong số này lấy bảng một cột làm đầu vào của chúng. Nếu toàn bộ bảng chỉ có một cột, bạn có thể chỉ định nó theo tên. Nếu một bảng có nhiều cột, bạn có thể chỉ định một trong các cột đó bằng cách sử dụng cú pháp Table.Column. Ví dụ: Products.Name trả về bảng một cột chỉ gồm các giá trị Name từ bảng Products.

Bạn có thể định hình lại hoàn toàn một bảng theo ý muốn bằng cách sử dụng hàm AddColumns, RenameColumns, ShowColumns hoặc DropColumns . Một lần nữa, các hàm này chỉ thay đổi đầu ra chứ không thay đổi nguồn.

Thuộc tính của điều khiển cũng có thể là bảng:

  • Mục - Áp dụng cho thư viện ảnh, hộp danh sách và hộp kết hợp. Thuộc tính này xác định bảng mà bộ sưu tập hoặc danh sách hiển thị.
  • SelectedItems - Áp dụng cho hộp danh sách và hộp kết hợp. Thuộc tính này xác định bảng các mục mà người dùng đã chọn nếu SelectMultiple được bật.

Công thức hành vi

Một số chức năng được thiết kế đặc biệt để sửa đổi dữ liệu và có tác dụng phụ. Vì các chức năng này không thuần túy nên bạn phải xây dựng chúng một cách cẩn thận. Họ không thể tham gia vào việc tự động tính toán lại các giá trị trong ứng dụng. Bạn chỉ có thể sử dụng các hàm này trong các công thức hành vi.

  • Thu thập, Xóa, XóaThu thập - Tạo các bộ sưu tập, xóa chúng và thêm dữ liệu vào chúng.
  • Bản vá - Sửa đổi một hoặc nhiều trường trong bản ghi.
  • Cập nhật, Cập nhậtNếu - Cập nhật các bản ghi khớp với một hoặc nhiều tiêu chí mà bạn chỉ định.
  • Xóa, XóaNếu - Xóa các bản ghi khớp với một hoặc nhiều tiêu chí mà bạn chỉ định.

Công thức bản ghi

Bạn cũng có thể xây dựng một công thức tính toán dữ liệu cho một bản ghi riêng lẻ, lấy một bản ghi riêng lẻ làm đối số và cung cấp một bản ghi riêng lẻ làm giá trị trả về. Quay lại ví dụ về bộ sưu tập, hãy sử dụng thuộc tính Gallery1.Selected để hiển thị thông tin từ bất kỳ bản ghi nào mà người dùng chọn trong bộ sưu tập đó.

  1. Thêm một nút và đặt thuộc tính OnSelect của nút này thành công thức sau:
    Thu thập(SelectedRecord, Gallery1.Selected)

  2. Hãy chọn nút này đồng thời nhấn giữ phím Alt.

  3. Trong menu Tệp , chọn Bộ sưu tập.

    Bộ sưu tập SelectedRecord.

Công thức này trả về một bản ghi không chỉ bao gồm dữ liệu từ bản ghi hiện được chọn trong bộ sưu tập mà còn mỗi điều khiển trong bộ sưu tập đó. Ví dụ, bản ghi chứa cả cột SampleText , khớp với cột SampleText trong bảng gốc và cột Subtitle1 , biểu thị nhãn hiển thị dữ liệu từ cột đó. Chọn biểu tượng bảng trong cột Subtitle1 để tìm hiểu sâu hơn về dữ liệu đó.

Lưu ý

Cột Subtitle1 có thể được đặt tên là Subtitle2 hoặc tương tự nếu bạn thêm các yếu tố khác với những yếu tố mà chủ đề này chỉ định.

Bây giờ bạn đã có bản ghi đã chọn, bạn có thể trích xuất các trường riêng lẻ từ bản ghi đó bằng cách sử dụng toán tử .

  1. Thêm điều khiển Nhãn , sau đó di chuyển nó xuống dưới thư viện và nút.

  2. Đặt thuộc tính Văn bản của nhãn thành biểu thức sau:
    "Đã chọn: " & Gallery1.Selected.SampleHeading

    Thuộc tính văn bản với nhãn được cập nhật.

Bạn đã lấy thuộc tính Đã chọn , là một bản ghi và trích xuất thuộc tính SampleHeading từ đó.

Bạn cũng có thể sử dụng bản ghi như một bộ chứa mục đích chung cho các giá trị được đặt tên có liên quan.

  • Nếu bạn xây dựng công thức xung quanh các hàm UpdateContextNavigate , hãy sử dụng bản ghi để thu thập các biến ngữ cảnh mà bạn muốn cập nhật.
  • Sử dụng thuộc tính Cập nhật trên điều khiển Chỉnh sửa biểu mẫu để thu thập các thay đổi mà người dùng thực hiện trong biểu mẫu.
  • Sử dụng chức năng Patch để cập nhật nguồn dữ liệu nhưng cũng để hợp nhất các bản ghi.

Trong những trường hợp này, bản ghi không bao giờ là một phần của bảng.

Các hàm và thuộc tính điều khiển bản ghi

Các hàm trả về bản ghi:

  • FirstN, LastN - Trả về bản ghi đầu tiên hoặc cuối cùng hoặc các bản ghi của bảng.
  • Tra cứu - Trả về bản ghi đầu tiên từ bảng khớp với một hoặc nhiều tiêu chí.
  • Bản vá - Cập nhật nguồn dữ liệu hoặc hợp nhất các bản ghi.
  • Mặc định - Trả về giá trị mặc định cho một nguồn dữ liệu.

Các thuộc tính trả về bản ghi:

  • Đã chọn - Áp dụng cho thư viện ảnh và hộp danh sách. Trả về bản ghi hiện được chọn.
  • Cập nhật - Áp dụng cho thư viện ảnh. Tổng hợp tất cả các thay đổi mà người dùng thực hiện trong biểu mẫu nhập dữ liệu.
  • Cập nhật - Áp dụng cho các điều khiển nhập liệu như điều khiển nhập văn bản và thanh trượt. Thiết lập các thuộc tính riêng lẻ cho bộ sưu tập để kéo lại với nhau.

Phạm vi bản ghi

Một số hàm hoạt động bằng cách đánh giá một công thức trên tất cả các bản ghi của bảng, từng bản ghi một. Bạn sử dụng kết quả của công thức theo những cách khác nhau cho từng hàm:

  • AddColumns - Sử dụng công thức để lấy giá trị cho trường mới mà bạn thêm.
  • Trung bình, Tối đa, Tối thiểu, Tổng, StdevP, VarP - Sử dụng công thức để lấy giá trị bạn muốn tổng hợp.
  • Bộ lọc, Tra cứu - Sử dụng công thức để quyết định xem bản ghi có nên là một phần của đầu ra hay không.
  • Concat - Sử dụng công thức để quyết định chuỗi nào sẽ kết hợp với nhau.
  • Khác biệt - Sử dụng công thức để trả về giá trị giúp tìm các bản ghi trùng lặp.
  • ForAll - Sử dụng công thức để trả về bất kỳ giá trị nào, có thể có tác dụng phụ.
  • Sắp xếp - Sử dụng công thức để lấy giá trị để sắp xếp các bản ghi.
  • Với - Sử dụng công thức để trả về bất kỳ giá trị nào, có thể có tác dụng phụ.

Bên trong các công thức này, bạn có thể tham chiếu các trường của bản ghi mà bạn đang làm việc. Mỗi hàm này tạo ra một "phạm vi bản ghi" nơi công thức chạy. Các trường của bản ghi hiển thị dưới dạng mã định danh cấp cao nhất. Bạn cũng có thể tham chiếu các thuộc tính kiểm soát và các giá trị khác từ ứng dụng.

Ví dụ: hãy xem xét một bảng Sản phẩm:

Mẫu sản phẩm.

Để tạo bảng ví dụ này trong ứng dụng của bạn, hãy chèn một nút, đặt thuộc tính OnSelect của nút đó thành công thức này, sau đó chọn nút (nhấp vào nút đó trong khi giữ phím Alt trong Power Apps Studio):

Set( Products,
    Table(
        { Product: "Widget",    'Quantity Requested': 6,  'Quantity Available': 3 },
        { Product: "Gadget",    'Quantity Requested': 10, 'Quantity Available': 20 },
        { Product: "Gizmo",     'Quantity Requested': 4,  'Quantity Available': 11 },
        { Product: "Apparatus", 'Quantity Requested': 7,  'Quantity Available': 6 }
    )
)

Để kiểm tra xem có sản phẩm nào trong số này có yêu cầu nhiều hơn mức có sẵn hay không, hãy sử dụng công thức sau:

Filter( Products, 'Quantity Requested' > 'Quantity Available' )

Đối số đầu tiên của Bộ lọc là bảng các bản ghi để làm việc. Đối số thứ hai là một công thức. Bộ lọc tạo phạm vi bản ghi để đánh giá công thức này. Các trường của mỗi bản ghi có sẵn, như Sản phẩm, Số lượng được yêu cầuSố lượng có sẵn. Kết quả so sánh quyết định xem mỗi bản ghi có nên là một phần của kết quả của hàm hay không:

Đã lọc bảng.

Bạn có thể thêm vào ví dụ này bằng cách tính toán số lượng mỗi sản phẩm cần đặt hàng:

AddColumns( 
    Filter( Products, 'Quantity Requested' > 'Quantity Available' ), 
    "Quantity To Order", 'Quantity Requested' - 'Quantity Available'
)

Tại đây, bạn thêm một cột được tính toán vào kết quả. AddColumns sử dụng phạm vi bản ghi riêng của nó để tính toán sự khác biệt giữa những gì bạn yêu cầu và những gì có sẵn.

Đã thêm cột.

Cuối cùng, bạn có thể giảm bảng kết quả xuống chỉ còn các cột mà bạn muốn:

ShowColumns(
    AddColumns(
        Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
        "Quantity To Order", 'Quantity Requested' - 'Quantity Available'
    ),
    "Product",
    "Quantity To Order"
)

Đã cập nhật bảng.

Trong ví dụ trước, bạn đã sử dụng dấu ngoặc kép (") ở một số nơi và dấu ngoặc kép (') ở những nơi khác. Bạn cần dấu ngoặc kép đơn khi tham chiếu giá trị của đối tượng, chẳng hạn như trường hoặc bảng và tên của đối tượng chứa dấu cách. Sử dụng dấu ngoặc kép khi bạn không tham chiếu đến giá trị của một đối tượng mà thay vào đó nói về nó. Sử dụng dấu ngoặc kép, đặc biệt là trong các tình huống mà đối tượng chưa tồn tại, như trong trường hợp của AddColumns.

Định hướng

Tên trường bạn thêm với phạm vi bản ghi sẽ ghi đè các tên giống nhau từ nơi khác trong ứng dụng. Khi điều này xảy ra, bạn vẫn có thể truy cập các giá trị từ bên ngoài phạm vi bản ghi bằng cách sử dụng @ toán tử định hướng :

  • Để truy cập các giá trị từ phạm vi bản ghi lồng nhau, hãy sử dụng @ toán tử với tên của bảng bạn đang hoạt động, sử dụng mẫu sau:
    Bảng[@Tên trường]
  • Để truy cập các giá trị toàn cầu, chẳng hạn như nguồn dữ liệu, bộ sưu tập và biến bối cảnh, hãy sử dụng mẫu [@ObjectName] (không có bảng chỉ định).

Nếu bảng bạn đang thao tác là một biểu thức, chẳng hạn như Filter(Table,...), bạn không thể sử dụng toán tử định hướng. Chỉ phạm vi bản ghi trong cùng mới có thể truy cập các trường từ biểu thức bảng này, bằng cách không sử dụng toán tử định hướng.

Giả sử có tập hợp X:

Bộ sưu tập X.

Bạn tạo bộ sưu tập này bằng cách sử dụng ClearCollect( X, [1, 2]).

Và tập hợp tác là Y:

Bộ sưu tập Y.

Bạn tạo bộ sưu tập này bằng cách sử dụng ClearCollect( Y, ["A", "B"]).

Ngoài ra, xác định một biến ngữ cảnh có tên Value với công thức này: UpdateContext( {Value: "!"} )

Chúng ta hãy kết hợp tất cả lại. Trong ngữ cảnh này, công thức sau đây:

Ungroup(
    ForAll( X,
        ForAll( Y,
            Y[@Value] & Text( X[@Value] ) & [@Value]
        )
    ),
    "Value"
)

tạo ra bảng này:

Bảng XY.

Chuyện gì đang xảy ra ở đây? Hàm ForAll ngoài cùng xác định phạm vi bản ghi cho X, cho phép truy cập vào trường Giá trị của mỗi bản ghi khi nó xử lý. Bạn có thể truy cập nó bằng cách sử dụng từ Giá trị hoặc bằng cách sử dụng X [@Value].

Hàm ForAll trong cùng xác định một phạm vi bản ghi khác cho Y. Vì bảng này cũng có trường Giá trị được xác định, nên việc sử dụng Giá trị ở đây đề cập đến trường trong bản ghi của Y và không còn trường từ X. Để truy cập trường Giá trị của X, bạn phải sử dụng phiên bản dài hơn với toán tử định hướng.

Y là phạm vi bản ghi trong cùng, nên việc truy cập các trường của bảng này không yêu cầu định hướng, vì vậy bạn có thể sử dụng công thức này với cùng một kết quả:

Ungroup(
    ForAll( X,
        ForAll( Y,
            Value & Text( X[@Value] ) & [@Value]
        )
    ),
    "Value"
)

Tất cả bản ghi ForAll ghi đè phạm vi toàn cầu. Biến ngữ cảnh Giá trị mà bạn đã xác định không có sẵn theo tên nếu không có toán tử định hướng. Để truy cập giá trị này, hãy sử dụng [@Value].

Ungroup làm phẳng kết quả vì các hàm ForAll lồng nhau tạo ra bảng kết quả lồng nhau.

Bảng một cột

Để hoạt động trên một cột từ bảng, hãy sử dụng hàm ShowColumns như trong ví dụ này:

ShowColumns( Products, "Product" )

Công thức này tạo ra bảng một cột sau:

Bảng một cột.

Một cách ngắn hơn là chỉ định Table.Column trích xuất bảng một cột của riêng Cột từ Bảng. Ví dụ: công thức này tạo ra kết quả chính xác như khi sử dụng ShowColumns.

Products.Product

Bản ghi nội tuyến

Thể hiện bản ghi bằng cách sử dụng dấu ngoặc nhọn chứa các giá trị trường được đặt tên. Ví dụ: bạn có thể biểu diễn bản ghi đầu tiên trong bảng khi bắt đầu chủ đề này bằng cách sử dụng công thức sau:

{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 }

Bạn cũng có thể nhúng các công thức trong các công thức khác, như trong ví dụ sau:

{ Name: First(Products).Name, Price: First(Products).Price * 1.095 }

Bạn có thể lồng bản ghi bằng cách lồng các dấu ngoặc nhọn, như trong ví dụ sau:

{ 'Quantity': { 'OnHand': ThisItem.QuantOnHand, 'OnOrder': ThisItem.QuantOnOrder } }

Đặt từng tên cột có chứa ký tự đặc biệt, như khoảng trống hoặc dấu phẩy, trong ngoặc đơn. Để sử dụng ngoặc đơn trong tên cột, hãy nhân đôi nó.

Lưu ý rằng giá trị trong cột Giá không bao gồm ký hiệu tiền tệ, chẳng hạn như ký hiệu đô la. Định dạng đó được áp dụng khi giá trị được hiển thị.

Bảng nội tuyến

Tạo bảng bằng cách sử dụng hàm Bảng và một tập hợp các bản ghi. Bạn có thể biểu diễn bảng ở đầu chủ đề này bằng cách sử dụng công thức sau:

Table( 
	{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 },
	{ Name: "Bread", Price: 4.95, 'Quantity on Hand': 34, 'Quantity on Order': 0 },
	{ Name: "Water", Price: 4.95, 'Quantity on Hand': 10, 'Quantity on Order': 0 } 
)

Bạn cũng có thể lồng bảng:

Table( 
	{ Name: "Chocolate", 
	  'Quantity History': Table( { Quarter: "Q1", OnHand: 10, OnOrder: 10 },
	                             { Quarter: "Q2", OnHand: 18, OnOrder: 0 } ) 
	}
)

Bảng giá trị nội tuyến

Tạo bảng một cột bằng cách chỉ định các giá trị trong dấu ngoặc vuông. Bảng kết quả có một cột duy nhất, được đặt tên là Giá trị.

Ví dụ: [ 1, 2, 3, 4 ] tương đương với Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } ) và trả về bảng sau:

Bảng nội tuyến.