Мне нужно вычислить значение Max поля, но у меня возникают проблемы при этом.Допустим, мое поле называется «VALUE0».Я хотел бы использовать агрегатные функции TClientDataSet для этого.Что мне делать?
Этот код не будет работать только с полями, которые являются БОЛЬШИМИ в моей таблице SQL:
function TFrmIo.GetMaxY(): Integer;
var
Max0: Integer;
FieldMax0: TAggregateField;
begin
if cds.Active then cds.Close;
FieldMax0 := TAggregateField.Create(cds);
FieldMax0.FieldName := 'MAX0';
FieldMax0.Calculated := true;
FieldMax0.ResultType := ftLargeint;
FieldMax0.FieldKind := fkAggregate;
FieldMax0.DataSet := cds;
FieldMax0.Expression := 'MAX(VALUE0)';
FieldMax0.Active := true;
cds.Open;
Max0 := Integer(FieldMax0.Value);
end;
Я получаю это исключение в строке "cds.Open":
Exception class EDBClient with message 'Type mismatch in expression.'
РЕДАКТИРОВАТЬ
В соответствии с запросом в комментарии, имя класса поля VALUE0 - TLargeintField, а FieldKind - fkData.
EDIT2
Изменен вопрос и некоторые части в тексте, потому что теперь я знаю, что проблема в BIGINT vs INTEGER в агрегатных функциях TClientDataSet.