AnyDac aka FireDac无法生成更新查询

时间:2014-06-30 19:14:11

标签: delphi sql-server-2012 firedac anydac

我现在正在使用UniDac很长一段时间并决定继续使用FireDac,因为它具有良好的Asynch方法,在继续之后,我发现我的数据编辑工作不再有任何错误:

  

[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和存储过程来获取任何想法的结果吗?

P.S。

查询看起来像这样

SELECT 
    CreatedBy as CreatedID,
    usr.UserName as CreatedBy
FROM 
    Sales
LEFT JOIN 
    Users usr ON usr.ID = Sales.CreatedBy

看起来FireDac更新构建器无法识别字段上的别名,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

我发现问题是什么,似乎如果在查询中为字段指定别名, Origin 属性将设置为别名而不是我下载的真实字段< strong> CNPack 对于delphi开发人员来说也是必须的,它是免费的,运行组件选择器并将所有别名字段更改为真实字段并且它可以工作,但这仍然是FireDac组件中的一个大问题,因为它无法识别别名字段,让我们希望它将来会被修复,以便为每个查询指定它应该更新哪个表,以及如果你从我的案例220+存储过程中的大项目迁移那些分配的工作字段。