我已经使用 UniDac 很长时间了,决定转向 FireDac,因为它具有良好的异步方法,继续使用后我发现我的数据编辑不再起作用,它给了我一个错误:
[FireDAC][物理]-330。无法生成更新查询。更新表未定义。
我在这里想做的是我有一个 TFDStoredProc 组件,它从数据库获取所有数据并让我编辑它,使用 unidac 我可以轻松编辑数据,没有任何问题,如下:
StoredProc.Edit;
StoredProcCreatedID.Value := SomeValue;
StoredProc.Post;
它有效,但使用 AnyDac 则不行,我尝试手动指定 UpdateTable,这导致了另一个问题:
[FireDAC][Phys][ODBC][Microsoft][SQL Server Native Client 11.0][SQL Server]列名“CreatedID”无效。
我正在使用 Microsoft SQL Server 2012 FireDac 8.0 和存储过程来获取结果,有什么想法吗?
附注
查询看起来像这样
SELECT
CreatedBy as CreatedID,
usr.UserName as CreatedBy
FROM
Sales
LEFT JOIN
Users usr ON usr.ID = Sales.CreatedBy
FireDac 更新构建器似乎无法识别字段上的别名,任何帮助将不胜感激。
好吧,我弄清楚了问题是什么,似乎如果您在字段的查询中指定别名,则 Origin 属性将设置为别名,而不是我下载的真实字段 CNPack 必须具有delphi 开发人员也是免费的,运行组件选择器并将所有别名字段更改为其真实字段并且它可以工作,但这仍然是 FireDac 组件中的一个大问题,因为它无法识别别名字段,希望它能在未来,如果您从一个大项目(在我的例子中是 220 多个存储过程)迁移,则为每个查询指定应该更新哪些表以及哪些字段只分配工作。
查看数据库的事务隔离级别。可能它被设置为 READ UNCOMMITTED