|
|
|
Field ' ' cannot be modified
|
|||
|---|---|---|---|
|
#18+
Добрый день. Проблема: получаю из SQL Server набор данных посредством TADOQuery, переношу его в TClientDataSet, далее пытаюсь его редактировать. При первой же правке получаю сообщение Field 'Norm' cannot be modified Интересно здесь то, что другая похожая процедура делает практически всё то же самое без ошибок. В чем причина? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2019, 08:39 |
|
||
|
Field ' ' cannot be modified
|
|||
|---|---|---|---|
|
#18+
PapadopulosИнтересно здесь то, что другая похожая процедура делает практически всё то же самое без ошибок. В чем причина? Разница определенно между ними есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2019, 08:40 |
|
||
|
Field ' ' cannot be modified
|
|||
|---|---|---|---|
|
#18+
Значит поле Norm у вас калькулируемое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2019, 09:26 |
|
||
|
Field ' ' cannot be modified
|
|||
|---|---|---|---|
|
#18+
wadmanPapadopulosИнтересно здесь то, что другая похожая процедура делает практически всё то же самое без ошибок. В чем причина? Разница определенно между ними есть. Разница есть только в самих наборах данных - там различия в полях, но и там и там есть это самое редактируемое поле "Norm", оно типа float в MS SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2019, 09:42 |
|
||
|
Field ' ' cannot be modified
|
|||
|---|---|---|---|
|
#18+
DimaBrЗначит поле Norm у вас калькулируемое Нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2019, 09:43 |
|
||
|
Field ' ' cannot be modified
|
|||
|---|---|---|---|
|
#18+
Papadopulosпереношу его в TClientDataSetштатно через провайдер или каким-то иным способом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2019, 09:59 |
|
||
|
Field ' ' cannot be modified
|
|||
|---|---|---|---|
|
#18+
В причине разобрался. Ошибка есть в тех случаях, когда запрос в MS SQL возвращает агрегированный запрос. Видимо в ADOQuery при принятии датасета в агрегируемые поля проставляется признак ReadOnly. Вот теперь бы ещё понять как его снять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2019, 10:01 |
|
||
|
Field ' ' cannot be modified
|
|||
|---|---|---|---|
|
#18+
vavan, Да, через провайдер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2019, 10:02 |
|
||
|
Field ' ' cannot be modified
|
|||
|---|---|---|---|
|
#18+
PapadopulosВидимо в ADOQuery при принятии датасета в агрегируемые поля проставляется признак ReadOnlyлибо вероятно fieldkind у него не fkData образуется, раз уж оно калькулируемое Papadopulosтеперь бы ещё понять как его снятьатрибут запрещающий редактирование поля проставляется в TDataPacketWriter.AddColumn: Код: pascal 1. соответствеено вокруг этого и плясать (наследники, хаки и т.п.) хотя еще вопрос на кой бы его такое в cds потом редактировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2019, 11:06 |
|
||
|
Field ' ' cannot be modified
|
|||
|---|---|---|---|
|
#18+
PapadopulosВ причине разобрался. Ошибка есть в тех случаях, когда запрос в MS SQL возвращает агрегированный запрос. Видимо в ADOQuery при принятии датасета в агрегируемые поля проставляется признак ReadOnly. Вот теперь бы ещё понять как его снять Под "агрегированный запрос" вы имеете в виду, когда запрос возвращает результат из нескольких таблиц, а также запрос с использованием union? Если так, то подумайте, в какую таблицу провайдер будет писать данные при изменении строки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2019, 11:45 |
|
||
|
Field ' ' cannot be modified
|
|||
|---|---|---|---|
|
#18+
goldmi45PapadopulosВ причине разобрался. Ошибка есть в тех случаях, когда запрос в MS SQL возвращает агрегированный запрос. Видимо в ADOQuery при принятии датасета в агрегируемые поля проставляется признак ReadOnly. Вот теперь бы ещё понять как его снять Под "агрегированный запрос" вы имеете в виду, когда запрос возвращает результат из нескольких таблиц, а также запрос с использованием union? Если так, то подумайте, в какую таблицу провайдер будет писать данные при изменении строки? Агрегированный запрос это запрос с группировкой данных и использованием агрегатных функций. Провайдер в данном случае нужен только для получения данных в TClientDataSet, обратно в базу ничего не пишется. Я в итоге убрал агрегирование из запроса и сделал его на клиенте. Всем спасибо за информацию! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2019, 12:12 |
|
||
|
Field ' ' cannot be modified
|
|||
|---|---|---|---|
|
#18+
vavanPapadopulosВидимо в ADOQuery при принятии датасета в агрегируемые поля проставляется признак ReadOnlyлибо вероятно fieldkind у него не fkData образуется, раз уж оно калькулируемое Кстати проверил - в обоих случаях образуется fkData ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2019, 12:22 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39884168&tid=2038882]: |
0ms |
get settings: |
11ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
141ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 458ms |

| 0 / 0 |
