|
|
|
Подскажите концепцию работы с FIREDAC и "правильными транзакциями"
|
|||
|---|---|---|---|
|
#18+
Хотел бы в целях профессионального роста научиться работать с FireDAC и читающими и короткими пищущими транзакциями. Итак, есть например, таблица заказов ORDERS. Есть FDQuery1, который настроен на читающую транзакцию. Есть UpdateSQL, в котором описаны основные DML операторы и подключена пишущая неавтостартующая транзакция. Использовать встроенный в FDQuery механизм работы с DML не получается, так как есть автоинкрементные поля, которые заполняет сервер, а FDQuery не дает их оставлять пустыми, несмотря на отключаемые CheckRequiered. Посему вопрос - как красиво и академически правильно работать с FDQuery и SQLUpdate, чтоб после добавления или изменения записи не перезагружать весь FDQuery, а обновлять только измененные записи? Я так понимаю, можно задействовать FDMEmTable, но не могу понять - как этот зверинец заставить вместе работать, чтоб они были тандемом, а не отдельно работающими компонентами. Раньше с IBDAC работал - там как-то полюдски сделано - в одном IBCQuery можно было задать и читающий оператор, и модифицирующие, причем с возвращаемыми параметрами. И отлично работало игнорирование автоинкрементных полей. Спасибо за любые наводки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2019, 17:52 |
|
||
|
Подскажите концепцию работы с FIREDAC и "правильными транзакциями"
|
|||
|---|---|---|---|
|
#18+
GrigoriyFomin, на хабре были примеры приложений 'фаерберд через фаердак'. Пожалуйсто. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2019, 17:55 |
|
||
|
Подскажите концепцию работы с FIREDAC и "правильными транзакциями"
|
|||
|---|---|---|---|
|
#18+
GrigoriyFominХотел бы в целях профессионального роста научиться работать с FireDAC и читающими и короткими пищущими транзакциями. Это не рост, это деградация. А использование двух транзакций - костыль для кривых компонент, сбрасывающих локальный кэш резал сета при завершении транзакции. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2019, 17:55 |
|
||
|
Подскажите концепцию работы с FIREDAC и "правильными транзакциями"
|
|||
|---|---|---|---|
|
#18+
Вот тут почитайте https://habr.com/ru/post/273549/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2019, 07:54 |
|
||
|
Подскажите концепцию работы с FIREDAC и "правильными транзакциями"
|
|||
|---|---|---|---|
|
#18+
Статью эту читал, жаль, единственная статья по этой теме. Но у меня остался непонятной ситуация. Есть таблица заказов, есть подчиненная таблица пунктов заказа (классика мастер-детеил). 2 запроса с селектами и 2 UpdateSQL с соответствующими процедурами DML. Для обоих датасетов стоит CacheUpdates. Вопрос №1 - как не выдавать ошибку при добавлении новой записи, учитывая, что FB 3.0 и стоит автоинкрементное поле нового типа (без генератора) Вопрос №2 - как детейлед таблице указать OrderID мастер-таблицы, если ИД мастера будет выявлен лишь после ApplyUpdates? Можно генератор прописать и тогда FDQuery будет сам заполнять это поле, но как быть с автоинкрементным полем без генератора? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 23:01 |
|
||
|
Подскажите концепцию работы с FIREDAC и "правильными транзакциями"
|
|||
|---|---|---|---|
|
#18+
GrigoriyFomin, За это все, в принципе, какую-то зарплату платят или всё-таки курсовая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 23:15 |
|
||
|
Подскажите концепцию работы с FIREDAC и "правильными транзакциями"
|
|||
|---|---|---|---|
|
#18+
Vlad F За это все, в принципе, какую-то зарплату платят или всё-таки курсовая? Платят, но не за это. Это в целях повышения самообразования и желания перейти на FireDAC в будущем. Вот уже со многим разобрался, а как работать с автоинкрементными полями, когда они ключевые и используются для связки мастер-детейл - не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 23:24 |
|
||
|
Подскажите концепцию работы с FIREDAC и "правильными транзакциями"
|
|||
|---|---|---|---|
|
#18+
GrigoriyFomin...Вопрос №1 - как не выдавать ошибку при добавлении новой записи, учитывая, что FB 3.0 и стоит автоинкрементное поле нового типа (без генератора) Вопрос №2 - как детейлед таблице указать OrderID мастер-таблицы, если ИД мастера будет выявлен лишь после ApplyUpdates? Можно генератор прописать и тогда FDQuery будет сам заполнять это поле, но как быть с автоинкрементным полем без генератора? [spoiler] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 23:26 |
|
||
|
Подскажите концепцию работы с FIREDAC и "правильными транзакциями"
|
|||
|---|---|---|---|
|
#18+
ёёёёё, Хорошо. Сузю задачуу 1. Стартанули пишущую транзакцию. 2. сохранили мастер запись ApplyUpdates. 3. как узнать значение автоинкрементного поля после этого? Выдает 0. 4. перебираем ранее добавленные детейл записи и присваиваем ИД родителя - полученное в шаге №3 ИД. 5. Для детейл датасета делаем ApplyUpdates. 6. Коммитим транзакцию. Что я делаю не так? ) вариант использовать генератор оставляю на последок как выход из безвыходной ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 23:35 |
|
||
|
Подскажите концепцию работы с FIREDAC и "правильными транзакциями"
|
|||
|---|---|---|---|
|
#18+
GrigoriyFomin, Так конкретные проблемы твои без исходников до конца не понятны. В качестве утешения могу твердо заверить, что и на FireDAC абсолютно все это, умеючи, сделать возможно.)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 23:35 |
|
||
|
Подскажите концепцию работы с FIREDAC и "правильными транзакциями"
|
|||
|---|---|---|---|
|
#18+
GrigoriyFomin, да кто, кроме тебя, знает, что ты не так делаешь. Может, ты returning в insert не добавил. Все, что угодно может быть. Что там у тебя за код и скрипт? Поди догадайся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 23:39 |
|
||
|
Подскажите концепцию работы с FIREDAC и "правильными транзакциями"
|
|||
|---|---|---|---|
|
#18+
Vlad F, Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 23:44 |
|
||
|
Подскажите концепцию работы с FIREDAC и "правильными транзакциями"
|
|||
|---|---|---|---|
|
#18+
GrigoriyFomin, "Кисочка, миленькая, ну ещё хоть капельку..." - (с). Теперь insert предложение покажи. И DDL таблички. ------ Конечно, Commit после master - записи делать не стоит, в любом случае. У тебя же составной документ. Только после успешной заливки деталей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 23:48 |
|
||
|
Подскажите концепцию работы с FIREDAC и "правильными транзакциями"
|
|||
|---|---|---|---|
|
#18+
ёёёёёGrigoriyFomin, да кто, кроме тебя, знает, что ты не так делаешь. Может, ты returning в insert не добавил. Все, что угодно может быть. Что там у тебя за код и скрипт? Поди догадайся. в returning поля прописаны. Меня интересует правильный академичсекий подход, задача-то типовая - как сохранить мастер и детейл записи при автоинкрементном связующем поле и CachedUpdates. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 23:48 |
|
||
|
Подскажите концепцию работы с FIREDAC и "правильными транзакциями"
|
|||
|---|---|---|---|
|
#18+
GrigoriyFominёёёёёGrigoriyFomin, да кто, кроме тебя, знает, что ты не так делаешь. Может, ты returning в insert не добавил. Все, что угодно может быть. Что там у тебя за код и скрипт? Поди догадайся. в returning поля прописаны. Меня интересует правильный академичсекий подход, задача-то типовая - как сохранить мастер и детейл записи при автоинкрементном связующем поле и CachedUpdates. Ну, раз ты все делаешь как надо - ошибка в компонентах, а что ж ещё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 23:50 |
|
||
|
Подскажите концепцию работы с FIREDAC и "правильными транзакциями"
|
|||
|---|---|---|---|
|
#18+
ёёёёё"Кисочка, миленькая, ну ещё хоть капельку..." - (с). Теперь insert предложение покажи. И DDL таблички. ------ Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. вот как описана таблица Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 23:52 |
|
||
|
Подскажите концепцию работы с FIREDAC и "правильными транзакциями"
|
|||
|---|---|---|---|
|
#18+
ёёёёёGrigoriyFominпропущено... в returning поля прописаны. Меня интересует правильный академичсекий подход, задача-то типовая - как сохранить мастер и детейл записи при автоинкрементном связующем поле и CachedUpdates. Ну, раз ты все делаешь как надо - ошибка в компонентах, а что ж ещё. Так я как раз и понимаю, что я делаю то-то не так - хочу разобраться. Раз задача тривиальная, значит решение есть бескостыльное и красивое. А найти его не получается, для чего на форуме и вопрошаю ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2019, 23:55 |
|
||
|
|

start [/forum/topic.php?fid=58&tid=2039165]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
177ms |
get topic data: |
12ms |
get forum data: |
4ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 546ms |

| 0 / 0 |
