PowerApps如何将录入空表的数据以JSON传入SQL Server存储过程

实现方案
核心逻辑是用Power Apps本地集合作为临时存储的内存表,不需要提前绑定外部数据集,完全满足先本地批量录入、再统一提交到SQL的需求,具体步骤如下:
初始化临时存储集合
在App的OnStart属性写入以下代码,启动应用时创建一个和你要录入字段匹配的空结构化集合:ClearCollect( colTempRecords, { Name: "", Amount: 0, Measure: "" } ); // 移除初始化生成的空行,得到完全空白的结构化临时表 Remove(colTempRecords, First(colTempRecords))你界面下方用来展示录入数据的Data Table/Gallery控件,直接把
Items属性设置为colTempRecords即可,不需要绑定任何外部数据源。配置OK按钮的录入逻辑
把OK按钮的OnSelect属性设置为以下代码,点击时把输入框内容写入临时集合,同时重置输入框方便下一条录入:// 将当前输入框内容写入临时集合 Collect( colTempRecords, { Name: txtName.Text, // 替换为你界面上Name输入框的实际控件名 Amount: Value(txtAmount.Text), // 替换为你界面上Amount输入框的实际控件名 Measure: txtMeasure.Text // 替换为你界面上Measure输入框的实际控件名 } ); // 重置所有输入框 Reset(txtName); Reset(txtAmount); Reset(txtMeasure);写完后每次点OK,新录入的行会即时显示在下方的表控件里。
配置Save按钮的提交逻辑
把Save按钮的OnSelect属性设置为以下代码,将临时集合转成JSON传入SQL存储过程:// 将临时集合转为JSON格式字符串 Set( varSubmitJson, JSON(colTempRecords, JSONFormat.IgnoreBinaryData) ); // 调用已连接的SQL Server存储过程,传入JSON参数 // 请替换为你实际的SQL连接名、存储过程名、参数名 [你的SQL连接名称].[你的存储过程名称]( { json: varSubmitJson } ); // 提交成功后清空临时表,弹出提示 Clear(colTempRecords); Notify("所有数据已提交完成", NotificationType.Success, 3000);
注意:提前在Power Apps中添加对应SQL Server的数据源连接,确保存储过程的
@json参数类型为nvarchar(max),和传入的JSON字符串格式匹配即可,SQL端直接用OPENJSON解析参数就能拿到所有录入的行数据。
内容的提问来源于stack exchange,提问作者matt_vice89
相关产品推荐
相关产品推荐

