過去の桐井戸端BBS (桐ver.9)
22676 レポート印刷で伝票オブジェクトの繰り返し数を超えたための空白頁が印刷されないようにしたい しぼうかん 2003/10/08-15:41
いつもお世話になっています。またよろしくお願いします。

サブフォーム名を変数(&注文書明細)で指定して、
メインフォームにある[発注会社]の値("A社"または"B社")によって
サブフォーム《A社注文書1.wfm(編集表=注文書S1.tbl)と
B社注文書.wfm(編集表=注文書S2.tbl)》を切り替えて
入力・表示しています。

このフォームのイメージ通りに印刷したいと思い、
複合レポート(印刷注文書.rpt)にフォームに注文書S1.を対象表とする
伝票オブジェクトと注文書S2オブジェクトを対象表とする
伝票オブジェクトを重ねて配置しました。

そして上に重ねたオブジェクトの背景を透明にして、かつ#条件選択関数を
使ってデータの表示と非表示を切り替えて印刷しようとしましたが
このレポートの定義方法では未定義のデータを印刷するように
処理されてしまい真っ白けの印刷がされてしまいます。

原因はサブフォームで入力したデータ数がレポートに設定した
伝票オブジェクトの繰り返し数を超えている事だと分かっているのですが、
伝票オブジェクトの繰り返し数を超えるデータは本来印刷しないデータ
なので無視してほしいのですがどうすればいいのか教えて頂きたいのです。


でも以上の説明ではたぶん理解してもらうのは難しいと思うので今回は
最初から補完BBSを使ってもう一度説明させて頂きます。

以下は補完BBSにUPしたファイルを使っての説明です。

注文書.wfmに入力した内容を出来るだけそのままのイメージで
印刷しようとして印刷注文書.rptを作ったのですが、注文書.wfmの
2頁目に当たるデータが真っ白けに成ってしまいます。

注文書S2.tblには、伝票IDが「1」であるデータが7件あります。
レポート側で作成している伝票オブジェクトの繰り返し数は5となっています。
したがって、この伝票IDのデータを印刷するためには2頁必要です。

これが白紙の2頁目です。

計算式のみのテキストしか伝票オブジェクトに配置がないため、
未定義値のデータを2件印刷しているという状態になっています。

印字しない設定になっているデータ(今回の場合7件)を無視して
レポートで2頁目にちゃんとB社注文書の内容を印刷したいのですが
どうすればいいのでしょうか?
22682 Re:レポート印刷の空白頁を防ぎたいのですが 悲しげ 2003/10/08-17:43
記事番号22676へのコメント
どもっ、しぼうかんさん
長くならないように(^^;)結論のみを書きます。
レポートの場合は、フォームのように細かい制御は利かないので、
私なら別々のレポートを使って処理すると思います。

と云いつつ、もう少し続けますと(^^;)
ぢつは注文書S1.tblと注文書S2.tblの関係がよく判りません。
A社とB社の違いかと思っていたら、S2.tblの方にA社のデータも入っているし。
で、二つの表の関係が判らないままながら、S2.tblの方に例えば「B社絞り込み」なる絞り込み条件を設定しておいて、
これをレポートの伝票2オブジェクトの対象表タブから設定しておけば、2頁目空出力は無くなります。
これが意味のあることなのかどうかは不明ながら。
ついでに、S1.tblの方にも絞り込み条件を設定しようとしましたが、
表の意味するところが全く判らないので止めました。(^^;)

どうしてふたつの伝票オブジェクトをわざわざ重ねて印刷しなければならないのかもよく判りません。
先に述べたように、それぞれの印刷すべきデータを(必要なら絞り込んで)別々のレポートで印刷すればいいのに、
と思う訳です。あるいは、2表のデータを併記させたいと云うことであるのなら、
むしろ「重ねないで」出力すべきでは?

