過去の桐井戸端BBS (桐ver.8)
12135 フォーム上の現在表(サブフォーム含む)のみ、レポート印刷したい。 北加寿紀 2001/07/04-17:26
はじめまして。まだまだ桐についてわからないことが多く、大変参考になっています。
いま、Ver8のフォームをトライしているのですがどうも、うまくいかないことがあり書き込みをしました。
(もしかしたら過去ログにあるかもしれないのですけどボリュームがあるんで見切れてません。類似の物があればお知らせください)
 フォーム上の現在表(サブフォーム含む)のみ、レポート印刷するにはどうすればいいんでしょうか?
すごく長くなりますが、どうか、ご指導おねがいします。
構成は以下の通りです。実際は、項目がかなり多いので簡略化しました。
電気製品の性能調査と思って頂けると、わかりやすいでしょうか
A.tbl (仕様)   
    管理No.| 製品名 |メーカー| 購入日 | 小売価格    |
      001| A  | a  |1.15 | 200,000 |
      002| B  | b  |2.23 | 130,000 |
B.tbl (製品データ)
管理No.|評価モード|消費電力|
   001 | 1−A |500  |
   001 | 1−B |250  |
   002 | 1−A |300  |
   002 | 1−B |125  |
A.wfm
このフォームでは、A.tblはカード型式で表示し、B.tblは伝票型式で表示させています。
B.tblは、サブフォームとしています。
製品データを管理No.でグループ化し、1つのフォームで仕様とデータが閲覧できるようにしています
コマンドボタンも設け、画面上に表示されている1仕様分の仕様、製品データデータのみ
プレビューし、印刷できるようにしようとしました。(これができないんですわ)
A.rpt
複合レポートで、A.tblのデータはタイルオブジェクトで、B.tblのデータは伝票オブジェクトで作成しました  
で、自分が困っている点は、 ”フォームにコマンドボタンも設け、
画面上に表示されている1仕様分の仕様、製品データデータのみプレビューし、
印刷できるようにしようとする”ということです。
「え、なんでできないの??」と思われる方、どうかごかんべんを。
単純に、コマンドボタンのイベントに、レポート印刷を選択しただけだと、
全管理No.分のデータがプレビューされました(管理No.が005までなら5頁分という意味)
そこで、”絞り込み 行数”で、現在行だけ表示させたのち、プレビューさせました。
すると、絞り込んだ行は、A.tbl表示用のタイルオブジェクト、B.tbl表示用の伝票オブジェクト共に表示されるのですが、
それ以外の行はB.tbl表示用の伝票オブジェクトのみ表示されます。
「だったら、併合しちゃえば」と、かなり思いつきで、編集表で行う、”併合 絞り込み”的なことをしてみようと思いました。
普段、編集表で”併合 絞り込み”行うときは、まずA.tbl (仕様)から必要なデータを絞り込み、
B.tbl (製品データ)をアクティブにし、”併合”で”管理No.”を照合し、絞り込んでいます。
 フォーム上のコマンドボタンで、この操作をすればいいんじゃないかと、思ったのですが、
サブフォームのデータは併合されないようでした。
サブ側に1つ(”併合”)、メイン側に2つ(”絞り込み” ”印刷”)コマンドボタンを配し、
”絞り込み””併合””印刷”の順番でコマンドボタンを実行したのですがだめでした。
 これは、結局のところイベントファイルを作らないとだめなんでしょうか。
なにか、良い手だてがありましたら、アドバイスの程よろしくおねがいします。


12137 Re:フォーム上の現在表(サブフォーム含む)のみ、レポート印刷するにはどうすればいいんでしょうか?。 悲しげ 2001/07/04-17:49
記事番号12135へのコメント
どもっ、北加さん
私はすぐにkevを作ってしまう方なので(^^;)、コマンド牡丹だけでやるやり方は、
他の方にコメントをおまかせしますけど、ひとつだけ気に掛ったことがありました。

>すると、絞り込んだ行は、A.tbl表示用のタイルオブジェクト、B.tbl表示用の伝票

