メインコンテンツまでスキップ
バージョン: 20 R7 BETA

QR REPORT

QR REPORT ( {aTable ;} document {; methodName}{; *} )

引数説明
aTableTableレポートを作成するテーブル、省略時はデフォルトテーブル
documentTextロードするクイックレポートドキュメント
methodNameText呼び出すメソッドの名前
*演算子プリントダイアログボックスを表示しない

このコマンドはスレッドセーフではないため、プリエンプティブなコードには使えません。

説明

QR REPORTはクイックレポートエディターを用いて作成された、aTableのレポートを印刷します。このエディターを使用するとユーザーは独自のレポートを作成できるようになります。クイックレポートエディターを使用してレポートを作成する事については、4Dデザインリファレンスマニュアルのクイックレポート の章を参照して下さい。

注:

  • aTableが“非表示”に定義されている場合、エディターは表示されません。
  • エディターがQR REPORT コマンドを使用して呼び出された場合、マニュアルのステータスがあるテーブル間のリレーションについてはその状態が保持されます。デベロッパーはSET AUTOMATIC RELATIONS およびSET FIELD RELATION コマンドを使用して、リレートの状態を制御することができます。しかしながら、リレートされたテーブルがDISPLAY SELECTIONMODIFY 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 テーマの以下の定数と比較することができます(ここにあるイベントのみがサポートされます):
定数コメント
qr cmd generate2008QR RUN コマンドの使用が推奨されます
qr cmd open2001
qr cmd page setup2006
qr cmd print preview2007
qr cmd save2002
qr cmd save as2003

注: データベースをコンパイルする場合、たとえ使用しなかったとしても$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

参照

PRINT LABEL
PRINT SELECTION
SET ALLOWED METHODS