如何在PowerApps中通过SOPNUMBER关联创建嵌入式父子表单

PowerApps 基于SOPNUMBER关联父子表单实现方案
一、父表SOPNUMBER值传递到子表配置
- 先存储当前生效的SOPNUMBER值,根据单号生成规则选对应配置即可:
- 如果SOPNUMBER是父表提交到SQL后自动生成的编号,找到父表Edit Form控件,在它的
OnSuccess属性写以下公式,提交成功后自动把最新生成的单号存为全局变量:Set(CurrentSOPNumber, Self.LastSubmit.SOPNUMBER) - 如果SOPNUMBER是用户在父表SOPNUMBER输入框(即你提到的DataCardValue8)手动录入的,在触发打开子表/子表单的按钮
OnSelect属性写公式,跳转前先存下单号:Set(CurrentSOPNumber, DataCardValue8.Text); // 跳转到子表单独立页面时加这行,同屏放置两个表单不需要加 Navigate(SalesOrderItemScreen)
- 如果SOPNUMBER是父表提交到SQL后自动生成的编号,找到父表Edit Form控件,在它的
- 打开子表的Edit Form,找到SOPNUMBER字段对应的数据卡片,将卡片的
Default属性设置为CurrentSOPNumber即可自动带入单号。如果不需要用户修改子表的关联单号,直接把该数据卡片的DisplayMode设为DisplayMode.View,或者设置Visible为false隐藏卡片,提交表单时关联值会自动写入SQL,不需要额外处理。
二、按SOPNUMBER筛选对应明细数据配置
- 用来展示销售订单明细的Gallery控件,直接把
Items属性设置为以下公式即可,用全局变量比直接绑定表单控件值更稳定,不会因为表单重置、控件状态变化导致筛选异常:Filter(SOP10200, SOPNUMBER = CurrentSOPNumber)
注意:如果SQL中SOPNUMBER字段是数值类型而非文本类型,直接匹配变量值即可,不要引用控件的
.Text属性,避免出现类型不匹配报错。
避坑提示
- 父表为新建模式时,必须等父表单提交成功(
OnSuccess事件触发)后再允许用户提交子表单数据,否则会拿到空SOPNUMBER导致关联失败。可以把子表单提交按钮的DisplayMode设为If(IsBlank(CurrentSOPNumber), DisplayMode.Disabled, DisplayMode.Edit),空值状态下禁止提交。 - 同屏放置父子两个表单不需要跳转页面的场景,可以不用全局变量,直接将子表SOPNUMBER卡片的
Default绑定父表对应输入控件的值即可,逻辑和上述一致。
内容的提问来源于stack exchange,提问作者Desmond Sim
相关产品推荐
相关产品推荐