どうして、ここで「タイルオブジェクト」が出て来るのでしょう?
タイルオブジェクトってのは、ふつうは「タックシール」的に使うものだと思うのですが
(云い換えればn×m分割ですね)。
でも、話の流れからすると、そういうことでも無いような・・・。
12138 Re:フォーム上の現在表(サブフォーム含む)のみ、レポート印刷するにはどうすればいいんでしょうか?。 北加寿紀 2001/07/04-17:59
記事番号12135へのコメント
ちなみにVer5のころは、一括処理を用いてました。(作ったのは前任者ですが、これが、もう会社にいないんですわ)
それは、A.tbl (仕様)から必要なデータを絞り込み、
B.tbl (製品データ)を”併合”で”管理No.”を照合し、結合表に呼び出した後、レポートのプレビューを行い印刷していました。
これだと、最終的に必要なデータだけを印刷することができると思います。
が、私の考えるこの方法の欠点は、(矛盾しているかもしれませんが)
・A.tblの絞り込みの時点でミスると、最初からやり直しが必要。
・A.tbl、B.tbl両方のデータを確認した上で、印刷しようとした場合、何度も併合、解除を繰り返す可能性がある(手間が増える)
 こういう意味で桐の使いこなしの上手下手問わず、フォームを利用して、一度に複数の編集表のデータが閲覧でき、
なおかつそのまま印刷できれば、「データ参照がメイン」の人から見れば使い勝手のいい物ではないかと思うわけです。
また、新たに桐を使い始める人にとっては、併合、絞り込みの操作がなじみにくい事もあるようで、
「データ参照がメイン」の使用者のために、できるだけビジュアル的にわかりやすくする必要もあるようです。
(中には、使ったこともないのに、頭から桐を否定する人もいますが)
余談がながくなりましたが
12139 Re:フォーム上の現在表(サブフォーム含む)のみ、レポート印刷するにはどうすればいいんでしょうか?。 北加寿紀 2001/07/04-18:19
記事番号12137へのコメント
>どもっ、北加さん
>私はすぐにkevを作ってしまう方なので(^^;)、コマンド牡丹だけで
>やるやり方は、他の方にコメントをおまかせしますけど、ひとつだ
>け気に掛ったことがありました。
>
>>すると、絞り込んだ行は、A.tbl表示用のタイルオブジェクト、B.tbl表示用の伝票
>
>どうして、ここで「タイルオブジェクト」が出て来るのでしょう?
>タイルオブジェクトってのは、ふつうは「タックシール」的に使う
>ものだと思うのですが(云い換えればn×m分割ですね)。
>でも、話の流れからすると、そういうことでも無いような・・・。
 
いあはや、悲しげさん、早速のコメントありがとうございます。
これが、前出の方法で作った後に、項目名パレットからまとめてレポートに張り付ければよかった、と気づいたんです。
スタイルの選択が簡単にできたので、「タイルオブジェクト」を使いました。n×m分割は、1×1で使っています。
「プロパティ変更の手間がないや」という、ごくごく単純な理由ですが。
(あくまで、見た目だけのれべるです、はい。)
ところで、kevで作る良い方法をご存じでしたら、アドバイスの程よろしくお願いいたします。


12140 Re:フォーム上の現在表(サブフォーム含む)のみ、レポート印刷するにはどうすればいいんでしょうか?。 ケント 2001/07/04-18:27
記事番号12135へのコメント
北加寿紀さん こんにちは
>すると、絞り込んだ行は、A.tbl表示用のタイルオブジェクト、B.tbl表示用の伝票
>オブジェクト共に表示されるのですが、それ以外の行はB.tbl表示用の伝票オブジェ
>クトのみ表示されます。

この伝票オブジェクトのリンク設定は[管理]になっているのでしょうか。
的外れだったらゴメンナサイ。

12141 Re:フォーム上の現在表(サブフォーム含む)のみ、レポート印刷するにはどうすればいいんでしょうか?。 今村 誠 2001/07/04-20:41
記事番号12135へのコメント
北加寿紀さんこんにちは

> フォーム上の現在表(サブフォーム含む)のみ、レポート印刷するにはどうすれ
>ばいいんでしょうか?。すごく長くなりますが、どうか、ご指導おねがいします。
>このフォームでは、A.tblはカード型式で表示し、B.tblは伝票型式で表示させてい
>ます。B.tblは、サブフォームとしています。製品データを管理No.でグループ化
>し、1つのフォームで仕様とデータが閲覧できるようにしています
>コマンドボタンも設け、画面上に表示されている1仕様分の仕様、製品データデー
>タのみ
> フォーム上のコマンドボタンで、この操作をすればいいんじゃないかと、思った
>のですが、サブフォームのデータは併合されないようでした。

