![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
アクセスでフォームが5つあるとします。(フォーム名は、1,2,3,4,5とします。)フォームにはすべて"開始年月日"と"終了年月日"の項目があり、5つのクエリの検索をそれぞれ入力する様になっています。
又、テーブル1があり、このテーブルは毎日データが追加されていきますが(1日50ほど)、追加されたデータは、その日のデータでは無く、2日前の物の場合もあれば、休みを挟んだりすると5日前の物の場合もあります。そのデータ自体の"年月日"フィールドがあります。
まず全てのフォームの"終了年月日"の項目の既定値をテーブル1の"年月日にする事"はできますか?
そしてフォーム1で"開始年月日"と"終了年月日"を入力し確定した時に、その他のフォームを開くとフォーム1で入力した"開始年月日"と"終了年月日"が入力された状態にしたいのです。これは、フォーム1で"開始、終了年月日"を入力した場合だけでなく、どのフォームで"開始、終了年月日"を入力した場合でも、その他のフォームを開くと同じ"開始、終了年月日"がまず入力された状態になっていて変更し確定した場合は、他のフォームの"開始、終了年月日"も変更されているという様にしたいのです。
説明がうまくできなくてすいませんが、誰か教えて頂けないでしょうか?よろしくお願いします。
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 & " 以下を入力してください"
テキストボックスを選択したときにステータス バーに表示するテキストを設定
※ 関数名は適宜変更してください。
![「アクセスで」の回答画像2](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/3/653046_5497efa9201a1/M.jpg)
No.1
- 回答日時:
> 全てのフォームの"終了年月日"の項目の既定値をテーブル1の"年月日にする事"
=DMax("年月日","テーブル1")
でテーブル1の年月日の最新が得られると思います。
> フォーム1で"開始年月日"と"終了年月日"を入力し確定した時
グローバル変数を使用してはどうでしょう。
標準モジュールに
Public dt開始年月日 As Date
Public dt終了年月日 As Date
としておいて、
確定時、上記変数に代入
dt開始年月日 = Me.開始年月日
dt終了年月日 = Me.終了年月日
各フォームの読み込み時イベントで、
Me.開始年月日 = dt開始年月日
Me.終了年月日 = dt終了年月日
と設定するとか
※ "開始年月日"と"終了年月日"は非連結として考えてます。
※ フォームを切り替える時、前のフォームは閉じられる前提です。
この回答への補足
ご回答ありがとうございます。
終了年月日の入力規則をテーブル1の最新以内にするには(例えば2009年11月13日が最新の場合は、2009年11月14日以上を入力するとエラーになる、又、注意書きとして、2009年11月13日までの日付を入力する様にフォームに記しておく事はできるでしょうか?)どの様にしたら良いでしょうか?教えて頂けませんか?よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【vba】日付の形式が勝手に変わってしまう。 1 2022/09/29 10:54
- 不動産業・賃貸業 賃貸の解約について質問です。 不動産会社の言うことが分からず質問させていただきました。 新築のマンシ 1 2022/08/06 19:35
- その他(住宅・住まい) 賃貸の解約について質問です。 不動産会社の言うことが分からず質問させていただきました。 新築のマンシ 6 2022/08/06 19:42
- Visual Basic(VBA) 過去日付、年の切り替え 6 2022/05/26 12:41
- Visual Basic(VBA) VBAで重複データを確認したい 5 2022/10/07 16:24
- Java Java 年数計算 3 2023/01/28 10:52
- Excel(エクセル) エクセル「社員の重なっている仕事時間の算出方法について」教えてください。 6 2023/02/06 00:10
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- 妊娠・出産 妊娠検査薬チェックワン及び他の妊娠検査薬は、最終性交渉から3週間後での最終判断とのことですが、3週間 1 2022/03/31 15:31
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
前のレコードの値を自動で入れたい
-
ACCESS フォームで入力データ...
-
Accessフォームが入力できません。
-
インデックスまたは主キーにはn...
-
ACCESSでフォームのチェックボ...
-
Accessでデータを更新したらそ...
-
入力した値をコンボボックスに...
-
AccessVBAの値によっ...
-
ACCESS2000の帳票フォームでテ...
-
Accessでフォームに自動入力し...
-
access別のテーブルを参照して...
-
アクセスの入力について
-
アクセスで
-
アクセスでの登録ボタンでの処...
-
アクセスのフォームの必須項目...
-
アクセスでコードを入れると名...
-
エクセルで、抽出したデータだ...
-
Access サブフォームでの選択行...
-
ACCESS 複数のフォームから同一...
-
ACCESSでVBAから選択クエリの抽...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
前のレコードの値を自動で入れたい
-
Accessでデータを更新したらそ...
-
access別のテーブルを参照して...
-
インデックスまたは主キーにはn...
-
Accessフォームが入力できません。
-
ACCESS フォームで入力データ...
-
access ダブリ登録を防止したい
-
ACCESSでフォームのチェックボ...
-
AccessVBAの値によっ...
-
アクセスでコードを入れると名...
-
入力した値をコンボボックスに...
-
テキスト型のフィールドでハイ...
-
「バリアント型でない変数に Nu...
-
Accessでフォームに自動入力し...
-
ACCESS2000の帳票フォームでテ...
-
accessでオプションボタンを使...
-
Accessで時間外管理の作成について
-
Access 自動入力の解除方法
-
Accessで、最後(更新)にエラ...
-
アクセスでの登録ボタンでの処...
おすすめ情報