Вопрос скорее из серии "
реально ли...", а не "как".
Инструменты: MySQL DB, ADO, MySQL ODBC Connector 5.3 (в качестве драйвера соединения)
Есть простой запрос в несколько JOIN'ов, которым в ADODataSet запихиваются данные.
Для примера: пусть будет таблица Документы и таблица Контрагенты, связанные по: Документы.КонтрагентID = Контрагент.ID. в ADODataSet выполняется запрос:
Код:
SELECT
Контрагенты.ID AS КонтрагентID,
Контрагенты.Название AS контрагентНазвание,
Документы.ID AS ДокументID,
Документы.КонтрагентID AS ДокументКонтрагентID,
Документы.Номер AS ДокументНомер
FROM
Контрагенты
JOIN Документы
ON Документы.КонтрагентID = Контрагенты.ID
У меня задача, дать пользователю возможность изменить владельца документа из интерфейса программы.
Делаю я это вызовом диалогового окна, где просто меняется значение Документы.КонтрагентID:
Код:
ADODataSet.Edit;
ADODataSet['ДокументКонтрагентID'] := новыйКонтрагентID;
ADODataSet.Post;
Но в момент ADODataSet.Post появляется ошибка:
Цитата:
недостаточно сведений о ключевом столбце для обновления
|
Исходя из информации гугла, суть оказалась в том, что ADO криво обрабатывает вот это выражение из запроса:
Код:
ON Документы.КонтрагентID = Контрагенты.ID
и не может найти логическую связь между таблицами, как следствие пропадает возможность редактировать данные "на ходу" в объединённых таблицах.
Так вот,
реально ли как-то заставить этот механизм работать?
И может быть у кого-то есть рабочий пример с подобными махинациями?