|
|
|
Трабла с транзакциями
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. идея в том что: есть два места в программе которые работают с одной и той же таблицей из этих двух мест может производиться добавление, удаление и редактирование записей. Код: plaintext 1. 2. Код: plaintext 1. 2. Код: plaintext 1. 2. так вот, проблема в том, что если сначала выполнить Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. "Could not update, currently locked" в принципе это логично, началась транзакция, и база заблокировалась для изменений, что бы не допустить возможность ошибки... НО обработку возможных inconsistence я беру на себя поэтому, уважаемый ALL может быть ты знаешь какой то способ как то ее обмануть??? или может быть я делаю все через з... и есть какой то более простой способ реализовать такую штуку: пользователь правит данные но изменения не записываются в базу и ТОЛЬКО после того как юзер дал комманду сохранить, инфа в базе бы обновилась ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2006, 13:14 |
|
||
|
Трабла с транзакциями
|
|||
|---|---|---|---|
|
#18+
Мда. Открывать вот так транзакции - самый плохой вариант здесь. Накапливайте информацию о произведенных юзером изменениях в клиентском приложении, и только в момент нажатия кнопки "сохранить" открывайте транзакцию и производите все эти изменения в БД. Правда, понадобится проверять актуальность сохраняемых данных - вдруг, когда пользователь их правил, другой их уже пересохранил. Но это вопрос бизнес-логики, и вам должно быть виднее, дожно здесь быть FIFO или не должно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2006, 13:29 |
|
||
|
Трабла с транзакциями
|
|||
|---|---|---|---|
|
#18+
ну это вариант и раньше было сделано так: никаких транзакций инфа из рекордсета заносилась в listview затем когда поработали с listview и нажимали "Сохранить" было сделано приблизительно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. при наличии в рекордсете, например 10000 записей, обработка растягивается на очень, очень большое время, поэтому от этого пришлось отказаться тогда я и стал искать способ сделать так, что бы при изменении каждой строки инфа попадала в базу, и потом можно было просто применить изменения и пока остановился на транзакциях (хоть и плохая это идея, согласен) вот я и думаю, может есть какой то способ завести что то типа "виртуального рекордсета" и потом одной командой сделать ему синхронизацию с базой ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2006, 13:59 |
|
||
|
Трабла с транзакциями
|
|||
|---|---|---|---|
|
#18+
А зачем проверять на изменения все 10000 записей? Заведите отдельную коллекцию (или массив), куда добавляйте только изменные элементы. И ее сохраняйте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2006, 15:06 |
|
||
|
Трабла с транзакциями
|
|||
|---|---|---|---|
|
#18+
А чем не устраивает обычный отсоединенный рекордсет? Или автор о таком не знает? Будь там хоть 100000 записей, апдейтом будут обработаны только измененные и это не займет много времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2006, 15:51 |
|
||
|
Трабла с транзакциями
|
|||
|---|---|---|---|
|
#18+
AntonariyА чем не устраивает обычный отсоединенный рекордсет? Или автор о таком не знает? Будь там хоть 100000 записей, апдейтом будут обработаны только измененные и это не займет много времени. стыдно, автор о таком не знает... а как это изобразить, если в двух словах? или может ссылку какую, если двух словах не получится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2006, 16:07 |
|
||
|
Трабла с транзакциями
|
|||
|---|---|---|---|
|
#18+
Получится. =) cn.CursorLocation = adUseClient 'означает, что сразу все записи выборок будут отдаваться клиенту Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2006, 16:20 |
|
||
|
Трабла с транзакциями
|
|||
|---|---|---|---|
|
#18+
Факин шит нихт правка ин дас форум(( Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2006, 16:23 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=33987148&tid=2165300]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
200ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 535ms |

| 0 / 0 |