22693 Re:レポート印刷の空白頁を防ぎたいのですが しぼうかん 2003/10/09-18:11
記事番号22682へのコメント
いつも返信ありがとうございます。

>ぢつは注文書S1.tblと注文書S2.tblの関係がよく判りません。


詳しくこの説明をするとまた複雑で難解な文章になってしまいそうですが、頑張ってみます。

悲しげさんの疑問点がフォームを会社別に作っているのに
なぜテーブルが一緒になっているのか?という事なのかな
と勝手に推測して答えて見ます。

最初に作った時は確かにA社の明細データ(A社のサブの対象表)とB社の
明細データ(B社のサブの対象表)は分けていました。

しかしこのメインフォームの目的は

(目的1)A社やB社への注文書を印刷する事
(目的2)(処理1)〜(処理4)の処理をする事です。



(処理1)A社の明細データとB社の明細データを結合(桐の機能の意味ではありません。)

(処理2)並べ替え

(処理3)絞り込み単一化

(処理4)注文台帳.tblへの併合


(目的2)の処理をする時にA社の明細データとB社の明細データが
分かれていると処理方法がかなり複雑になってしまう為にA社の明細データと
B社の明細データを両方とも注文書S2.tblに入れる事にしました。

※実際には明細データはA社,B社以外にまだC社,D社,E社と
5社あるので(目的2)の処理はかなり複雑に成りそうです。

>絞り込み条件を設定しておいて、これをレポートの伝票2オブジェクトの対象表タブから設定しておけば、2頁目空出力は無くなります。

今現在は注文書.tblの1レコードを絞り込んで印刷する方法をとっているのですが、この方法だと


(処理5)"注文書.tblの1レコード目から3レコード目までをコマンドボタンを使って連続で印刷する"


(処理5)をする方法が思いつきません。


>別々のレポートで印刷すればいいのに、と思う訳です。

この部分について質問なのですが、レコード毎にレポートを切り替えて
(処理5)の処理が可能でしょうか?

>2表のデータを併記させたいと云うことであるのなら、むしろ「重ねないで」出力すべきでは?

いえ、2表のデータの併記ではなくてレポートに配置した伝票オブジェクトには
どちらかのデータのみを印刷をしたいのです。

伝票オブジェクトにどちらのデータを印刷するかは注文書.tblにある
[発注会社]によって変わります。

また重ねているのは印字する専用注文書用紙の印字領域がその場所なのでその用紙にあわせています。

この説明は質問のポイントをとらえているでしょうか?
22699 Re:レポート印刷の空白頁を防ぎたいのですが 悲しげ 2003/10/09-21:19
記事番号22693へのコメント
説明は殆ど理解できなかったので(^^;)、気がついた部分だけコメントします。

何となくではありますが、私の印象ではふたつの伝票オブジェクトはひとつの
レポート上に重ねないで、それぞれ別なレポートを作って対応した方がいいだろうとの固定観念をぬぐえませんのです。

>>2表のデータを併記させたいと云うことであるの
>>なら、むしろ「重ねないで」出力すべきでは?
>いえ、2表のデータの併記ではなくてレポートに配置した伝票オブジェクトには
>どちらかのデータのみを印刷をしたいのです。

であれば、それぞれどちらかだけのデータを、どちらかだけの伝票オブジェクトを設定したレポートを使って印刷させれば、
本件の目的(タイトル)である「レポート印刷の空白頁を防ぎたい」は素直に達成できるのではありませんか?

>また重ねているのは印字する専用注文書用紙の印字領域がその場所なので
>その用紙にあわせています。

私の疑問の中心は、どうして「ふたつの伝票オブジェクト」を重ねる必要があるのか、の方にありまして、
その意味で上記は「専用注文書用紙の印字領域」に重ねていることの説明でしかないので、すれ違いました。(^^;)
重ねる理由は、やはり#22676の冒頭で書かれたように、単に「フォームでそうやっているから、
レポートでもそうしたい」と云うだけなのでしょうか?
う〜ん、やはりレポートはフォームのようには行かないんじゃないでしょうか?
「レポート開始」イベントとか「レポートオブジェクト操作」コマンドなんてのがあればいいんですけどね。(^^;)



