• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アクセスで)

アクセスでフォームの既定値を設定し、他のフォームにも反映させる方法について教えてください

このQ&Aのポイント
  • アクセスでフォームが5つあり、全てには「開始年月日」と「終了年月日」の項目があります。テーブル1には毎日データが追加されますが、追加されたデータの「年月日」は2日前のデータや休みを挟んだ5日前のデータも含まれます。質問は、全てのフォームの「終了年月日」の既定値をテーブル1の「年月日」に設定できるかどうかと、フォーム1で入力した「開始年月日」と「終了年月日」を他のフォームにも反映させる方法についてです。
  • アクセスでフォームが5つあり、全てには「開始年月日」と「終了年月日」の項目があります。テーブル1には毎日データが追加されますが、追加されたデータの「年月日」は2日前のデータや休みを挟んだ5日前のデータも含まれます。この質問は、全てのフォームの「終了年月日」の既定値をテーブル1の「年月日」に設定できるかどうかと、フォーム1で入力した「開始年月日」と「終了年月日」を他のフォームにも反映させる方法についてです。
  • アクセスでフォームが5つあり、全てには「開始年月日」と「終了年月日」の項目があります。テーブル1には毎日データが追加されますが、追加されたデータの「年月日」は2日前のデータや休みを挟んだ5日前のデータも含まれます。この質問では、全てのフォームの「終了年月日」の既定値をテーブル1の「年月日」に設定することと、フォーム1で入力した「開始年月日」と「終了年月日」を他のフォームにも反映させる方法について教えてください。

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

#1です 方法は何個かありますが 1)フォーム上に情報を表示しての入力 2)現フォーム構成を変更しない上での入力 を以下に 1)フォーム上に情報を表示しての入力 画像を添付します(上側が実際の表示、下側がデザイン時の表示になります) テキストボックス「終了年月日」をコピーし、ラベルを削除したものを配置します。 (以降、txt1 と記述) ・txt1 のプロパティを設定します。 コントロールソース: =DMax("年月日","テーブル1") 書式: 日付(S) タブストップ: いいえ ・「以下を入力してください」用ラベルの作成 画像は、ラベルをクリックした状態のものになります。 文字配置: 右 に設定し、左側空白部分に txt1 が全て収まる大きさとします。 ラベルを選択した状態で、マウス右クリックし、位置→最前面へ移動 を選びます。 図の様に txt1 がはみ出さないように配置します。 これにより txt1 は選択できなくなります。 実際に表示した時の文字位置を、上余白等で調整します。 ・テキストボックス「終了年月日」のプロパティ設定 書式: 日付(S) 既定値: =DMax("年月日","テーブル1") 入力規則: <=DMax("年月日","テーブル1") エラーメッセージ: 指定日はテーブルにありません 実際に表示すると、txt1 の表示が若干遅れるような感じになります。 良ければ、枠線等の見栄えを設定します。 2)現フォーム構成を変更しない上での入力 標準モジュールに以下関数を作成しておきます。 (複数のフォームで使えるようにパラメータで対象のテキストボックスを指定) Public Sub SetEndDate(txtb As TextBox)   Dim dt As Date   dt = DMax("年月日", "テーブル1")   txtb.DefaultValue = "#" & dt & "#"   txtb.ValidationRule = "<= #" & dt & "#"   txtb.ValidationText = dt & " 以下を入力してください"   txtb.ControlTipText = dt & " 以下を入力してください"   txtb.StatusBarText = dt & " 以下を入力してください" End Sub 呼び出す時には以下の様に   Call SetEndDate(Me.終了年月日) フォームの読み込み時とか、データを登録したタイミングで呼び出します。 各行の説明)   txtb.DefaultValue = "#" & dt & "#" 既定値の設定   txtb.ValidationRule = "<= #" & dt & "#"   txtb.ValidationText = dt & " 以下を入力してください" 入力規則とエラーメッセージの設定   txtb.ControlTipText = dt & " 以下を入力してください" マウス ポインタをテキストボックス上に置いたときにポップ ヒントに表示されるテキストを設定   txtb.StatusBarText = dt & " 以下を入力してください" テキストボックスを選択したときにステータス バーに表示するテキストを設定 ※ 関数名は適宜変更してください。

doradora64
質問者

お礼

画像まで添付して頂いて大変助かりました。 ありがとうございました。

その他の回答 (1)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

> 全てのフォームの"終了年月日"の項目の既定値をテーブル1の"年月日にする事" =DMax("年月日","テーブル1") でテーブル1の年月日の最新が得られると思います。 > フォーム1で"開始年月日"と"終了年月日"を入力し確定した時 グローバル変数を使用してはどうでしょう。 標準モジュールに Public dt開始年月日 As Date Public dt終了年月日 As Date としておいて、 確定時、上記変数に代入 dt開始年月日 = Me.開始年月日 dt終了年月日 = Me.終了年月日 各フォームの読み込み時イベントで、 Me.開始年月日 = dt開始年月日 Me.終了年月日 = dt終了年月日 と設定するとか ※ "開始年月日"と"終了年月日"は非連結として考えてます。 ※ フォームを切り替える時、前のフォームは閉じられる前提です。

doradora64
質問者

補足

ご回答ありがとうございます。 終了年月日の入力規則をテーブル1の最新以内にするには(例えば2009年11月13日が最新の場合は、2009年11月14日以上を入力するとエラーになる、又、注意書きとして、2009年11月13日までの日付を入力する様にフォームに記しておく事はできるでしょうか?)どの様にしたら良いでしょうか?教えて頂けませんか?よろしくお願いします。

関連するQ&A

専門家に質問してみよう