powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как удалить запись из TClientDataSet не удаляя её из базы?
15 сообщений из 15, страница 1 из 1
Как удалить запись из TClientDataSet не удаляя её из базы?
    #39842129
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вызываем Open - открываем TDataSet, отображаем данные из базы в TDBGrid, связывая через источник данных TDataSource. Всё как обычно. Теперь нужно просто в гриде не показывать определённую запись. Вызывать метод TDataSet.Delete нельзя, т.к. он удаляет запись в базе, а этого не нужно. Наверное как то можно фильтровать TDataSet после инициализации действия по скрытию записи. Но можно ли как то в самом гриде удалить из него строчку?
...
Рейтинг: 0 / 0
Как удалить запись из TClientDataSet не удаляя её из базы?
    #39842159
Фотография LocksmithPC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
verter, добавить в таблицу поле fShow и использовать TQuery с select * from table where fshow = 1
...
Рейтинг: 0 / 0
Как удалить запись из TClientDataSet не удаляя её из базы?
    #39842188
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
verter,

у вас в заголовке вопроса написано TClientDataSet, а в самом вопросе - TDataset. Так какой у вас конкретно Dataset? Если ClientDataSet, то там ведь изменения посылаются провайдеру только при вызове метода ApplyUpdates.

Можно спрятать какие-то записи в любом Dataset'е при помощи фильтрации, см. свойство Filtered и событие OnFilterRecord.
...
Рейтинг: 0 / 0
Как удалить запись из TClientDataSet не удаляя её из базы?
    #39842446
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
verter, см. cds.LogChanges
...
Рейтинг: 0 / 0
Как удалить запись из TClientDataSet не удаляя её из базы?
    #39842603
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LocksmithPCverter, добавить в таблицу поле fShow и использовать TQuery с select * from table where fshow = 1

Так не могу, датасет ReadOnly
...
Рейтинг: 0 / 0
Как удалить запись из TClientDataSet не удаляя её из базы?
    #39842614
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
verter, если нужно динамически то скрывать то показывать запись то создать internalcalc-поле, по к-му включать фильтр. если же разово то я ранее написал как можно удалить запись лишь из датасета не влияя на журнал изменений
...
Рейтинг: 0 / 0
Как удалить запись из TClientDataSet не удаляя её из базы?
    #39843008
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavanverter, если нужно динамически то скрывать то показывать запись то создать internalcalc-поле, по к-му включать фильтр. если же разово то я ранее написал как можно удалить запись лишь из датасета не влияя на журнал изменений
Понял. Спасибо, попробую так и сделать.
...
Рейтинг: 0 / 0
Как удалить запись из TClientDataSet не удаляя её из базы?
    #39843019
MirnyiAtom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А зачем это нужно? Чего получить хотите?
...
Рейтинг: 0 / 0
Как удалить запись из TClientDataSet не удаляя её из базы?
    #39843091
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, с вычислимым полем тоже не получается, т.к. датасат ReadOnly, то и задать значение вычислимому полю тоже не даёт.
...
Рейтинг: 0 / 0
Как удалить запись из TClientDataSet не удаляя её из базы?
    #39843095
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MirnyiAtomА зачем это нужно? Чего получить хотите?

Я отобразил в DBGrid записи из ReadOnly датасета, который TClientDataSet.
По определённому событию нужно скрывать ту или иную запись из грида.
Я понимаю, что это достигается фильтрованием датасета, но как запоминать то что вот эта запись была скрыта, а вот эта ещё нет.
Конечно, можно добавить скажем стринглист, в который добавлять ID скрытых записей и потом каждый раз по событию фильтровать датасет в соответствии со значениями ID, которые запомнили в стринглисте, но как то это всё муторно, ищу более правильный способ. Может у грида есть какая-нибудь возможность?
...
Рейтинг: 0 / 0
Как удалить запись из TClientDataSet не удаляя её из базы?
    #39843097
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
verter, не делайте исходный датасет ro. а internalcalc в cds создаете?
...
Рейтинг: 0 / 0
Как удалить запись из TClientDataSet не удаляя её из базы?
    #39843098
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
verterReadOnly датасета, который TClientDataSetа он откуда записи берет? через провайдера или сам по себе заполняется?
...
Рейтинг: 0 / 0
Как удалить запись из TClientDataSet не удаляя её из базы?
    #39843109
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен, можно не делать датасет ReadOnly. Как уже писали тут, есть свойство LogChanges. Если оно, как по умолчанию, True, то все внесенные изменения сохраняются в свойстве Delta и передаются провайдеру только при вызове метода ApplyUpdates. Просто не вызывайте ApplyUpdates и внесенные пользователями изменения никуда не пойдут. А если данные берутся не от провайдера, а из файла, то то же самое, только вместо ApplyUpdates используется MergeChangeLog.
Такой вариант вам не подходит?
...
Рейтинг: 0 / 0
Как удалить запись из TClientDataSet не удаляя её из базы?
    #39843242
MirnyiAtom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
verterПо определённому событию нужно скрывать ту или иную запись из грида.
Вот этим вы что хотите получить? Какая у вас задача?
То о чем вы спрашиваете можно решить в лоб, ничего сложного нет. Смотрите, если вы не хотите менять датасет, то значит вам нужен какой то посредник между гридом и датасетом. Но может вашу задачу можно как то по другому решить?
...
Рейтинг: 0 / 0
Как удалить запись из TClientDataSet не удаляя её из базы?
    #39845358
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Список отфильтрованных ID и OnFilter, самое простое решение
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как удалить запись из TClientDataSet не удаляя её из базы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]