Найден 1 результат

Ilya.Kazankov
Вт 07 сен 2021 15:37
Форум: Oracle Data Access Components
Тема: Ошибка This type cannot consist in table
Ответы: 1
Просмотры: 6823

Ошибка This type cannot consist in table

В исходном коде компонентов
procedure TOraParam.SetItemAsInteger(Index: integer; Value: integer);
begin
DataType := ftLargeint; // тип данных!!! в ODAC 10 был ftInteger
ItemValue[Index] := Value;
end;

TOraParam.Assign(Source: TPersistent)
если параметр TOraParam(Source).Table = True
возникает ошибка 'This type cannot consist in table'
т.к. выполняется проверка
if not(Integer(DataType) in [Integer(ftUnknown),
Integer(ftString), Integer(ftFixedChar),
Integer(ftWideString), Integer(ftFixedWideChar),
Integer(ftInteger), Integer(ftFloat), // в проверке нет ftLargeint!!!!, если сюда добавить новый тип данных, то ошибки не будет
Integer(ftDateTime), Integer(ftBoolean)])
then
RaiseError(SInvalidTableType);


Если есть TOraQuery с параметром типа Table, то при заполнении его автоматически меняется тип данных. Далее если выполнить Assign такого объекта в другой, то получим ошибку, т.к. при назначении параметров есть проверка на допустимый тип и ftLargeint в этом списке нет