コマンドボタンだけで印刷したい時は、メインでなく、サブフォーム側に印刷ボタンを作成して、
メインの項目は、全て表引きで印刷項目を持ってくると、絞り込みしなくても良いと思います。
コマンドボタンだけの場合は、印刷のダイヤログは必ず出ます。
イベントの場合は色々出来ます。

請求書などをレポートで作成していますが、レポートの形式は複合になっていました。
その中に一覧表形式のオブジェクトを作成していました。

メインフォームの項目を表引きでレポートに貼り付けるテキストの例
#表引き([管理no],=,"a.tbl",[管理no],[製品名],"管理no",1)

リンク項目が「管理no」のようですが、b.tblには001と002が表示されていますが、
フォームで表示が両方出ている場合は、グループ選択状態でないので、全てのデータを印刷すると思います。

12142 Re:フォーム上の現在表(サブフォーム含む)のみ、レポート印刷するにはどうすればいいんでしょうか?。 悲しげ 2001/07/04-20:58
記事番号12139へのコメント
どもっ、北加さん
これはもしかするとコマンド牡丹を使った絞り込み云々の問題ではなくて、
レポート定義の問題なのかもしれません。
私はこのような場合、1×1のタイルオブジェクトを使ったことがない(使う必要は無い?)ので、次のようにします。
複合レポートと云えば、基本的なパターンは台紙+伝票(または一覧表)オブジェクトですから、
その線で考えます。
先ずはファイル属性の対表表タブでa.tblを指定します(その前に、a.tblでは[管理No](?)について、単一化の絞り込み条件を設定しておきます)。
念のため、ここで「表編集の状態を継承」「表の操作を有効にする」の両方にチェックを入れておき、
「表の操作」牡丹では「単一化条件名」に上記の条件を入れておきます。
しかる後に、印刷に必要なテキストまたはラベルオブジェクトを適宜貼り付けます。
これがいわば「台紙」になります。
次、この台紙の上に、今度は伝票オブジェクトを載せることになります。
伝票オブジェクトの対象表はb.tblで、a.tblとの「リンク設定」と大抵は「表の操作」では「並べ替え条件」を設定することになると思います。

こうしておけば、会話処理なりフォームなり一括処理なりで、a.tblを絞り込んだ状態で印刷されるはずですから、
しかる後に、晴れてコマンド牡丹での設定の仕方(あるいはkevの書き方話)に問題が移行するような気がします。
12144 Re:フォーム上の現在表(サブフォーム含む)のみ、レポート印刷するにはどうすればいいんでしょうか?。 悲しげ 2001/07/04-21:23
記事番号12141へのコメント
どもっ、今村さん

>請求書などをレポートで作成していますが、レポートの形式は複合になっていました。
>その中に一覧表形式のオブジェクトを作成していました。
>
>メインフォームの項目を表引きでレポートに貼り付けるテキストの例
>#表引き([管理no],=,"a.tbl",[管理no],[製品名],"管理no",1)

こういう方法もありますね。
ただしこの場合は、一応は複合レポートとは云っても、台紙部(ファイル属性で設定する)対象表は存在しておらず、
一覧表(もしくは伝票)オブジェクトだけの単独レポートに近いものになります。
フォームに例えれば、単独の伝票(一覧表)フォームですね、
昔なつかしDOS桐ふうに云えば画面伝票。
今回の北加寿紀さんの場合は、フォームの方がメイン&サブになっているようですから、
レポートの方もそれに合わせた複合レポート(つまりファイル属性で設定する台紙部がメイン、
その上に載せる伝票オブジェクトがサブと云う、いわば「メイン&サブレポート」)で考えた方が対応関係が判りやすかろう、
と思って勧めてみた次第です。
フォーム側から印刷データを絞り込む場合、後者ではメイン部のa.tblが対象になりますが、
前者ではサブ部のb.tblについて絞り込む必要がありそうです。
12151 Re:フォーム上の現在表(サブフォーム含む)のみ、レポート印刷するにはどうすればいいんでしょうか?。 北加寿紀 2001/07/05-00:53
記事番号12142へのコメント
悲しげさん,アドバイス大変ありがとうございます。
>これはもしかするとコマンド牡丹を使った絞り込み云々の問題ではなくて、
>レポート定義の問題なのかもしれません。

