AnyDac или FireDac не может сгенерировать запрос на обновление

Я долгое время использовал UniDac и решил перейти на FireDac, так как он имеет хорошие методы Asynch, после чего я увидел, что ни одно из моих редакторов данных больше не работает, это выдает мне ошибку:

[FireDAC] [Phys] -330. Невозможно сгенерировать запрос на обновление. Обновление таблицы не определено.

То, что я пытаюсь сделать здесь, это то, что у меня есть компонент TFDStoredProc, который получает все данные из базы данных и позволяет мне редактировать их, с помощью unidac я могу легко редактировать данные без каких-либо проблем, как это:

StoredProc.Edit;
StoredProcCreatedID.Value := SomeValue;
StoredProc.Post;

и это работало, но с AnyDac это не так, я попытался вручную указать UpdateTable, что приводит к другой проблеме:

[FireDAC] [Phys] [ODBC] [Microsoft] [Собственный клиент SQL Server 11.0][SQL Server] Недопустимое имя столбца "CreatedID".

Я использую Microsoft SQL Server 2012 FireDac 8.0 и хранимые процедуры для получения результатов, есть идеи?

PS

Запрос выглядит так

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

похоже, что построитель обновлений FireDac не распознает псевдонимы полей, любая помощь будет признательна.

1 ответ

Решение

Ну, я выяснил, в чем проблема, кажется, что если вы зададите псевдоним в запросе для поля, свойство Origin будет иметь псевдоним, а не реальное поле, которое я скачал. CNPack, который должен иметь разработчик Delphi, а также его бесплатный, запустил селектор компонента и изменил все мои псевдонимы полей на их настоящие поля, и это работает, но это все еще большая проблема в компоненте FireDac, потому что он не распознает псевдонимы полей, будем надеяться, что это будет исправлено в будущем, как указать для каждый запрос, какую таблицу следует обновить и какие поля просто распределяют, если вы переходите с большого проекта, в моем случае 220+ хранимых процедур.

Другие вопросы по тегам