|
|
|
Как удалить запись из TClientDataSet не удаляя её из базы?
|
|||
|---|---|---|---|
|
#18+
Вызываем Open - открываем TDataSet, отображаем данные из базы в TDBGrid, связывая через источник данных TDataSource. Всё как обычно. Теперь нужно просто в гриде не показывать определённую запись. Вызывать метод TDataSet.Delete нельзя, т.к. он удаляет запись в базе, а этого не нужно. Наверное как то можно фильтровать TDataSet после инициализации действия по скрытию записи. Но можно ли как то в самом гриде удалить из него строчку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2019, 00:17 |
|
||
|
Как удалить запись из TClientDataSet не удаляя её из базы?
|
|||
|---|---|---|---|
|
#18+
verter, добавить в таблицу поле fShow и использовать TQuery с select * from table where fshow = 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2019, 09:02 |
|
||
|
Как удалить запись из TClientDataSet не удаляя её из базы?
|
|||
|---|---|---|---|
|
#18+
verter, у вас в заголовке вопроса написано TClientDataSet, а в самом вопросе - TDataset. Так какой у вас конкретно Dataset? Если ClientDataSet, то там ведь изменения посылаются провайдеру только при вызове метода ApplyUpdates. Можно спрятать какие-то записи в любом Dataset'е при помощи фильтрации, см. свойство Filtered и событие OnFilterRecord. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2019, 12:55 |
|
||
|
Как удалить запись из TClientDataSet не удаляя её из базы?
|
|||
|---|---|---|---|
|
#18+
verter, см. cds.LogChanges ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2019, 11:07 |
|
||
|
Как удалить запись из TClientDataSet не удаляя её из базы?
|
|||
|---|---|---|---|
|
#18+
LocksmithPCverter, добавить в таблицу поле fShow и использовать TQuery с select * from table where fshow = 1 Так не могу, датасет ReadOnly ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2019, 16:20 |
|
||
|
Как удалить запись из TClientDataSet не удаляя её из базы?
|
|||
|---|---|---|---|
|
#18+
verter, если нужно динамически то скрывать то показывать запись то создать internalcalc-поле, по к-му включать фильтр. если же разово то я ранее написал как можно удалить запись лишь из датасета не влияя на журнал изменений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2019, 16:30 |
|
||
|
Как удалить запись из TClientDataSet не удаляя её из базы?
|
|||
|---|---|---|---|
|
#18+
vavanverter, если нужно динамически то скрывать то показывать запись то создать internalcalc-поле, по к-му включать фильтр. если же разово то я ранее написал как можно удалить запись лишь из датасета не влияя на журнал изменений Понял. Спасибо, попробую так и сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2019, 14:43 |
|
||
|
Как удалить запись из TClientDataSet не удаляя её из базы?
|
|||
|---|---|---|---|
|
#18+
А зачем это нужно? Чего получить хотите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2019, 14:59 |
|
||
|
Как удалить запись из TClientDataSet не удаляя её из базы?
|
|||
|---|---|---|---|
|
#18+
Нет, с вычислимым полем тоже не получается, т.к. датасат ReadOnly, то и задать значение вычислимому полю тоже не даёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2019, 16:50 |
|
||
|
Как удалить запись из TClientDataSet не удаляя её из базы?
|
|||
|---|---|---|---|
|
#18+
MirnyiAtomА зачем это нужно? Чего получить хотите? Я отобразил в DBGrid записи из ReadOnly датасета, который TClientDataSet. По определённому событию нужно скрывать ту или иную запись из грида. Я понимаю, что это достигается фильтрованием датасета, но как запоминать то что вот эта запись была скрыта, а вот эта ещё нет. Конечно, можно добавить скажем стринглист, в который добавлять ID скрытых записей и потом каждый раз по событию фильтровать датасет в соответствии со значениями ID, которые запомнили в стринглисте, но как то это всё муторно, ищу более правильный способ. Может у грида есть какая-нибудь возможность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2019, 16:56 |
|
||
|
Как удалить запись из TClientDataSet не удаляя её из базы?
|
|||
|---|---|---|---|
|
#18+
verter, не делайте исходный датасет ro. а internalcalc в cds создаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2019, 16:57 |
|
||
|
Как удалить запись из TClientDataSet не удаляя её из базы?
|
|||
|---|---|---|---|
|
#18+
verterReadOnly датасета, который TClientDataSetа он откуда записи берет? через провайдера или сам по себе заполняется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2019, 16:59 |
|
||
|
Как удалить запись из TClientDataSet не удаляя её из базы?
|
|||
|---|---|---|---|
|
#18+
Согласен, можно не делать датасет ReadOnly. Как уже писали тут, есть свойство LogChanges. Если оно, как по умолчанию, True, то все внесенные изменения сохраняются в свойстве Delta и передаются провайдеру только при вызове метода ApplyUpdates. Просто не вызывайте ApplyUpdates и внесенные пользователями изменения никуда не пойдут. А если данные берутся не от провайдера, а из файла, то то же самое, только вместо ApplyUpdates используется MergeChangeLog. Такой вариант вам не подходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2019, 17:31 |
|
||
|
Как удалить запись из TClientDataSet не удаляя её из базы?
|
|||
|---|---|---|---|
|
#18+
verterПо определённому событию нужно скрывать ту или иную запись из грида. Вот этим вы что хотите получить? Какая у вас задача? То о чем вы спрашиваете можно решить в лоб, ничего сложного нет. Смотрите, если вы не хотите менять датасет, то значит вам нужен какой то посредник между гридом и датасетом. Но может вашу задачу можно как то по другому решить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2019, 07:18 |
|
||
|
|

start [/forum/topic.php?fid=58&gotonew=1&tid=2039182]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
149ms |
get topic data: |
10ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 469ms |

| 0 / 0 |
