
Моя БД содержит всего четыре таблицы:
- Parts - Основная таблица, в ней хранятся данные о комплектующих, и внешние ключи на остальные три таблицы
- Types - Типы комплектующих (Процессор, видеокарта и т. д.)
- Conditions - Состояния этих комплектующих (Новые, б/у, на детали, и т. д.)
- Storages - Хранилища (по-русски, пронумерованные коробки и полки) где эти детали лежат
Для подключения к БД использую 4 штуки TSQLite3Dataset идущий в стандартной поставке Lazarus'а и четыре TDataSource для связи с визуальными компонентами - их я вынес в отдельный Data Module.
Теперь суть вопроса: При добавлении в любую из трёх таблиц справочников (Types, Conditions, Storages) новой записи, и попытке вслед за этим добавить запись в основную таблицу Parts (например, я сначала добавил в БД в таблицу Storages новое место хранения, а затем сразу же хочу добавить деталь в таблицу Parts) компонент TDBLookupComboBox связанный с изменённой таблицей во первых сразу-же отображает текст новой записи, а самое главное она не вставляет в поле указанное в DataField внешний ключ новой записи. Если ничего не добавлять в другие таблицы, а сразу же добавить деталь в таблицу Parts - никаких проблем. Всё также работает если добавить например данные о складе или состоянии в соответствующие таблицы, перезапустить программу а после добавлять данные в таблицу Parts. И на сколько я понял, при удалении или изменении данных, такого эффекта не наблюдается. Пробовал Перед отображением формы добавления новой записи в таблицу Parts выполнять в разной последовательности методы Refresh, RefetchData всех компонентов TSQLite3Dataset, метод Refresh компонентов TDBLookupComboBox - ничего не изменилось. Запись данных в БД при вставке новых записей в смежные таблицы происходит однозначно - открывал БД в SQLiteStudio 3.0.7 - запись появляется. Где-то читал, что нужно закрыть и заново открыть датасеты, но лично мне кажется это не логичным влечёт кучу дополнительных проблем, в виде не открытого вовремя датасета..
Вот иллюстрация для наглядности.

Чем вызвано подобное поведение, и как решить данную проблему. Совсем отчаялся разобраться. Всем заранее большое спасибо! Простите за много букв.