>(処理5)"注文書.tblの1レコード目から3レコード目までを
>コマンドボタンを使って連続で印刷する"
>・・・・・、レコード毎にレポートを切り替えて(処理5)の
>処理が可能でしょうか?

ここの前段はよく判らないので無視して(^^;)、部分的にコメントすれば、
コマンド牡丹だけでやる方法は思いつきませんが、一括処理コマンドを使えば
一般的には可能だと思います。
方法のひとつは、レポート印刷にかける前に、当該データを絞り込んでから、当該レポート印刷をさせる。
方法のふたつめは、「レポート印刷」コマンドのパラメータである「開始ページ」と「終了ページ」を変数を使ってうまく指定する。
例えば
  …,開始ページ=&頁,終了ページ=&頁,…
と記述して、n行目を印刷したい場合は &頁=n とする(繰り返しループ)。

ただし、いずれも今回の件についてではなく、あくまで一般論です(しかも重ねる想定外の)。

22709 このへんがいっぱいいっぱいです。 しぼうかん 2003/10/10-17:56
記事番号22699へのコメント
>であれば、それぞれどちらかだけのデータを、どちらかだけの伝票オブジェク
>トを設定したレポートを使って印刷させれば、本件の目的(タイトル)である
>「レポート印刷の空白頁を防ぎたい」は素直に達成できるのではありませんか?


すいませんが最初の質問のタイトルが説明不足でした。
《複数レコードを連続でレポート印刷する場合に空白頁を印刷してしまうのを
防ぎたいのですが》とするべきでした。

たぶんこの質問ミスが原因でよく分からない説明になったのかもしれません。

画面に表示されている1件のみを印刷する場合は絞り込みのイベントも簡単なのでわかります。
(実際今はそうしています。)


>どうして「ふたつの伝票オブジェクト」を重ねる必要があ
>るのか、の方にありまして、その意味で上記は「専用注文書用紙の印字領域」
>に重ねていることの説明でしかないので、すれ違いました。(^^;)
>重ねる理由は、やはり#22676の冒頭で書かれたように、単に「フォームでそう
>やっているから、レポートでもそうしたい」と云うだけなのでしょうか?


う〜んどうすれ違っているのかがよくわからないのですが、
かりに伝票オブジェクトを重ねないとすると印字場所が違ってきます。

伝票1と伝票2のオブジェクトを同じ位置に印刷したいので重ねていると言う事なのですが…

もしかして、重ねないで別々のレポートを作ればいいのになぜ1つのレポートで印刷しているのか?という疑問なのでしょうか。

だとすれば答えは複数のレポートを使って印刷する方法がわからなかったのでそうしていましたという事です。


>コマンド牡丹だけでやる方法は思いつきませんが、一括処理コマンドを使えば
>一般的には可能だと思います。


コマンドボタンといっても左クリックイベントで一括処理イベントは書くつもりでした。


>方法のひとつは、レポート印刷にかける前に、当該データを絞り込んでから、
>当該レポート印刷をさせる。


この絞り込みのイベントの書き方がわかりません。
1件だけなら

(1)注文書.wfmで現在表示中の[伝票ID]を変数&伝票IDに取る。
(2)編集表をA社注文書1.wfmまたはB社注文書.wfmに切り替える。
(3)&伝票IDで絞り込む。
(4)編集表を注文書.wfmに切り替える。
(5)&伝票IDで絞り込む。
(6)印刷する。

という(1)〜(6)の方法で出来ますが、(1)で現在表示中のデータ(仮に
伝票ID=1とする)だけでなく、伝票IDが2と伝票IDが3の2レコードも一緒に印刷するとなるとイベントの書き方がよくわかりません。