>先ずはファイル属性の対表表タブでa.tblを指定します(その前に、a.tblで
>は[管理No](?)について、単一化の絞り込み条件を設定しておきます)。念
>のため、ここで「表編集の状態を継承」「表の操作を有効にする」の両方に
>チェックを入れておき、「表の操作」牡丹では「単一化条件名」に上記の条
>件を入れておきます。しかる後に、印刷に必要なテキストまたはラベルオブ
>ジェクトを適宜貼り付けます。これがいわば「台紙」になります。
>次、この台紙の上に、今度は伝票オブジェクトを載せることになります。伝
>票オブジェクトの対象表はb.tblで、a.tblとの「リンク設定」と大抵は「表
>の操作」では「並べ替え条件」を設定することになると思います。

悲しげさんのアドバイスの方法の方がスマートだと感じました。

ここで一つ疑問なのですが、台紙側の「ファイル属性の対表表タブ」で「表編集の状態を継承」はできても、
伝票側の「オブジェクト属性の対表表タブ」で「表編集の状態を継承」はエラーが出ないでしょうか。
(自宅でこのbbsを見ているため今すぐ、悲しげさんのアドバイスを確認できないのがざんねんです)
と、いうのも私が最初考えていたレポートでも、伝票側の「オブジェクト属性の対表表タブ」で「表編集の状態を継承」をチェックした状態で、
フォームから、印刷プレビューさせてみると、「すでにグループ化している表は継承できません」
というエラーがでました。これはサブフォームのグループ化を解除する必要があるということなのでしょうか?

12152 Re:フォーム上の現在表(サブフォーム含む)のみ、レポート印刷するにはどうすればいいんでしょうか?。 北加寿紀 2001/07/05-00:56
記事番号12140へのコメント
ケントさんありがとうございます
>
>この伝票オブジェクトのリンク設定は[管理]になっているのでしょうか。
>的外れだったらゴメンナサイ。

おっしゃるとおり、リンク設定はすべて a.tblの[管理]にしています。

12153 Re:フォーム上の現在表(サブフォーム含む)のみ、レポート印刷するにはどうすればいいんでしょうか?。 悲しげ 2001/07/05-01:20
記事番号12151へのコメント
>ここで一つ疑問なのですが、台紙側の「ファイル属性の対表表タブ」で「表編集の
>状態を継承」はできても、伝票側の「オブジェクト属性の対表表タブ」で「表編集
>の状態を継承」はエラーが出ないでしょうか。

この場合、伝票オブジェクト側では「表編集の状態を継承」をチェックする必要は全くなかったと思います。
リンク設定に応じて「表編集の状態」にかかわらず、自動的に多重化オープンされるはず。
それよりも、いわゆる台紙部の方ですが、「タイルオブジェクト」は使わないのが前提での話です。
タイルオブジェクトを載っけた場合の挙動は想像がつきません。(^^;)

あと、よくよく考えてみれば、台紙部と伝票部はそれぞれ別な表ですから、
台紙部すなわちファイル属性の対象表においては、表の操作/単一化は無用でしたね。
そもそもa.tblと云うのは、[管理No]について単一化されている表でしょうから。(^^;)

ああ、まだ仕事が終わらない。(T_T)
12154 Re:フォーム上の現在表(サブフォーム含む)のみ、レポート印刷するにはどうすればいいんでしょうか?。 北 加寿紀 2001/07/05-01:26
記事番号12141へのコメント
今村 誠さんアドバイス大変ありがとうございます。
今村さんのアドバイスも自宅で拝見しているため桐上で確認できず、残念です

>メインフォームの項目を表引きでレポートに貼り付けるテキストの例
>#表引き([管理no],=,"a.tbl",[管理no],[製品名],"管理no",1)

すごい、基本的なことで失礼かもしれませんが、どこに、この記述をいれればよいのでしょうか。

>リンク項目が「管理no」のようですが、b.tblには001と002が表示されています
>が、フォームで表示が両方出ている場合は、グループ選択状態でないので、全ての
>データを印刷すると思います。

これは私の説明不足だったと思います(もしくは私の大きな勘違い?)

