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+ хранимых процедур.