• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ACCESS  日付が変わった場所で改ページしたい)

ACCESS日付変更時の改ページ方法

このQ&Aのポイント
  • ACCESSで日付が変わった場所で改ページする方法について教えてください。
  • 日程表で、詳細に「日付」「場所」「時間」「内容」などのフィールドがあり、A5の用紙に印字しています。1枚の用紙に収まらない場合、2枚目に順次印字されています。2枚目に移る際に、日付が変わった時点で改ページしたいです。
  • 色々調べてみましたが、Access2013のグループ化機能ではうまくできませんでした。どのようにしたら日付が変わった場所で改ページすることができるでしょうか?ご教示ください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

レポートの「詳細」のどこか適当な位置に「テキストボックス」を挿入して下さい。 「テキストボックスの名前は「日付1」にして、レコードソースを「日付」にしておきます。そして、このテキストボックスの「可視」を「いいえ」にします。 次に、レポートの「詳細」の一番上に「改ページコントロール」を挿入して下さい。 「改ページコントロール」の名前は「改ページ1」にしておきます。 次に、レポートの「詳細」の「フォーマット時」のイベントプロシージャの部分に、次の1行を追加します。 改ページ1.Visible = Not IsNull([日付1]) 例えば Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) 改ページ1.Visible = Not IsNull([日付1]) If HI <> Me.行程_日付 Then Me.直線51.Visible = True HI = Me.行程_日付 Else (以下略) のように追加します。 こうすると「日付にデータが入力されているレコードが来た時だけ改ページする」ようになります。 追加した1行は テキストボックス「日付1」の内容がNullなら改ページコントロール「改ページ1」のVisibleプロパティをFalseにして改ページせず、テキストボックス「日付1」の内容に何か入っているなら改ページコントロール「改ページ1」のVisibleプロパティをTrueにして改ページする と言う働きをします。 質問者さんは「日程_日付の値を使って、線を出したり、線を出さなかったりする」と言う処理をしていますよね? 基本的には、それと同じで「日付の値を使って、改ページしたり、しなかったり」と言う処理が出来るのです。

その他の回答 (7)

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.8

結果添付のようなレポートになります。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.7

>「日付」のすべてのフィールドに日を入力するということになりますか? >それはちょっと、避けたいんですね?(わがままですみません) Word Excelでは、入力した画面の通り印刷もできますが、 Accessではフォームで入力画面を作成しますが、フォームを閉じて再度開くと 表示順序が入れ替わってしまいます。 表示順序を規則性のあるものにするため、日付、伝票No.等のフィールドを用意します。 このわがままは通用しません。 前回提案したのは手間をかけずに日付を有効値にする手段です。 レポートの体裁ならフィールドの書式タブ内の最後の方に 「重複データ非表示」というプロパティーがあります。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.5

結果図のような入力画面になります。 日付テーブル内の日付フィールドが主キーになっているため日付の重複入力は出来ません。 元のテーブル「情報」テーブルを単独でフォームを作成すると各レコードに日付がそんざいしているはずです。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.4

>「日付」のすべてのフィールドに日を入力するということになりますか >それはちょっと、避けたいんですね?(わがままですみません) どのようなフィールドがあるか不明なので見当はずれかもしれませんが 日付テーブルを追加して図のようにリレーションでつなぎ、サブフォームのあるフォームは 1.日付テーブルを追加 2.元のテーブルの日付を日付IDと改名 3.日付テーブルの日付と元のテーブルの日付IDをリレーションで結ぶ。 4.サブフォームのあるフォームはフォームウィザードで作成します。 4-1.[作成]→[フォームウィザード] 4-2.→[日付テーブルより日付] 4-3.→[情報テーブルより情報] 4-4.→[次へ]→[次へ]→[表形式]→[次へ]→[完了] リレーションシップで日付が情報テーブルの日付IDにコピーされます

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.3

>・「日付」の規定値の示されたことは、すみません知識不足でどのような ことになるのか解りません。(すみません) 《テーブルをデザインビューで開く》→《日付のフィールドを右クリック》 →《リストの最後のプロパティー》→《データタグの4行目に定義》 このほか 書式タグの1行目が書式タグの右端クリックから日付の書式にするとカレンダー入力が可能になり その他タグの1行目でボックス名を定義します。 テーブルとリレーションはシステムの基本になります。 クエリー、フォーム、レポートは肉付け部分です。 テーブルの設計を見直してください。

southbreeze
質問者

お礼

chayamati様 ご回答ありがとうございます。 ご教示いただいた方法で、まだ試していませんが、想像するに、「日付」のすべてのフィールドに日を入力するということになりますか? それはちょっと、避けたいんですね?(わがままですみません) よろしくお願いします。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.2

>試行錯誤しているのですが Accessは、例えば演算項目に一つでも空白があれば他のレコードも演算不能になります。 テーブルの規定値プロパティーを0またはdate()にして、エラーの原因を事前に回避します。。 >場所が変わっても日付が変わらないと入力していません。 このままではだめです。 自分がやっている方法ですが フォーム上に基準日のテキストボックス「規定値をdate()」として 日付フィールドのクリックイベントで規定値にするようにしています。 Private Sub 日付_Click() 日付 = 基準日 End Sub

southbreeze
質問者

補足

chayamati様 ご回答ありがとうございます。演算項目の空白はダメなんですね? ・「日付」の規定値の示されたことは、すみません知識不足でどのような ことになるのか解りません。(すみません)

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.1

>この2枚目に移る時、「日付」が変わった時点で改ページをしたいのです。 >「日付」は日が変わった時だけ入力しています。 日が変わらなけれが日付フィールドは空白ですか?これでは日付をグループ化できませんね グループ化できれば、プロパティーで改ぺージ設定できますよ。

southbreeze
質問者

お礼

chayamati様 ご回答ありがとうございます。 >日が変わらなけれが日付フィールドは空白ですか? そうです。すべての日付フィールドに何回も同じ値を入力するのは効率的ではないので、場所が変わっても日付が変わらないと入力していません。 何か、いい方法はないものかと、試行錯誤しているのですが、解決できる知識が無いため、行き詰っています。   

関連するQ&A