Encontrei uma maneira de contornar o problema.
Criei um ClientDataSet e alimentei com todos os campos e valores que eu tinha, depois só apontei ao relatório o DataSource.
Segue o código caso alguém quiser seguir meus passos:
cdsTeste.Close;
cdsTeste.FieldDefs.Clear;
for I := 0 to Pred(ADQGeradorRelatorio.FieldCount) do
begin
case ADQGeradorRelatorio.Fields[I].DataType of
ftBCD, ftFloat, ftCurrency, ftSingle, ftFMTBcd, ftExtended:
begin
cdsTeste.FieldDefs.Add(ADQGeradorRelatorio.Fields[I].FieldName, ftBCD, 0, false);
end;
else
begin
cdsTeste.FieldDefs.Add(ADQGeradorRelatorio.Fields[I].FieldName,
ADQGeradorRelatorio.Fields[I].DataType,
ADQGeradorRelatorio.Fields[I].Size, false);
end;
end;
end;
cdsTeste.CreateDataSet;
Basicamente, o que ele vai fazer é tornar ftBCD todos os campos do tipo decimal. Como trabalho com apenas 4 casas decimais não tive problemas com perda de dados.