Это не связано с dbGrid, это ваш набор данных (adoQuery1), который выполняет действие.dbGrid просто визуализирует ваши записи набора данных.
Убедитесь, что во всех ваших таблицах есть поля первичного ключа.Я полагаю, вам также следует включить первичные ключи обеих объединенных таблиц в оператор SELECT.
В Microsoft ADO существует известная ошибка, в которой я не уверен, исправлена ли она в последней версии или нет;то есть:
Ошибка: проблема обновления иерархического набора записей ADO, когда объединяемые таблицы совместно используют одно и то же имя столбца
Он сообщает, что первичный ключ в одной таблице имеет то же имя, что иодно из полей в другой таблице, и таблицы объединяются, и вы можете получить эту ошибку " Недостаточно информации о ключевом столбце для обновления или обновления. ".
Кстати, в вашемОператор SELECT, у вас уже есть tblMessages. *, Почему вы тоже включили tblMessages.Directions?