そこで2つ目の方法ですが別々のレポートで印刷する事を想定しているとすると
1件目のデータがA社のデータで2件目のデータがB社のデータで3件目のデータがA社のデータだとします。

単純に開始ページ=&頁,終了ページ=&頁とやるとn行目がA社のデータをA社用の
レポートで印刷して(n+1)行目はB社のデータをB社用のレポートで印刷して
(n+2)行目はA社のデータをA社用のレポートで印刷する事になるのだと思いますが、
そのイベントの書き方がわかりません。

う〜んたぶん今回は…、じゃなくて今回もうまく説明出来なかったようです。

実は今回の説明は最初から自信が無かったので補完BBSを使って実際のファイルを見てもらえば
理解してもらえると思っていたのですが甘かったようです。

もし今回の説明でも全然分からないようでしたら自分の説明力不足として諦めることにします。

その場合はせっかくの返答を生かせなくてすいませんでした。

22710 取り急ぎ 悲しげ 2003/10/10-19:36
記事番号22709へのコメント
どもっ、しぼうかんさん
ふたつの伝票オブジェクトを重ねる理由はついに判りませんでした。
で、次の点についてだけ部分的にコメントさせていただきます。

>そこで2つ目の方法ですが別々のレポートで印刷する事を想定しているとすると
>1件目のデータがA社のデータで2件目のデータがB社のデータで3件目のデータ
>がA社のデータだとします。
>単純に開始ページ=&頁,終了ページ=&頁とやるとn行目がA社のデータをA社用の
>レポートで印刷して(n+1)行目はB社のデータをB社用のレポートで印刷して
>(n+2)行目はA社のデータをA社用のレポートで印刷する事になるのだと思い
>ますが、そのイベントの書き方がわかりません。

