|
|
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Delphi 10.3 FireDac Firebird. Бросил на форму 4 компонента FDConnection FDTransation FDQuery и FDDriver. Параметры транзакции: write read_committed rec_version nowait Написал процедуру, которая редактирует в БД запись, сделал к ней select через FDQuery и передал параметры: function TForm1.EditEventsTest(var i, outError: Integer): Variant; begin with qEventEdit do begin if not Transaction.Active then Transaction.StartTransaction; try ParamByName('AOPERATION').Value := 1; ParamByName('ID').Value := '454A9F34-E0F2-4273-8BEC-ED11AFAC0BAE'; ParamByName('ID_DOCUMENT').Value := '9CF8A379-D83C-4B56-8721-0715896E3241'; ParamByName('KIND').Value := 2; ParamByName('TIME$EVENT').Value := Null; ParamByName('TIME$LAST_SEND').Value := Null; ParamByName('SEND$RESULT').Value := IntToStr(i);// 'test'; ParamByName('IS_SENDED').Value := 1; ParamByName('SEND$COUNTER').Value := 35; ParamByName('STATE').Value := 0; Open; Result := FieldByName('OUT_ID').Value; outError := FieldByName('OUT_ERROR').AsInteger; if (outError = 0) then begin Transaction.Commit; end else Transaction.Rollback; except Transaction.Rollback; end; end; end; Собственно, вопрос, почему первый commit вносит изменения в базу данных, а последующий вызов процедуры нет, ошибок при этом не возникает. Ошибки в запросе быть не может быть т.к. клиент на Delhi 7 всё прекрасно редактирует. Упростил приложение для того, что бы понять в чём проблема. У приложения одна единственная пишущая транзакция, чтения приложение не осуществляет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 17:19 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
RackotProСобственно, вопрос, почему первый commit вносит изменения в базу данных, а последующий вызов процедуры нет, ошибок при этом не возникает. Вариантов два: 1) OUT_ERROR возвращает не ноль, но ты об этом не знаешь из-за отсутствия диагностики. 2) Возникает исключение, но ты опять же об этом не узнаешь, поскольку молча подавил его в except. PS: Этот список не включает совсем уж идиотские варианты. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 17:23 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, код 100% рабочий, просто выкинул обработку out_Error + есть debug в делфи =) умеем проктикуем. Он встаёт на commit и всё, а в БД изменений нет. Но при первом запуске программы всё работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 17:27 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
где текст? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 17:30 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий, текст чего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 17:33 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
краткость - сестра! Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 17:38 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
RackotProкод 100% рабочий, просто выкинул обработку out_Error + есть debug в делфи =) умеем проктикуем. Значит остаются только совершенно идиотские варианты класса "вызываемая процедура не изменяет базу, поскольку в ней есть SUSPEND". Включай трассировку на стороне сервера и смотри что на самом деле происходит. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 17:38 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
RackotPro> Мимопроходящий, текст чего? ХП. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 17:47 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, судя по ответам, вы совсем не понимаете сути проблемы. По этому что бы вы дибила из меня не делали отвечаю... Сделал тестовые таблицы и 1 процедуру Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Затем в делфи sql запрос и процедуру Код: plsql 1. 2. 3. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Так вот если мы просто напишем в компоненте update TEST_TABLE TT set TT.NAME = :NAME where (TT.TID = 1); и затем вызовем метод ExecSql. Всё работает. А в моём случае с хранимкой работает лишь первый commit далее изменения не попадают в БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 17:53 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
RackotProсудя по ответам, вы совсем не понимаете сути проблемы. Я отлично понимаю суть проблемы, а вот ты, очевидно, не понял суть совета "включай серверную трассировку и смотри что на самом деле происходит". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 17:58 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
RackotPro Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Проверь OUT_ERROR на нулл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 18:06 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, признаюсь честно никогда не юзал, но в IBExpert-е почему-то пишет, не найдено сессий. Хотя запустил и своё приложение и написанное на Delphi 7, уж оно то точно должно было отобразиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 18:09 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
hvlad, Ошибка не в коде, а в методе Open... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 18:09 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
RackotProпризнаюсь честно никогда не юзал, но в IBExpert-е почему-то пишет, не найдено сессий. Хотя запустил и своё приложение и написанное на Delphi 7, уж оно то точно должно было отобразиться. Ну вот и ответ: приложение меняет данные не в той базе, в которой ты ожидаешь изменений. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 18:10 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, эх... нет, скорее всего это моё неправильное использование трассировки. Я специально для вас, пока мы вели дисскусию создал тестовую таблицу с процедурой, если бы я коннектился к другой БД то ошибка вылетела Exists, а так признаки те же: Выполняешь через FireDac прямой запрос к таблице Update Test where Column и вызываешь ExecSQL. А если через процедуру, которая возвращает данные тобеж selet * from procedure() и вызываешь метод Open, изменения упадут лишь 1 раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 18:15 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
RackotPro> Open; А если вместо Open вызвать Execute (или как она там) ? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 18:29 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
RackotPro> А в моём случае с хранимкой работает лишь первый RackotPro> commit далее изменения не попадают в БД. Так ХП одну запись меняет или несколько? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 18:31 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, Execute ошибка, используйте метод Open. Там в хранимке запрос я кидал выше таблица из 2х полей, меняет одну запись. Код: plsql 1. 2. 3. Собственно, накидал IB компонентов код не меняя всё работает изменил в with ibquery do и всё работает. Но вопрос остаётся открытым почему FireDac коммитит изменения только 1 раз и всё при вызове в select ХП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 18:35 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, всё тему можно закрыть. Видимо свзяано это с каким-то оптимизаторов внутри компонента. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Обязательно добавьте Refresh. Всем спасибо все свободны... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 18:44 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
RackotProhvlad, Ошибка не в коде, а в методе Open...Так ты проверил ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 19:58 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
RackotPro, Refresh ни к селу ни к городу. И явно ведь RefreshSQL тут не прописан. Дело в том, что у разных компонент при Open может делаться fetch первой записи, а может и не делаться, это зависит от настроек (свойств) конкретного датасета. До кучи - у FireDAC наверняка должен быть какой-то компонент "мониторинга" того, что он отсылает на сервер. Типа SQLMonitor или что-то вроде. И смотреть в первую очередь надо в нем. Потом - да, если что-то непонятное происходит, уже в трейсе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 20:21 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
hvlad, Не исключено, что у отважного экспериментатора банально на хватало Close(). Ибо не факт, что FireDAC свои Query по завершению транзакций обязан закрывать.)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 20:31 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov"вызываемая процедура не изменяет базу, поскольку в ней есть SUSPEND" RackotProвы совсем не понимаете сути проблемы. По этому что бы вы дибила из меня не делали отвечаю... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. suspend таки предугадан, хотя бы одну запись кто-нибудь попытался сфетчить? не надо писать suspend в процедуре меняющей что-либо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 20:31 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
Vlad F, есть у делфи дебаг... можно посмотреть состояние транзакции после коммита. Сядь да потестируй вон выше код есть. Смысл вот этих бездумных отписок? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 20:48 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
Ivan_Pisarevsky, внимательность 100500 весь смысл как раз в suspende и в этой процедуре возвращается out_error, которому присвоенна 1-ца и сделанно, так для примера, что бы убедится, что там не null и т.п. В реальной жизни процедура возвращает не только out_error поэтому нужна была именно такая процедура. Которая пишет и возвращает какой либо результат, в следствии чего мы вынуждены использовать метод Open и т.д. т.п. всё то что было выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 20:51 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
RackotProVlad F, есть у делфи дебаг... можно посмотреть состояние транзакции после коммита. Сядь да потестируй вон выше код есть. Смысл вот этих бездумных отписок? - А вы что же, - и жевать за меня будете?! - Ага!! (с) Вовка в тридевятом царстве.)) P.S. Мне кажется, клиент пропустил про Close() мимо уха.)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 21:06 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
RackotProвесь смысл как раз в suspende и в этой процедуре возвращается out_error Ты не поверишь, но для возврата скаляра SUSPEND не нужен. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 21:30 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Замечу, что клиент не откатить не может, а и, всего лишь, повторно обновить. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 21:39 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
RackotPro Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Vlad F прав. У вас, в вашей функции на Делфи, после текста: Код: pascal 1. 2. 3. как минимум не хватает CLOSE; чтобы закрыть ваш запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2018, 10:56 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
akrush, Ну лично я бы поставил его в данном тексте сразу после Open().)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2018, 11:04 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
граждане тунея.. погромисты! а шо это вы тут дельфи обсуждаете? зы: направьте уже таки поциента в уютненький к Рустаму. Posted via ActualForum NNTP Server 1.5 Модератор: Тема перенесена из форума "Firebird, InterBase". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2018, 11:05 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
Похожая ситуация, если коммитить простой инсерт или апдейт - все работает, а если коммитить процедуру - не сохраняет. В чем может быть дело? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2019, 17:51 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
aford, Дохтур по фотографии на лечит. (с)) Пример кода давай, когда работает и когда нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2019, 18:40 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#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. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. Последнюю часть писал на коленке, но принцип думаю ясен. Да, еще вот: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2019, 20:43 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
aford, экцепшн, если он возникает, то гасится. А ошибки нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2019, 07:53 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
goldmi45, я прописывал в эксепте записи в логи, и прям перед ним что все успешно. Все отрабатывает нормально, но не сохраняет в БДв случае запуска процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2019, 08:02 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
А в хранимых процедурах простой инсерт или удаление с набором параметров ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2019, 08:06 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
Посмотрел трассером (trace and audit), в первой процедуре есть коммит - мой косяк, она работает, а во второй нет (вызовы процедуры, параметры, все проходит), хотя в коде он четко прописан после цикла... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2019, 09:02 |
|
||
|
FireDac.Transaction помогите настроить
|
|||
|---|---|---|---|
|
#18+
Дебаггером по Transaction.Commit проходит. Жаль, что на форуме можно только написать сообщение, а не отредактировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2019, 09:14 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2039336]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
95ms |
get tp. blocked users: |
2ms |
| others: | 235ms |
| total: | 427ms |

| 0 / 0 |
