変数の値の変更
変数の値を変更する方法は 2 つあります。
Pascal:
frxReport1.Variables['My Variable 2'] := 10;
C++:
frxReport1->Variables->Variables["My Variable 2"] = 10;
または
Pascal:
var
Index: Integer;
Variable: TfrxVariable;
{ 変数を検索する }
Index := frxReport1.Variables.IndexOf('My Variable 2');
{ 見つかった場合は、値を変更する }
if Index <> -1 then
begin
Variable := frxReport1.Variables.Items[Index];
Variable.Value := 10;
end;
C++:
int Index;
TfrxVariable * Variable;
// 変数を検索する
Index = frxReport1->Variables->IndexOf("My Variable 2");
// 見つかった場合は、値を変更する
if(Index != -1)
{
Variable = frxReport1->Variables->Items[Index];
Variable->Value = 10;
}
留意すべき点は、レポート変数にアクセスするとき、その変数が文字列型である場合には、値が計算されているということです。つまり、値が 'Table1."Field1"' の変数は、文字列 'Table1."Field1"' ではなく、データベース フィールドの値を返します。レポート変数に文字列型の値を割り当てる場合には注意が必要です。たとえば、次のコードにより、レポートの実行時に "変数 'test' が不明です" という例外が発生します。
frxReport1.Variables['My Variable'] := 'test';
それは、FastReport が変数の値を計算しようとするからです。文字列値を渡す正しい方法は次のとおりです。
frxReport1.Variables['My Variable'] := '''' + 'test' + '''';
この場合、変数の値である文字列 'test' は、エラーなしで表示されます。ただし、以下の点に留意してください。
文字列に一重引用符を含めてはいけない。一重引用符はすべて二重引用符にする必要があります。
文字列に #13#10 記号を含めてはいけない。
場合によっては、スクリプトを使用して変数を渡す方が簡単です。