【问题标题】:PowerApps Data Source Changed to Stored ProcedurePowerApps 数据源更改为存储过程
【发布时间】:2019-07-22 22:10:28
【问题描述】:

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

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

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

Set(varCandidate, gallerySearchResults.Selected)

一切都按预期进行。然后,我更改了数据源以使用存储过程将搜索从 PowerApps 移动到 SQL Server。这样做后我收到了错误消息

“不兼容的类型。我们无法评估您的公式,因为上下文 变量类型与其他值的类型不兼容 应用中的位置”

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

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

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

这里的流 JSON 似乎不喜欢任何其他“日期”格式类型。

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

【问题讨论】:

    标签: sql flow powerapps


    【解决方案1】:

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

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

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

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

    Set(varCandidate, gallerySearchResults.Selected)
    

    错误“不兼容的类型”(请参阅​​问题以获取完整的错误消息)是由于此字段在新记录中是“日期值”,而在编辑记录中是“字符串”。

    我的解决方法是从补丁中删除这个“日期”类型的字段并修改流程以通过 ID 检索新创建的记录记录。

    【讨论】:

      【解决方案2】:
      1. 重置一切,包括数据源,然后完全保存并关闭应用程序,重新测试。

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

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

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

      【讨论】:

      • 是的,我曾经经历过这种类型的“神器”。我删除了所有 SQL 连接和 Flow。然后,我使用不同的浏览器连接到 SQL 并重写了 Flow。不幸的是,这并没有解决问题。谢谢@RickWeb
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多