PowerApps 数据源更改为存储过程

PowerApps Data Source Changed to Stored Procedure

PowerApps 库中的数据源是 SQL 视图。

Search('[dbo].[vwCandidate]', textSearchCandidate.Text, "NameLast", "NameFirst", "MiscellaneousTags", "EmailAddress", "PhoneNumber")

所选记录填充了表单项的全局变量。

Set(varCandidate, gallerySearchResults.Selected)

一切正常。然后,我更改了数据源以使用存储过程将搜索从 PowerApps 移动到 SQL 服务器。这样做之后,我收到了错误消息

"Incompatible Type. We can't evaluate your formula because the context variable types are incompatible with the types of the values in other places in your app"

我无法在不出现相同错误的情况下恢复到正常工作的视图。我希望我唯一的选择是不使用新变量并更改 form/App 中的每一次出现。如果可能的话,我想避免这种情况。

我无法查看表单,所以我不确定如何正确调试。我的预感是通过 Flow 返回的日期字段导致了问题。它们是 'smalldatetime' 类型,即使正在请求 'date',Flow 也会返回字符串“yyyy-mm-ddThh:mm:ss.000”。

"PhoneNumber": {
  "type": "string"
},
"CandidateStatus": {
  "type": "string"
},
"DateApplied": {
  "type": "string",
  "format": "date"
},

Flow JSON 这里似乎不喜欢任何其他 'date' 格式类型。

Flow 是否有任何解决方法?设置全局变量时是否应该重新格式化日期值?有什么建议吗?

  1. 重置所有内容,包括数据源,然后保存并完全关闭应用程序,重新测试。

  2. 删除所有流连接然后保存并完全关闭应用程序,重新测试,然后重新添加流连接。

我不明白为什么,但 PowerApps 有时会持续出现数据连接错误,直到您关闭该应用程序。

并且只是为了确认 PowerApps 不支持存储过程作为数据源,仅支持使用补丁函数等进行写入。

事实证明,我认为 DATE 数据类型来自 Flow 作为字符串是正确的。原因如下:

在设置全局变量时使用 Patch 函数创建了一条新记录:

Set(varCandidate, Patch('[dbo].[candidate]', Defaults('[dbo].[candidate]'), {DateApplied: DateTimeValue(Text(Now())), CreatedDate:DateTimeValue(Text(Now())), CreatedBy:varUser.Email}))

"DateApplied" 字段是 SQL table 中的 "DATE" 类型,它作为字符串“2019-03-13T17:40: 52.000"。当我想编辑记录时,Flow 的记录集被设置为相同的全局变量

Set(varCandidate, gallerySearchResults.Selected)

错误 "Incompatible Type"(请参阅问题了解完整的错误消息)是由于该字段在新记录中是 "Date Value" 而在编辑记录中是 "string"。

我的解决方法是从补丁中删除此 "Date" 类型字段并修改流程以按 ID 检索新创建的记录记录。