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

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

アクセスで

アクセスでフォームが5つあるとします。(フォーム名は、1,2,3,4,5とします。)フォームにはすべて"開始年月日"と"終了年月日"の項目があり、5つのクエリの検索をそれぞれ入力する様になっています。 又、テーブル1があり、このテーブルは毎日データが追加されていきますが(1日50ほど)、追加されたデータは、その日のデータでは無く、2日前の物の場合もあれば、休みを挟んだりすると5日前の物の場合もあります。そのデータ自体の"年月日"フィールドがあります。 まず全てのフォームの"終了年月日"の項目の既定値をテーブル1の"年月日にする事"はできますか? そしてフォーム1で"開始年月日"と"終了年月日"を入力し確定した時に、その他のフォームを開くとフォーム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

  • Accessのエラー (いくつかあります・・・)

    アクセスでデータを入力したのですが、なぜか下記のエラーがでます… *作成したアクセスデータ* テーブル 項目AのCDと項目A、項目BのCDと項目B、項目CのCDと項目C、項目A~CのCDとその他繰り返し入力しないデータ の合計4つのテーブル それらすべてをリレーションでつないでます クエリ 全項目入りのテーブルを元に作ったもののみ フォーム クエリを元にウィザードを使って作成 *エラー* (1)クエリを作った時に、1つでもCDが入力されてないフィールドがあるとその行全体が表示されなくなる  (CDを入力したら表示されますし、テーブルではCDが入ってなくても全て表示されてます) (2)フォームで新たにデータを入力しようとしても一切入力できないし、変更もできない時がある (使用可能等の項目は一切触っていません) (3)フォームでCDが入ってる箇所を未入力にしたままでは保存できずに、「CDと値が一致しません」?のようなエラーメッセージがでる (すみません、エラーメッセージはうろ覚えです…) (4)なぜか昇順で番号を並べ替えていたのに、フォームでデータを追加したら、昇順が反映されずに「1,11,2…」のようにフォームのみ表示される (テーブル・クエリは反映されています) このエラーの原因がわかる方ぜひ教えてください!! よろしくお願いします。

  • アクセスの追加クエリで教えてください。

    非連結のフォームから、追加クエリを使ってテーブルにデータを追加したいのですが、 どうもうまくいきません。 具体的には、 履歴フォーム、というフォームで、 日付 施設名 内容 という項目があります。 追加クエリで、 [Forms]![履歴フォーム]![日付] のようにほかの項目も入力し、 その保存先は、 履歴テーブル、で、 項目は、履歴フォームと同じです。 履歴フォームにデータがまったく入っていない状態ですと、 追加クエリを実行した際、 0件のデータを追加します。となります。 自分でテーブルに直接データを何か入力すると、 次に追加クエリを実行した際、 1件のデータを追加します。となります。 続いて追加クエリ実行の際には2件、 その次は4件追加と、 テーブルに入っているデータの件数だけ、 そのときにフォームに入力されている情報が、追加されてしまいます。 どのような原因が考えられますでしょうか? お知恵を貸していただけたらと思います。 情報が不十分でしたらご指摘願います。 補足いたしますので。 それでは、よろしくお願いいたします。

  • Accessのフォームとテーブルについて教えてください。

    Access2003を使用しています。 既存のフォームAにフィールド3個を増やしました。 フォームAはテーブル(1)と連動していました。 追加したフィールドはテーブル(6)のものです。 ところがフォーム上で追加フィールドに入力が出来なくなりました。3フィールドのうち、ひとつはコンボボックスです。表示はされますが確定ができません。 フォームAのSQLステートメントではテーブル(1)・(6)以外にテーブル(2)・(3)・(4)・(5)が結合されています。 フォームAからするとテーブル(2)・(3)・(4)・(5)のデータはIDの名称を見るための参照用です。 テーブル(6)は、追加フィールドのコンボボックスが参照用で、他の2追加フィールドは、フォームから入力してテーブル(6)に反映させたいものです。 テーブル(6)の画面では入力できます。 フォーム上からは入力できません。 設定が何か欠けているからでしょうか? 他の質問では2つのテーブルをひとつのフォームにする場合は、クエリを別に設けた方がいいとなっています。フォームが出来上がっているので、できればクエリを設けずに行いたいのですが、よくない方法でしょうか? 手順なども踏まえて教えていただけると助かります。 よろしくお願いいたします。

  • ACCESSにて・・・

    accessにて・・・ フォームには初期値としてテーブルのデータがテキストボックス等に表示されます。 本来は、変更すべき項目があれば変更して(この時点ではテーブルは更新されない)、更新ボタンを押すとテーブル更新・・・としたいのですが・・・フォームのテキストボックス等に入力した項目が入力した時点でテーブルに更新されてしまいます・・・何か設定があるのでしょうか?

  • ACCESS2003のテーブル入力について

    いつもこちらでお世話になっております。よろしくお願いいたします。 マイクロソフトアクセス2003にて、No.と項目名という2つのフィールドから成り立つテーブルがあります。 そのテーブルにはあらかじめデータがはいっています。 新規にそのテーブルに追加する項目が出来たとき、新規入力用のフォームを作成しました。 その時のNo.のフィールドなのですが、自動的にもともとあるテーブルの番号に無いものを規定値として表示させておくようにするには、どのようにしたらよいでしょうか? 例) 1、2、3、5があれば、4を 1、2、3、4があれば5を よろしくおねがいします。 もうひとつ質問なのですが、納品書を入力していくデーターを作成しているのですが、納品書のテーブルがあり、リレーションで項目や会社名などを関連テーブルとしています。 あらかじめ会社名や項目名のテーブルに入力されていない新規の会社の納品書を打ち込む場合、納品書テーブル入力フォームに、入力しただけで、項目名のテーブルや会社名のテーブルに追加されていく方法はありますでしょうか?

  • アクセス フォームのマクロに関して

    アクセスでマクロにてフォームを閉じるを選択しているのですが 新規レコードが必ず追加されてしまいます。 そのフォームはデータ入力用のフォームなのですがデータ入力終了時 テキスト欄をすべて空白でマクロの閉じるを実行させると 必ずテーブルに空白の新規レコードが入力されてしまいます。 なにかいい方法ありますでしょうか?

  • 何度もすいません アクセスにて

    アクセスにて テーブル 氏名 月 開始時間 終了時間 1日 2日 3日・・・31日 とデータを持っております。 氏名はそのまま 月は1~12の数字 開始時間 終了時間は23:00のような24時間表記  1日~31日までのデータは 該当するところに-1の表記があり非該当はnull値となっております フォームにて1日 と入力すると 1日に-1の入っているデータの 氏名 開始時間 終了時間 をすべて出したい場合 どのようにすればいいでしょうか? フォームはカレンダーで1~31のチェックボックスを作成する予定です フォームで入力した値で抽出をし レポートに出したいのですが いまいちやり方がわかりません ご示唆お願いいたします。

  • Access97について

    ひとつのデータベース内にあるテーブルでデータのリンク(共有)することは出来るでしょうか? 逆の言い方をすれば、あるフォームでデータを入力すれば対応する項目のあるテーブルにすべて入力されるか?いう意味です。 今構築しているデータベースであるテーブルに入力したデータがフォーム上で 正常に表示されずもうひとつあるテーブルに入力すると改善されます。 ちなみにllf関数でデータの抽出をしています。

  • ACCESS97のテーブル特性(?)について

    ACCESS97を使用しています。 あいまいな質問になるのですが、 フォームの中でテーブルを使用しています。 (使用というのは、データを追加、削除、更新(変更) 等です。) そのテーブルに項目を追加した時、 フォームでの実行ができなくなりました。 追加した項目を削除しても、その実行はできないままです。 今回の質問は、 Q1 あるテーブルに項目を追加した後で削除した場合   (一旦変更して元に戻した場合)   テーブルの特性(?)等は 変化してしまうのでしょうか? 更新日時は変化します。変更前にコピーを取っておいて 変更後に上書きすれば上手くいきます。 (最初から全く改造しなければOK) Q2 フォーム(ロジック)の中で あるテーブルでしか実行できない ようになっているのでしょうか? そういった事は 可能でしょうか?  (ロジックを見たのですがわかりませんでした。   項目が追加した状態で実行できない点より   元に戻した(追加→削除)のに実行できない という点が わかりません。) 宜しくお願い致します。

  • アクセスで困っています。

    アクセスでデーターベースを作成しているのですが、 エクセルからADOを使いテーブルにデータを入力し、フォームでデータ内容についての情報を見れるようになっています。 しかし、フォーム上でテーブルに連結してある情報の変更ができないのですが、どのように設定すれば、フォーム上でテーブルの情報を書き換えることができるのでしょうか? プロパティのデータ入力用は、「はい」でも「いいえ」どちらでやってもだめです。 テーブル ↓ フォーム (ここでデータを入力し、テーブル内容の変更をしたい。) よろしくお願いします。

専門家に質問してみよう