「イベント」ではありませんが、

 ジャンプ 行番号=1
 繰り返し(.not #EOF)
  &n=#行番号
  if([某項目]="A社")
   レポート印刷 "A社用.rpt",…,開始ページ=&n,終了ページ=&n,…
  else if([某項目]="B社")
   レポート印刷 "B社用.rpt",…,開始ページ=&n,終了ページ=&n,…
  else if([某項目]="C社")
   レポート印刷 "C社用.rpt",…,開始ページ=&n,終了ページ=&n,…
  ・・・・・・
  end
  ジャンプ 行番号=+1
 繰り返し終了

……って、挙動未確認。(^^;)
あ、それと、これは単票つまり1行1枚のような場合に限定でしょうから、
今回の用途にそのまま使えるかどうかは不明です。(^^;)
22716 Re:レポート印刷の空白頁を防ぎたいのですが うにん 2003/10/11-00:38
記事番号22676へのコメント
現物を見たら何をしたいのかよくわからなくなりました(^^;

>原因はサブフォームで入力したデータ数がレポートに設定した
>伝票オブジェクトの繰り返し数を超えている事だと分かっているのですが、
>伝票オブジェクトの繰り返し数を超えるデータは本来印刷しないデータ
>なので無視してほしいのですがどうすればいいのか教えて頂きたいのです。

A社のデータは合計(S1)の方を印刷しているのだから明細(S2)の7件を
全部印刷しなくてもいいというのはわかりますが、B社のデータが5行以上の
場合も切り捨てていいんでしょうか?

>印字しない設定になっているデータ(今回の場合7件)を無視して
>レポートで2頁目にちゃんとB社注文書の内容を印刷したいのですが
>どうすればいいのでしょうか?

印字しないといってもレコードがあってたまたま印字するデータが#未定義なだけなので無視しろといっても。。。

[伝票ID]ごとに5行だけに絞り込んでから印刷すればよさそうですが。
5行以上あるときにどの5行を印刷するべきかという情報が入力されていないので、
どうやって絞り込むかは考えようがありませんが。

注文書S1と注文書S2を結合して1つにしてしまえば、伝票を2つ重ねたりしなくてもできるような気がします。

22720 Re:レポート印刷の空白頁を防ぎたいのですが うにん 2003/10/11-01:26
記事番号22716へのコメント
>注文書S1と注文書S2を結合して1つにしてしまえば、伝票を2つ重ねたり
>しなくてもできるような気がします。

試しに作ってみようとしたら、注文書S1の存在意義がわからなくなりました。注文書S2を
[伝票ID][A社ID]でグループ化して[部数]の合計値を保持しているだけのように見えます。
フォームやレポートで表示だけできればいいものなのでは?

注文書の[発注数量]も、明細の合計値であるならば、このテーブルに持つべきではないでしょう。
A社は240で合計になってますが、B社の値が「4」なのでますます謎ですが。こっちは最大値なの?

22727 少し希望が出てきました。 しぼうかん 2003/10/11-21:59
記事番号22710へのコメント
悲しげさん「イベント」(本当の呼び名は一括処理コマンド?)
の記述例有り難うございました。

殆どあきらめていたのですが、繰り返しコマンドとifコマンド
そしてレポートのパラメータを組み合わせて使う方法は思いつきませんでした。

例えばif([某項目]="A社")とレポート印刷 "A社用.rpt"の
コマンドの間に&A社注文書2のデータを伝票IDで絞り込む
コマンドを追加すればうまく行くような気がします。

プリンターが無いので火曜までテストする事が出来ないので火曜にテスト結果を報告します。

少し希望が出てきました。

22728 Re:レポート印刷の空白頁を防ぎたいのですが しぼうかん 2003/10/11-22:21
記事番号22720へのコメント
うにんさん、返信ありがとうございます。

百聞は一見にしかずといいますから現別のファイルがあればへたな説明もカバーできると思ったのですがやはりダメですね。

A社のデータは合計(S1)の方を印刷しているのだから明細(S2)の7件を
全部印刷しなくてもいいというのはわかりますが、B社のデータが5行以上の
場合も切り捨てていいんでしょうか?

あ、間違えました。
確かにこの場合は切り捨ててしまったら変な事になってしまいます。
質問内容に関係ないと思った部分を大幅に簡素化した時に間違った様です。


>[伝票ID][A社ID]でグループ化して[部数]の合計値を保持しているだけのように見えます。
フォームやレポートで表示だけできればいいものなのでは?


ほぼその通りですが[A社ID]は注文書S2の入力デ−タから自動的に決まる訳ではないので、
この項目は手入力が必要です。。

まあこの項目も注文書S2.tblに持ってしまえばいいのかもしれませんが、
その場合は注文書S2.tblに入力するデータ行数分繰り返して[A社ID]を入力する事になります。


>A社は240で合計になってますが、B社の値が「4」なのでますます謎ですが。こっちは最大値なの?


B社への注文数は[部数]の合計では無くて、[部数]の件数で数えます。
この部分は新ファイルの説明のの※1で説明しています。

これらの事をA社やB社という言葉でうまく説明するのはもうかなり難しくなってきたので、
もう一度説明をやり直します。

但し、詳しく説明し始めるとまた説明が途中で破綻しそうなので実際のファイルにもう少し近づけたファイルを
作りましたのでもう一度UPします。

22729 新ファイルをUPしました。 しぼうかん 2003/10/11-22:33
記事番号22676へのコメント

ほぼ一日かかった努力作ですがチェックが不完全だと思うので所々不具合が
あるかもしれません。もうへとへとです。

紙では無い特殊で定型の材料に社名印刷をした物を1〜1000部注文を受けて
発送する為に使う注文書をイメージしてみて下さい。

作業の流れは

(1) "あ社"から10部の自社名入印刷物の注文が10個来ました。(注文書には
   印刷イメージの説明指示が有ります。)

(2) 受注台帳に"あ社"のデータ(注文数量や発送先住所などを入力します。

(3) "あ社"の注文書の印刷イメージの説明指示を元にデザイン会社へ印刷の
  原稿作成を依頼するための"注文書.wfm"(メイン)と"デザイナー会社注文書.
  wfm"(サブ)を使って入力して"注文書.rpt"と専用注文書用紙を使って印刷した注文書を渡します。
  この時に印刷イメージをデザイン会社の人に説明します。

※1 この場合注文書の数量は"あ社"の印刷物の注文部数がどれだけであろうと
  印刷原稿を作るだけなので1社は1件として計算しますので数量の欄に
  デザイン会社への注文書の数量欄は件数を印刷する事になります。

(4) デザイン会社から"あ社"の印刷原稿が出来上がってくるとこれをユーザーに
   チェックしてもらうために原稿のコピーを取り送ります。

  この時にどの原稿をユーザーに送ったかを"注文書.wfm"(メイン)と"ユーザー
  チェック用注文書.wfm"(サブ)を使って入力します。

※2 このデータは現在"あ社"のデータの作業がどこまで進行しているのかを
   記録して置くための物なので印刷しませんしデータ入力行数の制限もありません。

(5) ユーザーから原稿のokが出た場合は印刷会社へ印刷するデータを"注文書.wfm"
  と"印刷注文書1.wfm"と印刷会社注文書2.wfmで入力して注文書.rptで印刷した
  "注文書"を渡します

※3 もちろんokが出ない場合もあるのですが、ファイル数を減らし、説明を簡単に
  する為にUPしたファイルではokの場合のみを想定してあります。

  そしてこの注文を出すときは印刷会社の都合で原稿8点を1つの大きな台紙に
  張り込んで渡す事になっています。
  16点の原稿を印刷する時は2枚の台紙を渡すことに成ります。

  そして仮にこの1つの台紙に"あ社"〜"く社"の原稿を貼り付けた場合は
  "あ社"〜"く社"の[部数]の合計とこの台紙に付けた[印刷用ID]を台紙に
  書き込みます。

  この場合印刷会社へ渡すために印刷する注文書には各印刷用IDごとの部数集計と
  印刷用IDで集計した部数と伝票IDでまとめてさらに集計した部数合計を印刷します。

  なんかよけいわからなくした可能性が高いですがこんな感じの説明でわかりますでしょうか?


本当はデザイン会社や、印刷会社などの各社のデータを別フォームで入力するのだから、
テーブルも別にした方がいいとは思います。

ただ、受注台帳で"あ社"のデータは原稿作成中なのか、今ユーザーのチェック中なのか、
印刷中なのかを知る事が出来るようにする為(3)〜(5)のデータ入力後に
受注台帳へ現在の作業を転記するコマンドボタンを注文書.wfmに作ってあります。

このコマンドボタンのコマンドを実行する為には各社の明細データを合算して
並べ替えや絞り込みをする必要があるのですが、桐の結合表では複数項目を
組み合わせて主キーとする複合キーを使う事が出来ないのでメインサブフォームの様には行きません。

桐の結合表で複合キーが使えたら多分各社のデータを分割しておいて結合表を使ったかもしれません。
Accessとかでは使えるようですが、桐も使えるようになってほしいものです。

22733 Re:レポート印刷の空白頁を防ぎたい 悲しげ 2003/10/12-13:28
記事番号22729へのコメント
延々と説明いただきましたが、本題たる「レポート印刷の空白頁を防ぎたい」
にどう関連するのかから、ますます遠ざかったような印象があります。(^^;)

なお、本題については#22709で《複数レコードを連続でレポート印刷する場合に空白頁を印刷してしまうのを
防ぎたいのですが》に言い換えられていますが、
「複数レコード」とは単にデータが1レコードだけではないことでしょうし、
またそれが「不連続」ではない(?)と云っているに過ぎず、この言い換えの意味も
また読み取ることはできませんでした。

で、#22729の説明関連は大胆にパスさせて戴き(^^;)、総体としての印象では、
項目構成もレコード数も異なるふたつの表を対象表としているところの、
ふたつの伝票オブジェクトをひとつのレポート上で「重ねた」場合、データの中味によっては、
空白頁その他の不具合が生ずることはむしろ当然のことだと感じました。

対策は、項目もレコード数も異なるのだから、それぞれの伝票オブジェクトは
それぞれ別レポートで出力させるべきではないのでしょうか?
あるいは、ふたつの表を何らかの形で合体(?)させたひとつの表を作成するなりして、
その表を対象表とする「ひとつの」伝票オブジェクトでもってレポートを作った方が簡単なのではないでしょうか?

以上、外している可能性80%ながら。(^^;)

22754 Re:レポート印刷の空白頁を防ぎたい しぼうかん 2003/10/13-19:34
記事番号22733へのコメント
毎度お世話になります。
なかなか文章説明力と読解力が上がらない、しぼうかんです。


>延々と説明いただきましたが、本題たる「レポート印刷の空白頁を防ぎたい」
>にどう関連するのかから、ますます遠ざかったような印象があります。(^^;)


はい、新ファイルのUPとその説明は本題の説明とは余り関係ないだろうとは思っていましたが、

#22682で悲しげさんからは

>ぢつは注文書S1.tblと注文書S2.tblの関係がよく判りません。

#22720でうにんさんからは

>試しに作ってみようとしたら、注文書S1の存在意義がわからなくなりました。
>注文書S2を[伝票ID][A社ID]でグループ化して[部数]の合計値を保持している
>だけのように見えます。
>フォームやレポートで表示だけできればいいものなのでは?


という風にレポートについてよりも注文書S1.tblと注文書S2.tblの関係や意味
についての疑問を問いかけられましたので、自分にはわかりませんが、それが
何か必要な情報なのかな?と思い再度説明し直した訳でした。


>なお、本題については#22709で《複数レコードを連続でレポート印刷する場合
>に空白頁を印刷してしまうのを防ぎたいのですが》に言い換えられていますが、
>「複数レコード」とは単にデータが1レコードだけではないことでしょうし、
>またそれが「不連続」ではない(?)と云っているに過ぎず、この言い換えの
>意味もまた読み取ることはできませんでした。


これは#22699で説明していただいた方法では複数のレコードを連続で
レポート印刷する事が出来ないと勘違いしたので言い直したのです。
しかし#22710の具体例を書いていただいたのでこの勘違いは解消しました。


>対策は、項目もレコード数も異なるのだから、それぞれの伝票オブジェクトは
>それぞれ別レポートで出力させるべきではないのでしょうか?


#22710の方法の事ですよね。はい火曜に実際のファイルで試してみます。


>あるいは、ふたつの表を何らかの形で合体(?)させたひとつの表を作成する
>なりして、その表を対象表とする「ひとつの」伝票オブジェクトでもってレポ
>ートを作った方が簡単なのではないでしょうか?


UPしたファイルのメインサブフォームは"複数"のリンク項目で"合体(?)"されていますが、
出来ればテーブル同士を複数項目を主キーとして"結合"させる事が
出来ればその方がデータベースらしい感じがします。

しかし桐ではそれが出来ないので、"合体"のさせ方を考えた結果、
DBソフトらしいデータの持ち方とは思いませんが、1つのテーブルに複数の使用項目の違う会社の
明細データを同居させるという方法を考えつきました。

ps
関係ない話ですが、今日のニュースで日本人の10人に3人が私のネームだといってました。こうなると国民病ですね。
22792 試行錯誤の途中報告です。 しぼうかん 2003/10/14-21:08
記事番号22754へのコメント
最初にUPしたファイルの内"注文書.tbl"に[印刷]という項目をつけ加え、
この項目が"未"の時は印刷して、"済"の時は印刷しない様にしました。

また重ねていた伝票オブジェクトをA社注文書.rptとB社注文書.rptに分けて作りました。
(一部のみの変更ですが一応ファイルをUPしておきました。)

そして悲しげさんに教えて頂いたコマンド文を改悪して以下の通りに記述して試してみました。


手続き定義開始 印刷::マウス左クリック(長整数 &マウス位置[2]…)
ジャンプ 行番号=1
繰り返し(.not #EOF)
&印刷頁=#行番号
&伝票ID=[伝票ID]
if([発注会社]="A社" .and [印刷]="未")
行訂正 [印刷]="済"
編集表 "注文書S1.tbl"
絞り込み [伝票ID]{=&伝票ID}
編集表 &注文書
レポート印刷 "A社注文書.RPT",開始ページ = &印刷頁,終了ページ = &印刷頁
編集表 "注文書S1.tbl"
絞り込み解除 *
else if([発注会社]="B社" .and [印刷]="未")
行訂正 [印刷]="済"
編集表 "注文書S2.tbl"
絞り込み [伝票ID]{=&伝票ID}
編集表 &注文書
レポート印刷 "B社注文書.RPT",開始ページ = &印刷頁,終了ページ = &印刷頁
絞り込み解除 *
end
ジャンプ 行番号=&印刷頁+1
繰り返し終了
手続き定義終了


しかし

"注文書S1.tblは既にグループ化されています。"
"グループ化された表は継承出来ません。"

としかられてしまい印刷出来ませんでした。

そこでA社注文書.rptとB社注文書.rptのレポートの伝票オブジェクトの定義で
"表編集の状態を継承"のチェックをハズして試してみました。

すると"未定義の項目名があります"とエラーが出てしまいます。

明日もう少しいろいろ試して見てもう一度報告します。

22814 試行錯誤の途中報告2です。 しぼうかん 2003/10/15-19:29
記事番号22792へのコメント

>すると"未定義の項目名があります"とエラーが出てしまいます。

この原因は

>編集表 "注文書S1.tbl"
>絞り込み解除 *

この後に

編集表 &注文書

の行を入れなかったのが原因でした。

ただ、まだうまくいっていないのでもうしばらくやってから報告します。

22845 データの中味に応じて異なるレポートファイルで印刷 悲しげ 2003/10/16-17:34
記事番号22699へのコメント
もはや完璧に外し切っているのかもしれませんが(^^;)、外しているなりの続き(別法)も挙げておきます。

[某項目](あるいは複数項目もあり?)をグループ項目とした伝票
(または一覧表)フォームを用意します。とりあえず、これは印刷
専用の作業用フォームと位置付けておきます。当然ながら多重化の許可に
チェックを入れておきます。

で、当該フォームを開いて次のように印刷させてみる。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
グループ指定 先頭,終了状態=&終了
繰り返し(&終了=1)
 &RPT=#cond([某項目]="A社","A社用.rpt"\
      ,[某項目]="B社","B社用.rpt"\
      ,[某項目]="C社","C社用.rpt"\
      ,・・・・・\
      )
 レポート印刷 &RPT,…,編集表=する,…
 グループ指定 次,終了状態=&終了
繰り返し終了
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
このようにしても、データの中味に応じて異なるレポートを使って
印刷できるような気がします。ただし、動作未確認。(^^;)

22889 結果報告です。 しぼうかん 2003/10/17-19:07
記事番号22845へのコメント
悲しげさん、こんばんは.

悲しげさんに教えていただいた一括処理を少し変更した#22792と
#22814の一括処理でうまく行きました。

#22814でまだうまくいっていなかったのはレポートに貼り付けてあった
今回の質問部分とは全然別のオブジェクトが原因でした。

今回新たに教えて頂いたレポートファイル名を変数で指定する方法も
理屈は同じ様なので多分うまくいくと思います。

毎度の事ながら、本当にありがとうございました。m(_ _)m

戻る