サブフォームの伝票を5行に設定しているとします。グループ選択状態にし、
メインに001のデータを表示させると、サブには001のデータだけ表示されます。
グループ選択状態を解除すると、メインは001のデータでも、サブには、行数に収まる限り
001のみならず002のデータも表示されます。
レポート側は、このフォーム側のグループ選択状態にかかわらず、全データ分のレポートが表示されるという始末です。

とにかく、自分でアドバイスを確認してみることが必要だと痛感します、
確認でき次第、もう一度書き込みさせていただきます。
12158 Re:フォーム上の現在表(サブフォーム含む)のみ、レポート印刷するにはどうすればいいんでしょうか?。 今村 誠 2001/07/05-09:01
記事番号12154へのコメント
北 加寿紀さんこんにちは
>>メインフォームの項目を表引きでレポートに貼り付けるテキストの例
>>#表引き([管理no],=,"a.tbl",[管理no],[製品名],"管理no",1)

>すごい、基本的なことで失礼かもしれませんが、どこに、この記述をいれればよいのでしょうか。

一覧表もしくは伝票形式レポートのヘッダやフッタの部分に貼り付けると思います。

私のレポートは悲しげさんもご指摘のように、dosを変換して作成したので、
古いので北さんが悲しげさんのコメントを参考に、メインに置いたコマンドボタンで、
絞り込みをして、印刷された体験を是非コメントしてください。

悲しげさん、ちょっと忙しいのでwin風のレポートは作成する時間がありません。
ヒントだけ御願いします。
絞り込みはメインだけで編集表するでサブも絞り込むのでしょうか。
12165 Re:フォーム上の現在表(サブフォーム含む)のみ、レポート印刷するにはどうすればいいんでしょうか?。 悲しげ 2001/07/05-14:15
記事番号12158へのコメント
どもっ、今村さん、

>絞り込みはメインだけで編集表するでサブも絞り込むのでしょうか。

#12153にも書いたように、この場合は、ファイル属性で指定するa.tblの方
(いわゆるメインrpt)だけ「表編集の状態を継承」チェック、伝票オブジェクトの方の
b.tbl(いわゆるサブrpt)はこのチェックをしなくてもいいと思います。
少なくとも私の場合は、チェックしてもしなくても結果は同じでしたが、
チェックしていた場合、#12151で北さんが書いたように
「すでにグループ化している表は継承できません」のエラーが出ることもあるようですから、
やはりチェックしない方がいいのではないでしょうか?
「表編集の状態を継承」するとは文字どおり「する」であって、
これは例えばグループ化状態も含めるのでしょうね。
片や「しない」だと、伝票部(サブ部)対象表は、現在の表の状態とは全く独立して、
おそらく多重化されてオープンされるのではないでしょうか。
となると、印刷対象となるのはa.tblの状態(例えば絞り込み状態)にのみ規定されて、
ただただその「リンク設定」と「表の操作(並べ替え条件等)」に従って印刷されると云う。

ps:
北加寿紀さんって「きた・かずのり」なんですね、私は「きたか・としのり」かと思っていました。
失礼いたしました。<(_ _)>
失礼いたしてないかもしれませんが、先に謝っておきます。(^^;)
12173 Re:フォーム上の現在表(サブフォーム含む)のみ、レポート印刷するにはどうすればいいんでしょうか?。 北加寿紀 2001/07/06-11:29
記事番号12165へのコメント
悲しげさん、今村さんいろいろありがとうございます。
昨日はちょっと時間が無くて、確認できなかったので、これからトライしてみようと思います
また、結果ご報告します(^^;)
12179 いっぱい、いっぱいです 北 加寿紀 2001/07/06-19:29
記事番号12135へのコメント
 悲しげさん、今村さんお世話になります。
 悲しげさんにアドバイス頂いた方法でトライしてみました
・複合レポート(台紙+伝票)、リンク設定(「管理No.」)
 結果は、う〜ん、無理でした。
 見かけ上は「メイン&サブレポート」ですが、フォーム上で、A.tblを絞り込んでも全「管理No.」分のページ数プレビューできます。
なんか他に設定し忘れてるんでしょうか?

 自分の理解を深める為にも、お聞きしたいことがあります。
悲しげさんのアドバイスの中に
>リンク設定に応じて「表編集の状態」にかかわらず、自動的に多重化オープンされるはず

