Padre_Mortius писал(а):Ну тогда подкину вам пример где поле ID желательно:
у вас есть два клиента Иванов Иван Иванович. Один заведен раньше, а другой позже. И вам нужно выбрать именно правильного клиента при заведении договора. Как вы их отличать будете?
У решений №1-№2 такой проблемы нет. Решение №3 - сугубо как пример неудачного подхода. Поле ID нужно в любом случае, конечно.
Padre_Mortius писал(а):А по поводу скрытия полей.. Никто вам не мешает заполнять DBGrid нужными полями (TColumns) при работе программы (настройка DBGrid может происходить при создании формы).
А зачем это может понадобится?
Padre_Mortius писал(а): Но работать нужно не с данными в DBGrid, а имено с данными в датасете и работайте с вашими невидимыми полями себе в удовольствие.
ДБГридов у меня нет. Обхожусь StringGrid'ами, в которые сам загружаю данные с помощью sqlite3_exec из модуля sqlite3. Это позволяет разбить приложение на модуль взаимодействия с БД и модули пользовательского интерфейса, обрабатывающие нажатия на кнопки и т. п.
Если делать на database-aware компонентах и датасетах во-первых, замаюсь с глюками, во-вторых, сложно будет отделить взаимодействие с БД от работы с пользовательским интерфейсом. Либо будет свалка из датасетов на все случаи жизни.