- ベストアンサー
Accessのレポートで
お世話になります。 Access2002を使用しています。 レポートで業者への発注履歴を出力するのに、一度出力したレコードを次のレポート時に出力しないようにするには どのようにしたらいいでしょう。 発注履歴テーブルに発行済フィールドを作成し、レポートを出力したらその数値が0から1に変わり、次の出力時のクエリで1をひらわないようようにすればいいと思うのですが、その手法がわかりません。 どなたかご教授ください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
参考URLの内容を拝見しました。 「レコードは3件なのに2行しか表示されない」との事ですが 罫線はURLの例の通り10行まで印刷されるのでしょうか? そうならばチェックするのはこのあたりでしょうか。 ・ヘッダー_Formatで i = 0 でなく i = 1 にしていないか ・j の値を決める DCount 関数が 3 でなく 2 を返していないか ※DCount部をコピーしてAlt + F11でイミディエイトウィンドウを表示し ?DCount(...) と貼り付けEnterを押せば値が分かります。 ・詳細_Format の i = j の場合の処理で Visible = True でなく Visible = False としていないか 参考URLのロジックで、最後の1件だけ正しく表示されないというならば 「 i の値が実際に出力した行数よりも 1 多くなっている」 「 j の値が実際に出力する全行数よりも 1 少なくなっている」 「 i = j の最後の1件を出力する際の処理が間違っている」 のいずれかが原因だと思われますので、その辺りを考えてチェックしてみてください。
その他の回答 (1)
- chairwarmer
- ベストアンサー率41% (163/393)
「レポートを印刷 → 発注履歴テーブルを更新して発行済にする」 の作業を一まとめにしてマクロを作るやり方が簡単かと。 発行済は0と1でもよいのですが、日付で管理する方がよりお勧めです。 1.発注履歴テーブルに「発行日」のフィールドを追加 (値要求:いいえ で最初はすべて空にしておく) 2.レポートのレコードソースとなっているクエリに「発行日」を追加して 抽出条件を Is Null にしておく (これで、発行日が空のデータだけが抽出されるようになる) 3.更新クエリを新規に作成し、発注履歴テーブルの「発行日」を Now() で更新するよう設定、その他の抽出条件は2.のレポートのソースに なっているクエリと全て同じにしておく。 4.マクロを新規に作成し メッセージの設定:いいえ レポートを開く:印刷するレポート(ビュー:印刷) クエリを開く:3.で作成した更新クエリ メッセージの設定:はい (「メッセージの設定」は「レコードが○件更新されますがよろしいですか?」 といった確認メッセージを一時的に表示させなくするため) と作成してこのマクロを実行すれば、レポートの印刷を行うと同時に 印刷済みのレコードの「発行日」に印刷時の日時が入り 次回から印刷対象とならなくなります。 ただし、ACCESSの側では実際に印刷が成功したかどうかは分かりませんので プリンタトラブルなどで印刷が失敗しても、一度レポートで出力したデータは「発行済」になってしまいます。 その時は、発注履歴テーブルの「発行日」の日時を確認し 再度印刷したいデータは発行日を消して空にしておけば良いわけです。 上記はあくまで一例ですのでご参考までに。
お礼
ありがとうございます。 改善できました。 追加質問で申し訳ないのですが、 http://support.microsoft.com/default.aspx?scid=kb;ja;404909&Product=accJPN を参考に10行の罫線を引こうとしたら、クエリーで3レコード検索しているのに、レポートでは2レコード(最後のレコードが出ていません) どのように改善すればいいのでしょうか?