とありました。

 で、つまり、桐内部で「自動的に多重化オープン」していることで 「自動的に多重化オープン」された表
(つまりA.tbl(2)、B.tbl(2))からのデータを「印刷プレビュー」しているため、必要と思っているデータ以外も
「印刷プレビュー」されてしまう。
 と、考えていいんでしょうか?
 で、あれば、 桐内部の「自動的に多重化オープン」を、何らかの方法で断ち切り、
A.tbl(1)で絞り込んだデータのみ「印刷プレビュー」する事ができるのでしょうか?
(そうできれば、B.tblはグループ化+リンク設定されているから併合処理をしなくても済むというのは安易すぎ?(^^;)

これは、イベントを作成し、メインフォームに組み込んでやればいいんでしょうか?

なんか、自分にとってどんどん未知の領域に突入して行ってる気がします(^^;)
12184 Re:いっぱい、いっぱいです 悲しげ 2001/07/07-01:29
記事番号12179へのコメント
どもっ、北さん
「いっぱい、いっぱいです」なる云い方は時々聞きますが、これってどういう意味でしたっけ?

さて、

> 悲しげさんにアドバイス頂いた方法でトライしてみました
>・複合レポート(台紙+伝票)、リンク設定(「管理No.」)
> 結果は、う〜ん、無理でした。
> 見かけ上は「メイン&サブレポート」ですが、フォーム上で、A.tblを絞り込んで
>も全「管理No.」分のページ数プレビューできます。なんか他に設定し忘れてるんでし
>ょうか?

う〜ん、何でうまく行かないのか判りません。
ひょっとして、相変わらず台紙の上に「タイル」オブジェクトを載っけているのではありませんか?
だとすれば、「タイル」を使っちゃ駄目とは云いませんが、
少なくともここでタイル(即ちn×m分割のタックシール)を載せる必然性はありませんから、試しにそれを全て抜いてみましょう。
「台紙」または「メイン」部とは、ファイル属性でa.tblを編集対象表として設定し、
その「台紙」の任意の場所に「テキスト」または「ラベル」オブジェクトを配置してつくります。
伝票番号とか日付とか宛先とか、いわゆるヘッダ部データですね。
この部分で肝心なことは、「表編集の状態を継承」にチェックくらいだと思います。
で、明細部(もしくはサブrpt的に)として伝票オブジェクトを配置します。
これは説明不要で判りますよね? ここで必要なことは「リンク設定」だけです。
「レポートの表の項目」a.tblと「オブジェクトの表の項目」b.tblを、通常は同じ項目で結びつけます。
これでやり直してみて下さい。
ふつうはこれで、a.tblを絞り込めば、「表編集の状態を継承」して、絞りこんだなりのデータしか印刷されない筈です。

もしかすると、全データが印刷(プレビュー)されてしまうと云うのは、
既にレポートの問題ではなくて、フォーム上での絞り込み操作が間違っているのかもしれません。
とすれば、最初に述べたとおり、コマンドボタンの記述方法の問題として、他に方に振りたいと思います。

なお、後段の「多重化オープン」云々と、この度の印刷がうまく行かないこととは全く無関係ですから、
錯乱を避けるためにもこれ以上はふれないことにします。
「多重化を断ち切るためにはどうしたらいいか」等と云う発想自体が無意味です。
このようなことで「いっぱい(?)」になる必要は皆無です。(^^;)
12185 解決しました!! 北 加寿紀 2001/07/07-20:35
記事番号12184へのコメント
悲しげさん、今村さんお世話になります。
いろいろアドバイスありがとうございます。
無事解決しました。
 いやぁ、恥ずかしい話、悲しげさんの書き込みを見た後に、「こりゃ、絶対どっかでポカミスしてるわ」と思い、
一つ一つ属性を見ていったら、ありました、大チョンボが。
コマンドボタンに印刷機能を設定してたのですが、そこの機能パラメータが、表の状態を継続しないようになってました。
いやはや...
早速実行すると、思い描いていたとおり、必要な部分のプレビューができるようになりました。
(あ、ちなみにタイルオブジェクトはつかってないです(^^;))
ほんと、みなさまがたには大変ご迷惑おかけいたしました。
今回は本当に勉強になりました。

戻る