Створення колекції відомостей у компонованій програмі
Дотримуйтеся покрокових інструкцій, щоб створити колекцію відомостей у компонованій програмі для керування вигаданими даними в базі даних Northwind Traders. Цей розділ є частиною серії, в якій описується процедура створення бізнес-програми на основі реляційних даних у Microsoft Dataverse. Для отримання найкращих результатів ознайомтеся з розділами по порядку:
- Створення галереї замовлень.
- Створення форми зведення.
- Створення колекції відомостей (цей розділ).
Вимоги
Перш ніж почати цей розділ, слід встановити базу даних, як описано вище в цьому розділі. Потім слід створити колекцію замовлень і зведення або відкрити компоновану програму Замовлення Orders (полотно) ‑ почати 3-ю частину, в якій вже містяться ця колекція і форма.
Створення додаткової панелі заголовка
У верхній частині екрана виберіть елемент керування Надпис, який виступає рядком заголовка, скопіюйте його, натиснувши клавіші CTRL-C, а потім вставте, натиснувши клавіші CTRL-V.
Змініть розмір і перемістіть копію так, щоб вона відображалася одразу під формою зведення.
Видаліть текст із копії будь-яким із зазначених нижче способів:
- Двічі клацніть текст, щоб вибрати його, а потім натисніть клавішу DELETE.
- Задайте значенням властивості Текст надпису порожній рядок ("").
Додавання галереї
Вставка елемента керування колекція із пустим вертикальним макетом:
Нова галерея, яка відображатиме відомості про замовлення, з'явиться у верхньому лівому кутку.
Закрийте спливаюче діалогове вікно джерела даних, а потім змініть розмір і перемістіть колекцію відомостей в правий нижній кут, під нову панель заголовка:
Задайте зазначену нижче формулу в якості значення для властивості Елементи колекції відомостей:
Gallery1.Selected.'Order Details'
Якщо відобразиться повідомлення про помилку, переконайтеся, що ім'я колекції замовлень — Gallery1 (в області Подання дерева, поруч із лівим краєм). Якщо в колекція має інше ім'я, перейменуйте її в Gallery1.
Ви щойно зв'язали дві колекції. Коли користувач вибирає замовлення в галереї замовлень, цей вибір визначає запис у таблиці Замовлення. Якщо це замовлення містить одну або кілька позицій, запис у таблиці Замовлення зв'язується з одним або кількома записами в таблиці Відомості про замовлення, а в галереї відомостей про замовлення відображаються дані з цих записів. Така поведінка відображає зв'язок «один-до-багатьох», створений для вас між таблицями Замовлення та Відомості про замовлення. Вказана вами формула "проходить" цим зв'язком за допомогою точкової нотації:
Відображення назв продуктів
У колекції відомостей виберіть Додати елемент з вклади вставок щоб вибрати шаблон колекції:
Переконайтеся, що вибрали шаблон колекції, а не саму колекцію. Обмежувальна рамка має бути в межах колекції та, ймовірно, коротшою за висоту колекції. Вставлені в цей шаблон елементи керування повторюватимуться в кожному елементі колекції.
На вкладці Вставлення, вставте надпис до колекції відомостей.
Надпис має відображатися в колекції. Якщо не відображається, спробуйте ще раз, але переконайтеся, що шаблон колекції обрано, перш ніж вставляти надпис.
Задайте значенням властивості Текст нового надпису цю формулу:
ThisItem.Product.'Product Name'
Якщо текст не відображається, натисніть стрілку Замовлення 0901 у нижній частині колекції замовлень.
Змініть розмір надпису таким чином, щоб з'явився повний текст:
Цей вираз походіть від запису в таблиці Відомості про замовлення. Запис проводиться в ThisItem до таблиці Продукти для замовлення через зв'язок «багато-до-одного»:
Стовпець Ім'я продукту (та інші стовпці, які ви збираєтесь використати), отримано:
Відображення зображень продуктів
На вкладці Вставлення, вставте елемент керування Зображення до колекції відомостей:
Змініть розмір і перемістіть зображення та надпис, щоб вони розташувались поряд.
Підказка
Для більш тонкого керування розміром і положенням елемента керування, починайте зміну розміру або переміщення, не натискаючи клавішу Alt, а потім продовжуйте змінювати розмір або переміщувати елемент керування, утримуючи клавішу Alt:
В якості значення одноіменної властивості Зображення, вкажіть цю формулу:
ThisItem.Product.Picture
Знову ж таки, вираз вказує на продукт, зв'язаний з цим відомостями про замовлення, і видобуває поле Зображення для відображення.
Зменште висоту шаблону колекції, щоб одночасно відображалося більше одного запису Відомостей про замовлення:
Відображення кількості та вартості продуктів
На вкладці Вставлення вставте ще один надпис до колекції відомостей, а потім змініть розмір і перемістіть новий надпис праворуч від відомостей про продукт.
Задайте значенням властивості Текст нового надпису цей вираз:
ThisItem.Quantity
У цій формулі інформація витягується безпосередньо з таблиці Відомості про замовлення (зв'язок не потрібен).
На вкладці Основне вирівняйте цей елемент керування по правому краю.
На вкладці Вставлення вставте ще один надпис до колекції відомостей, а потім змініть розмір і перемістіть надпис праворуч від надпису про кількість.
Задайте значенням властивості Текст нового надпису цю формулу:
Text( ThisItem.'Unit Price', "[$-en-US]$ #,###.00" )
Якщо не включати тег мови ([$-EN-US]), його буде додано автоматично, залежно від вашої мови та регіону. Якщо використовується інший тег мови, потрібно видалити символ $ відразу після закриваючої квадратної дужки (]), а потім додати символ власної грошової одиниці в тому ж місці.
На вкладці Основне вирівняйте цей елемент керування по правому краю.
На вкладці Вставлення вставте ще один елемент керування "Надпис" до колекції відомостей, а потім змініть розмір і перемістіть новий надпис праворуч від ціни за одиницю.
Задайте значенням властивості Текст нового надпису цю формулу:
Text( ThisItem.Quantity * ThisItem.'Unit Price', "[$-en-US]$ #,###.00" )
Знову ж таки, якщо не включати тег мови ([$-EN-US]), його буде додано автоматично, залежно від вашої мови та регіону. Якщо тег відрізняється, потрібно буде використати символ власної грошової одиниці, а не символ $ відразу після закриваючої квадратної дужки (]).
На вкладці Основне вирівняйте цей елемент керування по правому краю.
Наразі ми завершили додавання елементів керування до колекції відомостей.
В області Подання дерева виберіть Screen1, щоб переконатися, що колекцію відомостей більше не вибрано.
Додавання тексту до нової панелі заголовка
На вкладці Вставлення вставте на екран ще один надпис:
Змініть розмір і перемістіть новий надпис над зображеннями продуктів у другому рядку заголовка, а потім змініть колір тексту на білий на вкладці Основне.
Двічі клацніть текст надпису, а потім введіть Продукт:
Скопіюйте та вставте надпис продукту, а потім змініть розмір і помістіть копію над стовпцем кількості.
Двічі клацніть текст нового надпису, а потім введіть Кількість:
Скопіюйте та вставте надпис кількості, а потім змініть розмір і помістіть копію над стовпцем ціни за одиницю.
Двічі клацніть текст нового надпису, а потім введіть Ціна за одиницю:
Скопіюйте та вставте надпис ціни за одиницю, а потім змініть розмір і помістіть копію над стовпцем загальної ціни.
Двічі клацніть текст нового надпису, а потім введіть "Загальна".
Відображення сум замовлень
Зменште висоту колекції відомостей, щоб звільнити місце в нижній частині екрана для сум замовлень:
Скопіюйте та вставте рядок заголовка в середину екрана, а потім перемістіть копію в нижню частину екрана:
Скопіюйте та вставте надпис продукту в середній рядок заголовку, а потім перемістіть копію в нижній рядок заголовка, безпосередньо ліворуч від стовпця Кількість.
Двічі клацніть текст нового надпису, а потім введіть наступний текст:
Суми замовлень:Скопіюйте та вставте надпис для сум замовлень, а потім змініть розмір і перемістіть копію праворуч від надпису для сум замовлень.
Задайте значенням властивості Текст нового надпису цю формулу:
Sum( Gallery1.Selected.'Order Details', Quantity )
У цій формулі відображається попередження про делегацію, але його можна пропустити, оскільки жодне замовлення не міститиме більше 500 продуктів.
На вкладці Основне встановіть вирівнювання тексту нового надпису по правому краю.
Скопіюйте та вставте елемент керування "Надпис", а потім змініть розмір і помістіть копію під стовпцем Загальна.
Задайте значенням властивості Текст копії цю формулу:
Text( Sum( Gallery1.Selected.'Order Details', Quantity * 'Unit Price' ), "[$-en-US]$ #,###.00" )
У цій формулі відображається попередження про делегацію, але його можна пропустити, оскільки жодне замовлення не міститиме більше 500 продуктів.
Додавання місця для нових відомостей
У колекції можна відображати дані, але не можна оновлювати або додавати записи. У галереї відомостей ви додасте область, де користувач зможе налаштувати запис у таблиці Відомості про замовлення та вставити цей запис у замовлення.
Зменште висоту колекції відомостей, щоб звільнити місце для одноелементної області редагування під колекцією.
У цій області ми додамо елементи керування можна, щоб користувач міг додавати відомості про замовлення:
На вкладці Вставлення вставте надпис, а потім змініть розмір і перемістіть його під колекцію відомостей.
Двічі клацніть текст нового надпису, а потім натисніть клавішу DELETE.
На вкладці Основне задайте блакитний колір Заливки:
Вибір продукту
На вкладці Вставка виберіть Елементи керування > Поле зі списком.
Елемент керування Поле зі списком відобразиться у верхньому лівому кутку.
У спливаючому діалоговому вікні виберіть джерело даних Продукти для замовлення.
На вкладці Властивості поля зі списком натисніть Редагувати (поруч з пунктом Поля), щоб відкрити область Дані. Переконайтеся, що Основний текст і SearchField мають значення nwind_productname.
Вкажіть логічне ім'я, оскільки область Дані ще не підтримує короткі імена в цьому випадку:
Закрийте область даних.
Біля правого краю вкладки Властивості прокрутіть униз, вимкніть параметр Дозволити вибір кількох елементів та переконайтеся, що параметр Дозволити пошук увімкнуто:
Змініть розмір і перемістіть поле зі списком на блакитну область, під стовпець назви продукту в колекції відомостей:
У цьому полі зі списком користувач вказуватиме запис у таблиці Продукт для запису Відомості про замовлення, який створить програма.
Утримуючи клавішу Alt, натисніть стрілку вниз поля зі списком.
Підказка
Утримуючи клавішу Alt, можна взаємодіяти з елементами керування Power Apps Studio, не відкриваючи режим попереднього перегляду.
У списку продуктів, що відкрився, виберіть продукт:
Додавання зображення продукту
На вкладці Вставка виберіть Медіадані > Зображення.
Елемент керування Зображення відобразиться у верхньому лівому кутку:
Змініть розмір і перемістіть зображення на блакитну область під іншими зображеннями продуктів та поруч із полем зі списком.
Встановіть значення одноіменної властивості зображення:
ComboBox1.Selected.Picture
Ви використовуєте той самий прийом, який використовували для відображення зображення працівника у формі зведення. Властивість Вибрано поля зі списком повертає весь запис продукту, вибраного користувачем, включно з полем Рисунок.
Додавання поля "кількість"
На вкладці Вставка виберіть Текст > Введення тексту.
Елемент керування Введення тексту відобразиться у верхньому лівому кутку:
Змініть розмір і перемістіть поле введення тексту праворуч від поля зі списком, під стовпець кількості в колекції відомостей:
За допомогою цього поля введення тексту, користувач буде вказувати поле Кількість запису Відомостей про замовлення.
В якості значення За замовчуванням цього елемента керування задайте "":
На вкладці Основне вирівняйте текст цього елемента керування по правому краю.
Відображення цін за одиницю та загальних цін
На вкладці Вставлення, вставте елемент керування Надпис.
Надпис відобразиться у верхньому лівому кутку екрана.
Змініть розмір і перемістіть надпис праворуч від елемента керування "Введення тексту" і задайте в якості значення властивості Текст надпису цю формулу:
Text( ComboBox1.Selected.'List Price', "[$-en-US]$ #,###.00" )
Цей елемент керування відображає Ціну за прайсом з таблиці Продукти для замовлення. Це значення визначить Ціну за одиницю в записі відомостей про замовлення.
Примітка
В цьому сценарії значення призначене лише для читання, але інші сценарії можуть дозволити користувачу програми змінювати його. У цьому випадку використайте елемент керування Введення тексту та встановіть в якості значення його властивості За замовчуванням ціну за прейскурантом.
На вкладці Основне вирівняйте текст надпису ціни за прейскурантом по правому краю.
Скопіюйте та вставте надпис для ціни за прейскурантом, а потім змініть розмір і перемістіть копію праворуч від надпису для ціни за прейскурантом.
Задайте значенням властивості Текст нового надпису цю формулу:
Text( Value(TextInput1.Text) * ComboBox1.Selected.'List Price', "[$-en-US]$ #,###.00" )
У цьому елементі керування відображається загальна ціна на основі кількості, зазначеної користувачем програми, а також ціни у прейскуранті продукту, вибраного користувачем програми. Це лише надає інформацію користувачу програми.
Двічі клацніть елемент керування "Введення тексту" для кількості, а потім введіть число.
Надпис Загальна ціна" повторює розрахунок, щоб відобразити нове значення:
Додавання піктограми додавання
На вкладці Вставка виберіть Піктограми > Додавання:
Піктограма відобразиться у верхньому лівому кутку екрана.
Змініть розмір і перемістіть цю піктограму на правий край блакитної області, а потім задайте значенням властивості OnSelect для піктограми цю формулу:
Patch( 'Order Details', Defaults('Order Details'), { Order: Gallery1.Selected, Product: ComboBox1.Selected, Quantity: Value(TextInput1.Text), 'Unit Price': ComboBox1.Selected.'List Price' } ); Refresh( Orders ); Reset( ComboBox1 ); Reset( TextInput1 )
Загалом, функція Виправлення оновлює та створює записи, а певні аргументи в цій формулі визначають точні зміни, які внесе функція.
Перший аргумент визначає джерело даних (в нашому випадку це таблиця Відомості про замовлення), в якому функція оновлюватиме або створюватиме записи.
Другий аргумент визначає, що функція створить запис зі значеннями за замовчуванням для таблиці Відомості про замовлення, якщо інше не буде вказано в третьому аргументі.
Третій аргумент вказує на те, що чотири стовпці в новому записі міститимуть значення від користувача.
- Стовпець Замовлення міститиме номер замовлення, вибраного користувачем в колекції замовлень.
- Стовпець Продукт міститиме назву продукту, вибраного користувачем у полі зі списком, в якому відображаються продукти.
- Стовпець Кількість міститиме значення, вказане користувачем в полі введення тексту.
- Стовпець Ціна за одиницю міститиме ціну за прейскурантом продукту, вибраного користувачем для цих відомостей замовлення.
Примітка
Ви можете створювати формули, які використовують дані з будь-якого стовпця (у таблиці Продукти для замовлення) для будь-якого продукту, який користувач вибирає в полі зі списком, де відображаються продукти. Коли користувач вибирає запис у таблиці Продукти для замовлення, відображається не тільки ім'я продукту в цьому полі зі списком, але й ціна за одиницю продукту в підписі. Кожне значення підстановки в компонованій програмі посилається на весь запис, а не лише первинний ключ.
Функція Оновити гарантує, що запис, щойно доданий до таблиці Відомості про замовлення, відобразиться в таблиці Замовлення. Функція скидання видаляє дані про продукт, кількість і ціну за одиницю, щоб спростити створення користувачем нових відомостей для того самого замовлення.
Натисніть клавішу F5, а потім виберіть піктограму Додавання.
У замовленні відображаються зазначені вами відомості.
(необов'язково) Додайте до замовлення ще один елемент.
Натисніть клавішу Esc, щоб закрити режим попереднього перегляду.
Вилучення відомостей про замовлення
У центрі екрана виберіть шаблон колекції відомостей:
На вкладці Вставка виберіть Піктограми > Кошик:
Піктограма "Кошик" відобразиться у верхньому лівому кутку шаблона колекції.
Змініть розмір і перемістіть піктограму "Кошик" на праву сторону шаблона колекції, а потім задайте значенням властивості OnSelect для піктограми цю формулу:
Remove( 'Order Details', ThisItem ); Refresh( Orders )
На момент створення цієї статті записи не можна видаляти безпосередньо зі зв'язку, тому функція Remove видаляє запис безпосередньо з пов'язаної таблиці. У пункті "ThisItem" вказується запис, який буде видалено, взятий з того ж запису в колекції відомостей, де відображається піктограма "кошик".
Знову ж таки, під час операції використовуються кешовані дані, тому функція Оновити інформує таблицю Замовлення, що у програмі було змінено одну з пов’язаних із нею таблиць.
Натисніть клавішу F5, щоб відкрити режим попереднього перегляду, а потім натисніть піктограму "кошик" поруч із записом відомостей про замовлення, який необхідно усунути з замовлення.
Спробуйте додавати та видаляти різноманітні відомості про замовлення в своїх замовленнях:
На заключення
Отже, ми додали ще одну колекцію, щоб відображати відомості про замовлення та елементи керування для додавання та видалення відомостей про замовлення у програмі. Ми використати наступні елементи:
- Другий елемент керування "Колекція", зв'язаний із колекцією замовлень зв'язком "один-до-багатьох": Gallery2.Items =
Gallery1.Selected.'Order Details'
- Зв'язок «багато-до-одного» між таблицею Відомості про замовлення та таблицею Продукти для замовлення:
ThisItem.Product.'Product Name'
іThisItem.Product.Picture
- Функцію Варіанти вибору для отримання списку продуктів:
Choices( 'Order Details'.Product' )
- Властивість Вибрано поля зі списком в якості повного запису зі зв'язком "багато-до-одного":
ComboBox1.Selected.Picture
таComboBox1.Selected.'List Price'
- Функцію Виправлення для створення запису відомостей про замовлення:
Patch( 'Order Details', Defaults( 'Order Details' ), ... )
- Функцію Вилучення для видалення запису відомостей про замовлення:
Remove( 'Order Details', ThisItem )
Ця серія статей — це короткий освітній посібник щодо використання зв'язків і виборів Dataverse в компонованих програмах. Перш ніж випускати будь-яку програму для виробництва, слід розглянути перевірку полів, обробку помилок та багато інших факторів.
Примітка
Розкажіть нам про свої уподобання щодо мови документації? Візьміть участь в короткому опитуванні. (зверніть увагу, що це опитування англійською мовою)
Проходження опитування займе близько семи хвилин. Персональні дані не збиратимуться (декларація про конфіденційність).