Power APP 写入头和行两张表如何做到的

报销单分为头和行, 是一对多关系, 那么在写入行的时候如何获取头的ID 写入来保证逻辑上的关联关系呢? 这里引入了全局变量Record的使用

我们拿微软的案例来说话,

点击创建报销单头的时候 , 如图

报销单头create 时候的动作

用了 Set(SelectedReport2, Last(Expenses2)); 方法设置 ,但是 这个SelectedReport2 是一个表吗,不是, 他和Expence2 不一样,后者数据源是sharepoint .

SelectedReport2 是一个全局变量Record

SelectedReport2使用

里面有这么多属性:

这个例子非常好列出来增删改查的4种情况如何使用, 分别是:

查询 Set(SelectedReport2,ThisItem);

新增 Collect(Expenses2, {ApproverName: First(DataCardValue3_1.SelectedItems).Value, CostCenter: First(DataCardValue8_1.SelectedItems).Value, DateSubmitted: Now(), EndDate: DataCardValue6_1.SelectedDate, ID: Text(CountRows(Expenses2) + 1), StartDate: DataCardValue5_1.SelectedDate, Status: “Open”, Title: DataCardValue1_1.Text});
Set(SelectedReport2, Last(Expenses2));

删除

Remove(LineItems2,Filter(LineItems2,ReportID=SelectedReport2.ID));

Remove(Expenses2,First(Filter(Expenses2,ID=SelectedReport2.ID)));
Set(SelectedReport2, Blank());

Set(SelectedLineItem2, Blank());

修改

UpdateIf(Expenses2, ID = SelectedReport2.ID,
{ApproverName: First(DataCardValue9_1.SelectedItems).Value, CostCenter: First(DataCardValue9_2.SelectedItems).Value, EndDate: DataCardValue29_1.SelectedDate,
StartDate: DataCardValue28_1.SelectedDate, Title: DataCardValue24_1.Text});
Set(SelectedReport2, LookUp(Expenses2, ID = SelectedReport2.ID));
Back()

那么行新增的时候如何把头ID 放入?

其他对于行的操作(删除,修改)只是对于行记录SelectedLineItem2 来操作, 和头ID 无关。

细节需要注意,就是collect 方法写入什么, 那么到全局的Record 里面,就有什么数据, 比如ID 最重要的,在collect方法的时候需要写入

将ID 写入record

如果不写入,RECORD 里面没有

这里有个疑问, 如果COLLECT 的时候不写入ID , 那么查出来之后写到 RECORD里面行吗?

Set(SelectedReport.ID , Last(Expense_Reimbursement_Headers.ID));

好像只能整条记录去写不能单独写记录里面的一个字段?

似乎访问的时候用 SelectedReport.ID 就行,写入就不行?

同时 countrow方法,SharePoint 不支持。。。

//Update(SelectedReport.ID, Last(Expense_Reimbursement_Headers).ID); 也不行 ,语法错误

先用collect 写入SHAREPOINT , 然后用

Patch( SelectedReport, Last(Expense_Reimbursement_Headers), { ID: Last(Expense_Reimbursement_Headers).ID } );

似乎可以了,哈哈

Last(Expense_Reimbursement_Headers) 这个语句只能取表的数据, 不能取RECORD的数据。

SelectedReport 加一个ID, ID值是刚写入表这条记录, 值也是刚写入表这条记录的值。好绕口的感觉

Leave a Reply

Your email address will not be published. Required fields are marked *