QR REPORT
QR REPORT ( {aTable ;} document {; methodName}{; *} )
引数 | 型 | 説明 | |
---|---|---|---|
aTable | Table | → | レポートを作成するテーブル、省略時はデフォルトテーブル |
document | Text | → | ロードするクイックレポートドキュメント |
methodName | Text | → | 呼び出すメソッドの名前 |
* | 演算子 | → | プリントダイアログボックスを表示しない |
このコマンドはスレッドセーフではないため、プリエンプティブなコードには使えません。
説明
QR REPORTはクイックレポートエディターを用いて作成された、aTableのレポートを印刷します。このエディターを使用するとユーザーは独自のレポートを作成できるようになります。クイックレポートエディターを使用してレポートを作成する事については、4Dデザインリファレンスマニュアルのクイックレポート の章を参照して下さい。
注:
- aTableが“非表示”に定義されている場合、エディターは表示されません。
- エディターがQR REPORT コマンドを使用して呼び出された場合、マニュアルのステータスがあるテーブル間のリレーションについてはその状態が保持されます。デベロッパーはSET AUTOMATIC RELATIONS およびSET FIELD RELATION コマンドを使用して、リレートの状態を制御することができます。しかしながら、リレートされたテーブルがDISPLAY SELECTION 、MODIFY SELECTION 、あるいはサブフォームを使用して表示されたリストフォーム内で表示されている場合には、この自動リレーション機能は無効化されているということに注意してください。詳細については自動およびマニュアルリレーション を参照してください。
- エディターは外部ウィンドウ内に呼び出され、このコンテキストでQR ON COMMANDコマンドを使用することはできません。しかしながら、インターフェースコマンドが有効化されている際には、 methodName 引数を使用してカスタムコードを実行することができます。
document引数には、クイックレポートエディターを用いて作成され、ディスク上に保存されたレポートドキュメントを渡します。このドキュメントにはレポートに関する仕様が納められ、印刷されるレコードは含みません。
documentに空の文字列 ("") が指定されると、QR REPORTはファイルを開くダイアログボックスを表示し、ユーザは印刷するレポートを選択することができます。
document引数にドキュメントが指定され、そのドキュメントが存在しない場合(例えばdocumentに**Char(1)**を指定)、クイックレポートエディターが表示されます。
methodName 引数は、ユーザーがボタンをクリックすることでクイックレポートエディータのドキュメント管理コマンドが呼び出されるたびに実行される、4D プロジェクトメソッドを指定します。この引数を使用することは、QR ON COMMAND をクイックレポートエディターウィンドウのコンテキストで使用することと同じです(QR ON COMMAND は含まれているエリアのコンテキスト内でしか動作しません)。例えば、この引数を使用してクイックレポートで使用される文字セットを変更することができます。methodName 引数で指定したメソッドは、二つの引数を受け取ります:
引数 | 型 | 詳細 | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
$1 | 倍長整数 | エリア参照 | |||||||||||||||||||||
$2 | 倍長整数 | 選択されたコマンドの数。QR Commands テーマの以下の定数と比較することができます(ここにあるイベントのみがサポートされます):
|
注: データベースをコンパイルする場合、たとえ使用しなかったとしても$1 と$2 引数を明示的に倍長整数として宣言する必要があります。
ユーザーによって最初に選択されたコマンドを実行したい場合、引数のmethodName メソッド内において、以下の宣言を使用してください:
QR EXECUTE COMMAND($1;$2)
methodName 引数が空の文字列("") である、または省略された場合、メソッドは何も呼ばれず、QR REPORT の標準の操作が適用されます。
引数 * を指定しない場合、レポートの選択後に印刷ダイアログが表示されます。この引数を指定すると、これらのダイアログボックスは表示されず、レポートが印刷されます。
クイックレポートエディターが起動されない場合、レポートが印刷されるとシステム変数OKには1が、印刷されない場合 (つまり、ユーザーが印刷ダイアログでキャンセルをクリックした場合) には0が代入されます。
4D Server: このコマンドは、ストアドプロシージャーのコンテキストで、4D Server上で実行することができます。この場合次の制約があります:
- サーバーマシン上にはダイアログボックスを一切表示しないでください(特定の必要性がある場合を除く)。これを実現するには、コマンドを呼び出す際に、引数 * を指定する必要があります。
- 4D Serverではクイックレポートエディターを表示させる構文は動作しません。これを行った場合、システム変数OKは0に設定されます。
- プリンター関連の問題が発生しても(用紙切れ、プリンター接続切断など)、エラーメッセージは生成されません。
例題 1
次の例では、ユーザが[People]テーブルを検索した後に、“Detailed Listing”というレポートが自動的に印刷されます:
QUERY([People])
If(OK=1)
QR REPORT([People];"Detailed Listing";*)
End if
例題 2
次の例題では、ユーザは[People]テーブルを検索した後に、印刷するレポートを選択することができます:
QUERY([People])
If(OK=1)
QR REPORT([People];"")
End if
例題 3
次の例題では、ユーザが[People]テーブルを検索した後にクイックレポートエディタが表示され、レポートの設計、保存、ロード、印刷を行うことができます:
QUERY([People])
If(OK=1)
QR REPORT([People];Char(1))
End if
例題 4
SET FIELD RELATION コマンドの例題参照
例題 5
QR REPORT コマンドを使用して呼び出されたQuick Reportにて使用される文字コードを Mac Romanに変更したい場合:
QR REPORT([MyTable];Char(1);"myCallbackMeth")
レポートが生成される際、 myCallbackMeth メソッドによってレポートを変換します:
var $1;$2 : Integer
If($2=qr cmd generate) //レポートが生成されたとき
var $myblob : Blob
var $path;$text : Text
var $type : Integer
QR EXECUTE COMMAND($1;$2) //コマンドの実行
QR GET DESTINATION($1;$type;$path) //型の取得
If(($type=qr HTML file)|($type=qr text file))
DOCUMENT TO BLOB($path;$myblob)
//UTF-8を使用してテキストへと変更
$text:=Convert to text($myblob;"UTF-8")
//MacRoman 文字列を使用
CONVERT FROM TEXT($text;"MacRoman";$myblob)
//変換されたレポートを返す
BLOB TO DOCUMENT($path;$myblob)
End if
Else //そうでなければ、コマンドを実行
QR EXECUTE COMMAND($1;$2)
End if