|
|
|
Лена |
|
|||
Опытный Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Нажимаю на кнопку стандартного компонета навигатора удалить запись (набор ClientDataSet). Пытаюсь обработать нажатие показом диалогово окна:
Запись удаляется и при нажатии Да и при нажатии Нет. Почему удаляется при нажатии Нет? |
|||
|
||||
Vyacheslav |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Вы же это этот код поставили на обработчик BeforeDelete
Он выполняется, а дальше идет удаление Попробуйте это перенести на AfterDelete Добавлено @ 15:07 Я бы кстати сделал проще
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
Лена |
|
|||
Опытный Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Спасибо!
Но есть вопросы Мне пока не понятно логика работы ClientDataSet я удалила записи используя навигатор. Затем нажала кнопку refresh навигатора и все записи вернулись. Что дописать? P.S. Пока писала получила от вас код. Наверное решение это событие AfterDelete? Это сообщение отредактировал(а) Лена - 21.9.2006, 15:16 |
|||
|
||||
Vyacheslav |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Точно.
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
Лена |
|
|||
Опытный Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Нет не понятно.
Как сделать так (какие события написать), чтобы записи удалясь и не появлялись после нажатия refresh в навигаторе? Если запись удалена навигатором, то сразу должна быть удалена из базы с которой связан ClientDataSet. Например, я удаляю запись. Нажимаю в навигаторе Утвердить. Затем нажимаю рефреш и запись снова появляется. Получается кнопка навигатора Утвердить не отрабатывает? P.S. Код добавила, но записи появляются:
Это сообщение отредактировал(а) Лена - 21.9.2006, 15:32 |
|||
|
||||
Vyacheslav |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Кнопки "Утвердить" - нет. Естб кнока Post - завершить вставку или редактирование записи с сохранением результата редактирования.
Основная проблем, как я понимаю, не дейсвует ClientDataSetKey->ApplyUpdates(-1)? -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
Лена |
|
|||
Опытный Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
>кнока Post
Да Post. Моя задача такая: в гриде данные идущее из базы через связку ADOQuery -> TDatasetProvider -> TClientDataset -> TDatasource. Я хочу, чтобы навигатор не посредственно воздействовал на отображаемые данные и на саму базу данных. Если пользователь добавил строку, то при переходе на другую строку или при нажатии кнопки Post все это закреплялось и в гриде и в самой базе данных. т.е. если пользователь нажмет refresh то ничего не произойдет, потому что каждое действие навигатора он воздействует и на грид и на базу. Так же и при редактировании: пользователь отредактировал запись, перешел на другую все закрепилось и в гриде и в базе, также и при удалении строк ( в общем все кнопки редактирования у навигатора). Хочется чтобы все кнопки навигатора воздействовали и на грид и на базу. Я просто запуталась с многочисленными событиями Before/After... помогите |
|||
|
||||
Vyacheslav |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Ну если c ApplyUpdates все в порядке,
то достаточно поставить два обработчика
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
Лена |
|
|||
Опытный Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Cейчас у меня такой код:
Запускаю приложение в гриде 4 записи. 1. Удаляю одну из них. 2. Подтвеждаю удаление. 3. Нажимаю refresh и снова выпазить строка которую я удалила. Если перезапустить приложение то строки действительно удалена, не понятно, почему она появлалась после refresh до перезапука приложения? Как заставить навигатор намертво фиксировать каждое свое действие? Если строка удалена то никаким refresh ее уже не увидеть в этой ссесии. Это сообщение отредактировал(а) Лена - 21.9.2006, 17:29 |
|||
|
||||
Vyacheslav |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
А дело не в навигаторе, а в том, что у Вас провайдер неверно обновляет. Он где то закешировал данные. Кстати, ошибка на refresh - очень чато встречающийся баг в реализации. Надежнее будет вместо refresh просто закрыть-открыть таблицу.
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
Лена |
|
|||
Опытный Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
>что у Вас провайдер не верно обновляет.
Cпасибо, теперь понятно, а то я уже начала тихо ненавидеть ClientDataSet У меня настроено на базу данных на PostgreSQL. Решила так: запретила кнопку refresh и теперь все работает и выглядит как надо. |
|||
|
||||
Vyacheslav |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Я бы всетаки реализовал вариант с переоткрытием соответсвенно задав обработчик BeforeRefresh. Если бы был простая таблица, то это бы выглядела вот так
Тогда бы и кнопка refresh работа нормально Но у Вас используется провайдер, насколько я понял. Там сложнее. Вернее не сложнее, но я подзабыл уже все. Больше двух лет с Builder и с базами не работаю -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
Embesse |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 26.1.2023 Репутация: нет Всего: нет |
Модератор: Сообщение скрыто. |
|||
|
||||
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |