Кнопка отправки перезаписывает ранее заполненные строки в таблице Excel в PowerApps?

#forms #powerapps #powerapps-formula #powerapps-canvas #powerapps-selected-items

#формы #powerapps #powerapps-формула #powerapps-холст #powerapps-выбранные-элементы

Вопрос:

Я создаю форму, в которой конечный пользователь может отправлять свои записи в форме, нажав кнопку отправки. Источником данных для этой задачи является таблица Excel. Я создал 2 экрана.[ДОПОЛНИТЕЛЬНЫЕ ОБНОВЛЕНИЯ СМ. НИЖЕ]

Экран1 содержит сводку многих систем (Sys1, Sys2, Sys3 …) в форме галереи. Когда конечный пользователь нажимает на одну из вкладок (скажем, «Sys1»), он выводит их на новый экран (который содержит подробную информацию о Sys1), где конечный пользователь может зарегистрироваться, просмотрев сводный экран. Я добавил кнопку «Регистрация» в нижней части экрана, которая переходит к экрану 2.

Экран 2 содержит форму редактирования, в которой конечный пользователь может зарегистрироваться в системе. Я также хотел использовать некоторые значения с экрана 1 (скажем, идентификатор системы 1, номер модели и т. Д.). Итак, для этих элементов я установил для их свойства «Item» Gallery.Selected значение и отключил эти поля, чтобы конечный пользователь не мог редактировать эти поля. Поля, требующие ввода конечным пользователем, находятся в форме «Текстового поля», такие как «Регистрация по», «Время регистрации» и т. Д. У меня есть кнопка отправки в нижней части экрана. Таким образом, конечный пользователь может отправить форму. Для свойства «onSelect» кнопки отправки установлено значение SubmitForm(Form1) .

У меня есть две проблемы с вышеуказанным процессом

  1. Когда пользователь нажимает кнопку Отправки, предыдущая запись в таблице Excel перезаписывается. Я также хотел бы сохранить предыдущие записи
  2. При повторном открытии Screen2 все предыдущие записи не становятся понятными

Обновление после комментария Аруна

Код, предложенный Arun для создания и обновления, — это не то, что я ищу. Код создания добавляет две новые строки в таблицу Excel. Код обновления удаляет последнее присвоенное значение. Я ищу способ Powerapps , при котором PowerApps код сначала найдет строку в приведенном ниже регистре «Sys1» и обновит эту строку как «User1» и «Mod1» для столбца. Допустим, «Пользователь1» хочет добавить другую модель для строки «Sys1», она будет добавлена в нижней части таблицы Excel, как показано на рисунке 2. Рисунок 2 — мой желаемый результат. Рисунок 1 — моя исходная таблица Excel.

Рисунок 1 Исходная таблица Excel (источник данных)

введите описание изображения здесь

Рисунок 2: Ожидаемый результат

введите описание изображения здесь

Комментарии:

1. итак, что вам нужно, так это блок «if, else», если запись уже есть — обновление исправления, создание исправления Else, как в моем ответе 🙂

2. @ArunVinoth.. Я думал о том же, но не был уверен, как это написать? Если возможно, не могли бы вы помочь в этом? Заранее спасибо! 🙂

3. обновил свой ответ, я его не тестировал. пожалуйста, проверьте

4. @ArunVinoth Спасибо за обновление ответа. Каждый раз, когда я запускаю отредактированный код, выполняется только условие Else («Создать» код). Не уверен, в чем проблема?

5. К сожалению, теперь отредактированный код выполняет только условие FALSE condition (Create). 🙁 Попытаюсь проверить вашу ссылку.

Ответ №1:

Вы должны использовать Patch для записи / добавления в файл Excel вместо SubmitForm(Form1) .

Для создания:

 Patch(ExcelSource, 
Defaults(ExcelSource), 
{NameColumn: TextInput.Text, SurveyResultColumn: Value})
  

Для обновления:

 Patch(ExcelSource, 
LookUp(ExcelSource, NameColumn=TextInput.Text), 
{NameColumn: TextInput.Text, SurveyResultColumn: Value})
  

Подробнее

Редактировать:

Пожалуйста, замените ваши имена и значения элементов управления, я попробовал свои лучшие предположения 🙂

 If(CountRows(Filter(Table1, System=SystemControl.Text amp;amp; Model=""))>0, 
    Patch(Table1,LookUp(Table1, System=SystemControl.Text amp;amp; Model=""), {Model: DatacardValue10.Text, UserName: UserControl.Text}), 
    Patch(Table1,Defaults(Table1),{System:SystemControl.Text, Model: DatacardValue10.Text, UserName: UserControl.Text}))
  

Ссылка

Комментарии:

1. Спасибо за ответ! Я попробовал приведенный выше код, и по какой-то причине я получаю сообщение об ошибке, в котором говорится: «Поле с именем «Pr» было указано более одного раза в этой записи». Код, который я пробовал, был Patch(Table1,LookUp(Table1,Pr=DatacardValue10.Text),{Pr:DatacardValue10. Текст, Pr:Datacardvalue10}). Здесь Pr = имя столбца. Любое предложение, что не так с моим приведенным выше кодом? Заранее спасибо!

2. @biggboss2019 попробуйте это: Patch(Table1,LookUp(Table1,Pr=DatacardValue10.Text),{Pr:DatacardValue10.Text}) . У вас есть Pr: который присваивается дважды 🙂

3. Спасибо! Похоже на нажатие кнопки отправки. Я не могу сохранить свою запись в своем Excel. Значение по умолчанию для DatacardValue10 равно » «. Есть предложения?

4. @biggboss2019 да, правильно. Попробуйте жестко закодировать какое-то значение и сначала посмотрите.

5. Кроме того, я думаю, что мой вопрос был неправильно понят. Что я ищу, так это то, что первая форма PowerApp найдет строку с «системной» строкой. Скажите «Sys1» и обновите эту строку информацией о модели. В следующий раз, когда пользователь снова выберет «Sys1», введенная пользователем информация будет добавлена в новую строку.