|
|
|
master-detail-detail FIBPlus
|
|||
|---|---|---|---|
|
#18+
привет. есть 2 dataSet-а со связью master-detail. у detail-датасета прописано свойство CachedUpdates = true. теперь потребовалось к существующему detail-у прикрутить еще один detail-датасет с CachedUpdates = true так вообще можно делать? а то у меня второй detail пока не сохраняет изменения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 13:59:11 |
|
||
|
master-detail-detail FIBPlus
|
|||
|---|---|---|---|
|
#18+
для чего вам функционал CachedUpdates? очень удаленный сервер? может, вам проще с транзакциями разобраться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 14:56:32 |
|
||
|
master-detail-detail FIBPlus
|
|||
|---|---|---|---|
|
#18+
CachedUpdates в моём случае используется для того чтобы изменения не попадали сразу в базу. например, у человека редактируем историю мест его работы. чтобы можно было нажать отмена и ни одно изменение/удаление не сохранилось. если я это делаю неправильно, расскажите пожалуйста как правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 15:10:53 |
|
||
|
master-detail-detail FIBPlus
|
|||
|---|---|---|---|
|
#18+
понятно, спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 15:15:43 |
|
||
|
master-detail-detail FIBPlus
|
|||
|---|---|---|---|
|
#18+
авторДля этого и существуют транзакции. Кнопка ОК -> Commit, кнопка Отмена -> Rollback. За такое надо сразу молотком по пальцам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 17:53:53 |
|
||
|
master-detail-detail FIBPlus
|
|||
|---|---|---|---|
|
#18+
ЛюбезныйЗа такое надо сразу молотком по пальцам. ... что характерно, правильного варианта всё равно не представлено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 21:26:20 |
|
||
|
master-detail-detail FIBPlus
|
|||
|---|---|---|---|
|
#18+
alekcvpЛюбезныйЗа такое надо сразу молотком по пальцам. ... что характерно, правильного варианта всё равно не представлено. Длительная пишущая транзакция - плохо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 21:50:40 |
|
||
|
master-detail-detail FIBPlus
|
|||
|---|---|---|---|
|
#18+
alekcvpДля этого и существуют транзакции . Кнопка ОК -> Commit, кнопка Отмена -> Rollback. Это очень плохой совет. Кнопка ОК -> StartTransaction-Commit, кнопка Отмена -> Транзакцию даже не стартуем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 22:04:10 |
|
||
|
master-detail-detail FIBPlus
|
|||
|---|---|---|---|
|
#18+
wadmanalekcvpпропущено... ... что характерно, правильного варианта всё равно не представлено. Длительная пишущая транзакция - плохо. Расскажи, пожалуйста, в двух словах - чем плохо? В данном конкретном случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 22:07:25 |
|
||
|
master-detail-detail FIBPlus
|
|||
|---|---|---|---|
|
#18+
goldmi45alekcvpДля этого и существуют транзакции . Кнопка ОК -> Commit, кнопка Отмена -> Rollback. Это очень плохой совет. Кнопка ОК -> StartTransaction-Commit, кнопка Отмена -> Транзакцию даже не стартуем. Ага, спасибо. Тогда такой вопрос: вот у меня есть таблица с 6 полями, в которой хранится немного простых записей (пара десятков). При этом есть форма, в которой они редактируются - как быть в такой ситуации? Если, скажем, пользователь поменял некоторые поля у некоторых записей, а за это время часть из них уже поменял другой пользователь, и start-commit вывалилась с ошибкой. Перечитывать изменения и снова менять все? При этом условие, что все изменения должны либо скопом приниматься либо скопом же отменяться, нельзя часть применить, а часть откатить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 22:18:09 |
|
||
|
master-detail-detail FIBPlus
|
|||
|---|---|---|---|
|
#18+
И вторая ситуация: текстовое поле в таблице, размер до 8к знаков (текстовое описание). Пока один пользователь что-то туда пишет большое, второй открыл, исправил ошибку, применил. Первый дописал, а сохранить не может. Тут как быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 22:23:49 |
|
||
|
master-detail-detail FIBPlus
|
|||
|---|---|---|---|
|
#18+
Katya007если я это делаю неправильно, расскажите пожалуйста как правильно имхо, "правильнее" было бы сначала почитать, для чего используется кэшированный датасет . Чаще всего этот режим используется, когда нужно "перекинуть" записи из одного датасета в другой на клиенте. В вашей постановке задачи я вижу два пути решения проблемы: 1. если вы работаете с DBAware компонентами (например, TDBEdit, TDBDate, TDBMemo и т.д.), то придется стартовать пишущую транзакцию, по окончании которой надо будет либо сохранить изменения (Commit), либо отказаться от них (Rollback). Здесь важно правильно настроить параметры транзакции (нюансы замечательно описаны тут и тут ). В противном случае можно получить кучу неприятностей (дедлоки, накопление "мусорных" записей и др.) 2. если вы используете не DBAware -компоненты (обычные TEdit, TDateTime, TMemo), то здесь все просто. При редактировании грузите в читающей транзакции из базы в эти компоненты значения, изменяете. Если соберетесь сохранять изменения, сделаете это в короткой пишущей транзакции, откажетесь от изменений - просто закроете форму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 22:26:02 |
|
||
|
master-detail-detail FIBPlus
|
|||
|---|---|---|---|
|
#18+
alekcvp, нужно определиться, что считать правильным, и от этого плясать дальше. Где-то нужно блокировать ресурс на все время редактирования, где-то - не нужно, где-то важно учитывать время и т.п. Во многих случаях подходит сценарий "кто последний - тот и папа", но каждый случай уникален. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 22:38:48 |
|
||
|
master-detail-detail FIBPlus
|
|||
|---|---|---|---|
|
#18+
авторРасскажи, пожалуйста, в двух словах - чем плохо? В данном конкретном случае. Про TIP не слышал? Читай http://www.ibase.ru/ibtrans/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 22:43:41 |
|
||
|
master-detail-detail FIBPlus
|
|||
|---|---|---|---|
|
#18+
ЛюбезныйавторРасскажи, пожалуйста, в двух словах - чем плохо? В данном конкретном случае. Про TIP не слышал? Читай http://www.ibase.ru/ibtrans/ Прочел, и про ТИП тоже. И где там страшное-то? Читать, пока не станет страшно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 22:47:27 |
|
||
|
master-detail-detail FIBPlus
|
|||
|---|---|---|---|
|
#18+
Глюкнул. Имел в виду идентификатор транзакции при сильно многопользовательской работе. Длинные пишущие транзакции - всегда зло при многопользовательской работе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 22:53:26 |
|
||
|
master-detail-detail FIBPlus
|
|||
|---|---|---|---|
|
#18+
Любезный... Длинные пишущие транзакции - всегда зло при многопользовательской работе. Прямо уж и всегда? Непонятно. Вот создал злобный пользователь документ. В длинной-предлинной транзакции. Кому конкретно он этим навредил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 23:07:01 |
|
||
|
master-detail-detail FIBPlus
|
|||
|---|---|---|---|
|
#18+
чччД, длинные пишущие транзакции в блокировочниках приводят к блокировкам (даже по чтению), в версионниках - к накоплению версий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2017, 23:19:17 |
|
||
|
master-detail-detail FIBPlus
|
|||
|---|---|---|---|
|
#18+
kdvчччД, длинные пишущие транзакции в блокировочниках приводят к блокировкам (даже по чтению), в версионниках - к накоплению версий. Поясни, пожалуйста: в данном конкретном случае 20706848 - сколько именно версий и чего именно в итоге накопится и в чем конкретно состоит зло конкретно от этих версий (чего-то)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2017, 00:06:03 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39501531&tid=2041958]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
317ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
79ms |
get tp. blocked users: |
2ms |
| others: | 221ms |
| total: | 671ms |

| 0 / 0 |
