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

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

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

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

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


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