Preencher uma tabela manualmente
Há duas versões do objeto tabela de referência cruzada, "Tabela de Referência Cruzada de BD" e "Tabela de Referência Cruzada". Até agora nós usamos o primeiro objeto conectado a dados de uma tabela de BD. O objeto é preenchido automaticamente quando o relatório é executado. Vamos dar uma olhada no segundo objeto, "Tabela de Referência Cruzada".
O objeto "Tabela de Referência Cruzada" não é conectado a uma tabela de BD. Por isso ela deve ser preenchida manualmente com dados. O objeto "Tabela de Referência Cruzada" possui um editor parecido ao objeto "Tabela de Referência Cruzada de BD", apesar de haver uma diferença, já que as dimensões dos títulos das tabelas e das células devem ser especificadas em vez de serem configuradas pelos campos do BD:
Vamos demonstrar a utilização de um objeto "Tabela de Referência Cruzada" com um exemplo. Coloque um objeto "Tabela de Referência Cruzada" na página de design do reltório e configure suas propriedades conforme é mostrado acima: o número de níveis do título das fileiras é 1, no título das colunas ele é 2 e nas células é 1. Vamos preencher a tabela com dados usando o manipulador de evento "OnBeforePrint":
PascalScript:
procedure Cross1OnBeforePrint(Sender: TfrxComponent);
begin
with Cross1 do
begin
AddValue(['Ann'], [2001, 2], [1500]);
AddValue(['Ann'], [2001, 3], [1600]);
AddValue(['Ann'], [2002, 1], [1700]);
AddValue(['Ben'], [2002, 1], [2000]);
AddValue(['Den'], [2001, 1], [4000]);
AddValue(['Den'], [2001, 2], [4100]);
end;
end;
C++ Script:
void Cross1OnBeforePrint(TfrxComponent Sender)
{
Cross1.AddValue(["Ann"], [2001, 2], [1500]);
Cross1.AddValue(["Ann"], [2001, 3], [1600]);
Cross1.AddValue(["Ann"], [2002, 1], [1700]);
Cross1.AddValue(["Ben"], [2002, 1], [2000]);
Cross1.AddValue(["Den"], [2001, 1], [4000]);
Cross1.AddValue(["Den"], [2001, 2], [4100]);
}
No manipulador, os dados sao adicionados à tabela através do médoto TfrxCrossView.AddValue
. Este método tem três parâmetros, e todos são um array do tipo Variant. O primeiro parâmetro é o valor da fileira, o segundo é o valor da coluna e o terceiro é o valor da célula. Observe que o número de valores em cada array deve corresponder às configurações do objeto! Em nosso exemplo, o objeto possui um nível no título da fileira, dois nível no título da coluna e um nível de células, então os parâmetros do array Variant do método AddValue precisam de um valor para as fileiras, dois valores para as colunas e um valor para as células.
Ao visualizar, o relatórió é exibido deste modo:
O método AddValue
também pode ser usado para o objeto "Tabela de Referência Cruzada de BD". Isso possibilita inserir dados que não sejam derivados da fonte de dados conectada ao objeto. Se dados forem adicionados desta maneira, eles também serão resumidos junto aos dados da fonte de dados.