Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2012, 09:18   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос MemTableEh

Добрый день! Открыл таблицу для редактирования записей через этот компонент. Отредактировал. Через DBNavigator сделал пост (кнопка с галочкой), но изменения в БД не сохранились. В DBGridEh видны, а в базе данных не комитится. В чем дело?
Использую Interbase, но подключаюсь к FDB файлу.

----
Разобрался в чем дело. Протестировал не тестовой базе (gdb) и выяснил, что нужно было переподключиться к базе данных, чтобы сохранились изменения. Только не понятно почему надо так делать. Может это как-то в свойствах настраивается какого-либо компонента? С тестовой базой работаю с компонентами: IBDatabase1,IBTransaction1,MemTable Eh1,IBXDataDriverEh1.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 16.09.2012 в 11:39.
artemavd вне форума Ответить с цитированием
Старый 16.09.2012, 13:14   #2
astecenko
Homo Interneticus
Форумчанин
 
Аватар для astecenko
 
Регистрация: 04.03.2011
Сообщений: 611
По умолчанию

MemTableEh это ж временная таблица в памяти. Из официального хелпа:
Цитата:
TMemTableEh dataset, который держит все данные в памяти. Его можно рассматривать как массив записей.
Кроме того, он:
Поддерживает специальный интерфейс, позволяющий компоненту DBGridEh просматривать все данные, не перемещая активную запись.
Позволяет закачивать в себя данные из объекта TDataDriverEh (свойство DataDriver).
Позволяет выгружать изменения обратно в DataDriver, оперативно или отложено (в зависимости то свойства CachedUpdates).
Позволяет создавать мастер/дитэил отношения на клиенте (фильтруя записи) или на внешнем источнике (обновляя параметры [Params] и перезапрашивая данные c DetailDataDriver'а).
Позволяет сортировать данные, включая Calculated и Lookup поля.
Позволяет создавать и заполнять данные в design-time и сохранять данные в dfm файле формы.
Позволяет хранить записи в виде дерева. Каждая запись может иметь записи узлы/ветви и сама являться узлом другой родительской записи. Компонент TDBGridEh поддерживает функциональность отображения древовидной структуры этих записей.
Позволяет подключиться к внутреннему массиву другого компонента TMemTableEh (свойство ExternalMemData) и работать с его данными: сортировать, фильтровать, редактировать.
Имеет интерфейс для получения списка всех значений столбца, игнорируя локальный фильтр датасета. TDBGridEh использует это свойство для автоматического формирования списка в выпадающем DropDownBox"е фильтра.
astecenko вне форума Ответить с цитированием
Старый 16.09.2012, 13:45   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

т.е. получается, что я редактирую данные в памяти, а не в самой таблицы базы данных? Как тогда применить изменения, чтобы они сохранились в базе?
Создал все запросы как надо: на обновление, на выборку, на вставку и т.д. Но при попытки сделать обычный Post получаю Deadlock с текстом таким:
Изображения
Тип файла: png Ошибка.png (11.4 Кб, 218 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 16.09.2012 в 19:38.
artemavd вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц