フィールドの最大値を計算する必要がありますが、計算に問題があります。私のフィールドの名前が「VALUE0」だとします。TClientDataSetの集計関数を使用してこれを行いたいと思います。私は何をすべきか?
このコードは、SQLテーブルのBIGINTであるフィールドでのみ失敗します。
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です。
編集2
問題はTClientDataSet集計関数のBIGINTとINTEGERに関するものであることがわかったため、質問とテキストの一部を変更しました。