使用Patch函数向归档表传输信息出错,求排查指导
Power App Patch函数错误修正与使用指导
错误原因分析
- “Text”未被识别:你直接引用了数据卡(如
dcv_unit)的Text属性,但数据卡控件本身没有Text属性,需要引用数据卡内部输入控件的对应属性,或直接使用数据卡的Value属性(数据卡的Value已绑定输入值)。 - Patch参数无效:由前一个错误导致参数类型不匹配,进而触发整体参数无效提示。
- 类型不匹配(Record→Text):下拉框的
Selected返回的是完整记录,但归档表的PC、SOFTWARE、USER字段是文本类型,需要提取记录中的具体文本值。
修正方案
方案1:修正控件属性引用
直接调整Patch公式中各字段的取值方式,确保类型匹配:
Patch( table_archive, // 确保这是你通过变量设置的归档表 Defaults(table_archive), { UNIT: dcv_unit.Value, // 用数据卡的Value属性替代Text MACHINE: dcv_machine.Value, SOFTWARE: dcv_software.Selected.Value, // 提取下拉框选中项的文本值 PC: dcv_pc.Selected.Value, USER: dcv_user.Selected.Value, LOG: dcv_log.Value, DATE: Today() } ); SubmitForm(form_machinedetail); Navigate(screen_success);
注意:如果下拉框的
Items是来自数据表的特定字段(而非单值列表),需要将Selected.Value替换为对应的字段名,比如dcv_pc.Selected.PC_Name,具体根据你下拉框的数据源字段调整。
方案2:利用表单LastSubmit属性(更可靠)
先提交表单,再通过form_machinedetail.LastSubmit获取提交的完整记录,直接映射到归档表,避免逐个引用控件的错误:
SubmitForm(form_machinedetail); // 确保表单提交成功后再执行Patch If( form_machinedetail.SubmitSuccess, Patch( table_archive, Defaults(table_archive), { UNIT: form_machinedetail.LastSubmit.UNIT, MACHINE: form_machinedetail.LastSubmit.MACHINE, SOFTWARE: form_machinedetail.LastSubmit.SOFTWARE, PC: form_machinedetail.LastSubmit.PC, USER: form_machinedetail.LastSubmit.USER, LOG: form_machinedetail.LastSubmit.LOG, DATE: Today() } ); Navigate(screen_success); )
这种方式的优势是完全复用表单提交的数据源值,避免控件取值与表单绑定值不一致的问题。
关键注意事项
- 确认
table_archive确实是你通过导航按钮设置的变量,变量类型必须是数据表。 - 归档表的字段类型需与源表完全匹配,比如源表的
SOFTWARE是文本类型,归档表对应字段也必须是文本类型。 - 如果需要记录操作的精确时间而非日期,可将
Today()替换为Now()。
内容的提问来源于stack exchange,提问作者heiavieh
相关产品推荐
相关产品推荐

