|
|
|
Firedac master-detail ошибка сохранения blob
|
|||
|---|---|---|---|
|
#18+
Добрый день. Постараюсь описать проблему. Используется среда разработки Embarcadero® Delphi 10.1 Berlin Version 24.0.25048.9432 БД: Oracle 10.2 На сервере приложений при помощи FireDac (FDQuery) используется связка Master-detail (FDQuery1 -> DataSource -> FDQuery2) На клиент все это дело передается через один TDataSetProvider. На клиенте разворачивается соответственно в ClientDataSet1 (master) и ClientDataSet2 (detail) В detail редактируется Blob поле, после чего у master вызыватся метод ApplyUpdate. Вот тут и начинается проблема. Если детейл редактируется у первой записи мастера, то изменения успешно сохраняются в БД, если же перейти, например, на третью запись мастера и у нее отредактировать детейл, то Blob поле в БД становится пустым. Докопался до такого кода в юните FireDAC.Comp.DataSet Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. При успешном редактиовании Blob поля у первой записи мастера условие LocateRecord = True Но если редактировать детейл например у третьей записи мастера условие LocateRecord = False и код уходит в юнит Datasnap.Provider Код: pascal 1. 2. 3. 4. 5. 6. 7. Вот тут Blob и зануляется. Сам метод LocateRecord уходит в юнит FireDAC.DatS в метод Код: 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. Очевидно, что при успешном редактировании PBcd(ABuff1)^ и PBcd(ABuff2)^ равны, а при неуспешном - различны. Дальше я уже не знаю, что и делать) Я вот что думаю, может у FDQuery есть какая-то волшебная галоча, которая исправляет эту проблему? Сам я ее к сожалению не нашел( PS: Причем на Firebird такой проблемы нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 17:18 |
|
||
|
Firedac master-detail ошибка сохранения blob
|
|||
|---|---|---|---|
|
#18+
Проще дать простой тестовый пример. Можно попробовать установить FormatOptions.DataSnapCompatibility в True. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 19:51 |
|
||
|
Firedac master-detail ошибка сохранения blob
|
|||
|---|---|---|---|
|
#18+
Dmitry ArefievПроще дать простой тестовый пример. Можно попробовать установить FormatOptions.DataSnapCompatibility в True. Установил, не изменилось. Простой тестовый пример прикладываю. Таблички в БД создал для примера: Код: plsql 1. 2. 3. 4. 5. Код: plsql 1. 2. 3. 4. 5. 6. 7. Спасибо) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2018, 20:10 |
|
||
|
Firedac master-detail ошибка сохранения blob
|
|||
|---|---|---|---|
|
#18+
Это баг в FireDAC. Патч присоединил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2018, 10:00 |
|
||
|
Firedac master-detail ошибка сохранения blob
|
|||
|---|---|---|---|
|
#18+
Dmitry Arefiev, спасибо, все работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2018, 13:23 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=96&tid=2040380]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 363ms |

| 0 / 0 |
