• 締切済み

ACCESS メインFに入力後でなければサブFに入力出来ないようにするには?

 メインフォームに必要事項を入力後でなければ、詳細を入力するサブフォームに入力ができないようにしたいのですが、どうしたら良いでしょうか?  できれば、サブフォームのコントロールに触れると「必要事項を入力して下さい」とメッセージが出るような形にしたいのですが・・。 良い方法がありましたら教えて下さい。

みんなの回答

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

>メインフォームに必要事項を入力後でなければ、詳細を入力するサブフォームに >入力ができないようにしたい… このような処理はVBAで行います。以下の内容は、私の力量不足のため少々難解かもしれません。読み取っていただければ幸いです。 例えば、必要事項が複数ある場合は、どのタイミングでサブフォームの入力許可を処理するのか、様々ケースが考えられます。話が大きくなりすぎますので、もう少し的を小さく絞って、条件を次の様に設定させて下さい。 <条件> 「テキストボックス[TextBox1]に何か入力されていれば、サブフォーム[SubForm]への入力を許可する」としましょう。 <処理> [TextBox1]の AfterUpdate イベントで、サブフォームのプロパティーを切り替えます。以下のコードは[TextBox1]に何か入力されると、SetFormProperty プロシージャーを呼び出してサブフォームをコントロールします。 Private Sub TextBox1_AfterUpdate()   If txtCode <> "" Then     SetFormPropaty (True)   Else     SetFormPropaty (False)   End If End Sub 'サブフォームの制御 Private Sub SetFormPropaty(SW As Boolean)   'この中にいろいろな処理を書いておきます。   '不必要な制御はコメントアウトして下さい。   With Me.SubForm.Form     .AllowAdditions = SW 'レコード追加の可否     .AllowEdits = SW 'レコード編集の可否     .AllowDeletions = SW 'レコード削除の可否   End With End Sub レコード移動時やフォーム開いた時のイベントなど、SetFormProperty を呼び出すタイミングを応用すれば、ご希望の動作が実現できると思います。 >サブフォームのコントロールに触れると「必要事項を入力して下さい」と >メッセージが出るような形にしたい・・ サブフォームのEnterイベントにメッセージを表示する処理を書き込みます。例えば、先の例ですと、サブフォームのAllowAdditionsプロパティーを調べて、Falseだったらメッセージを表示するようにするなど。ただ、意図しないタイミングでメッセージが表示されたりしますので、あまりお勧めしません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ACCESS2000のメインフォームサブフォーム間の移動

    Access2000でメインフォームの中に詳細を確認/入力するためのサブフォームを作成しています。 メインフォームの中のコントロールを最後まで入力(enterで移動)していくと、メインフォームの最後のコントロールの次はサブフォームの最初のコントロールに移動します。(これは普通ですよね?) サブフォームはデータの詳細によっては1レコードで終わるものもありますし、複数レコードにわたるものもあります。 サブフォームの入力が終了したときに、キー操作でメインフォームの次のレコードの頭のコントロールに移動する事はできますか? マクロをAccessの方から設定するくらいならできるのですが、自分でSQLをうんぬんする知識はありません。 よい方法があったら教えてください。

  • ACCESS メインFからサブFの値を参照

    サブフォームで集計した値をメインフォームで演算値として使用したいのですができません。 サブフォームのフォームヘッダに集計値を入れるテキストボックスを配置し、メインフォームにサブフォームの集計値を参照するテキストボックスを配置しています。 ほんとうはイベントの実行で直接サブフォームの集計値を使った演算を行いたいのですが出来ないのでメインフォームにテキストボックスを作成しました。 サブフォームの集計値は表示しますが、その値を演算値として使用できないのです。試しにMsgboxでメインフォームのテキストボックスの値を表示させると何も表示しません。 なぜメインフォームのテキストボックスにサブフォームの値は表示できるのにその値を使用できないのでしょうか? 具体的には次の通りです。 <サブフォームに配置したテキストボックス>  名前        :テキスト16  コントロールソース:SUM([枚数〕)  書式        :数値 <メインフォームに配置したテキストボックス>  名前        :テキスト130  コントロールソース:[Foms]![メインフォーム名]![サブフォーム名].Form!テキスト16  書式        :数値 <イベント>   MSGBOX テキスト130       ※何も表示されません!

  • アクセスのメインフォームのみRequeryしたい

    アクセスでフォームを作製しています。 シンプルに「メインフォームの中にサブフォームがある」形で作製し各フォームにはクエリをレコードソースとして指定しています。検索したいデータのコードを入力してそのデータを表示させる・・・という一般的なフォームなのですが、メインフォームのみRequeryさせたいのですができますか? [Forms].[メインフォーム].requery とするとサブフォームまで再計算されてしまいますが、ここでサブフォームは再計算させないで、メインフォームだけ再計算させたいのです。宜しくお願いします。

  • Accessメインサブフォームにて・・・

    Accessのサブフォームで、入力するためのフォームと、 実際にメインフォームの中で表示させる時のサブフォームの表示を 変えたいのですが・・・。 (1)ボタンをクリックして、入力するためのサブフォームを表示させる。  これは帳票形式で、テキストボックスの罫線が表示されているよう  にします。 (2)入力し終わったら、メインフォームに戻る。  こちらで表示されるサブフォームは、テキストボックスの罫線が表示  されていないようにする。 上記のようなことはできるでしょうか?よろしくお願いします。  

  • Accessのメインフォームとサブフォームの使い方について

    Accessにてメインフォーム(単票形式)+サブフォーム(帳票形式)を使って進捗管理をするデータベースを作っており、新規にメインフォームで入力し、サブフォームで入力したデータを表示させてます。 サブフォームで更新したいレコードをクリックしたときにメインフォームでそのレコードを表示させるにはどのようにすればよろしいのでしょうか?

  • Accessでメイン、サブフォームへの入力について

    accessほぼ初心者です。 取引先の会社情報を管理するために、access2007で顧客管理を作成しています。現在、取引先本社情報とその支店情報を登録するフォーム「会社登録フォーム」を作成していますが、次のようなことで困っています。 <問題としていること>: 「サブフォーム」をクリックした瞬間に、テーブルにレコードが追加されてしまう。 <改善したいこと>: 本社テーブルの会社名が未入力ならば、上記の操作でレコードを追加しない。(会社名に主キーは設定していません。) <会社登録フォームの環境>: 会社の本社情報をメインフォーム、その会社の支店情報をサブフォームに、単票形式のタブコントロールで複数画面にして支社ごとに分けて入力できる登録フォームを作成しました。本社テーブルの会社IDを主キーに、支店テーブルの支店IDを主キーにしてリレーションシップを設定しています。 <会社情報の入力に関して行っていること>: ・メインフォームに「新規」「更新」「削除」ボタンを設置。 ・新規ボタンでメインフォームの「会社ID」に自動採番。 ・会社(本社)名がないと困るので、未入力の状態で「新規」「更新」及び「サブフォーム」をクリックされた際に「会社名が未入力です。」のメッセージを表示され「OK」で元の状態にもどります。 ・会社(本社)名が入力済みならば、「更新」ボタンで、メッセージ「OK」「キャンセル」が表示され、「OK」ならば本社テーブルにレコードが追加され「キャンセル」ならばそのままの状態になります。 上記の<問題としていること>の補足ですが、新規ボタンで新規登録フォームに会社IDが自動採番(末番)されるのですが、「会社名」を入力せず、先にサブフォームの支店情報から(タブ名「支店(1)」)入力しようとした場合、「会社名が未入力です。」のメッセージを表示されますが、この時点で本社テーブルに、この採番でレコードが追加されてしまいます。入力者がそのまま会社名(本社)から入力するも、途中でキャンセルした場合、再度新規登録をする際、登録フォームの自動採番がキャンセルされた採番の次の番号になります。 キャンセルされた会社情報空白のレコードができるということになります。これを回避したいのです。 出来るだけ詳細をとおもい説明が長くなりましたが、よろしくお願いいたします。

  • Access メインからサブのfunctionを呼ぶには?

    メインフォームからサブフォームに書いてあるFunctionを呼び出すにはどうしたらよろしいでしょうか? Call [Form_subform].testfunction では、だめなんですか?

  • アクセスのサブフォームからメインフォームへキーで切り替えをする

    何度もお世話になっております。m(_ _)m アクセスのフォームで、サブフォームを作成しています。 EnterキーまたはTabキーで、フォームの中を進んでいくと、メインフォームのフィールドからサブフォームのフィールドへ進みます。 この進む順番は、タブオーダーで設定できるので問題ないのですが、 サブフォームの情報を入力し終えて、メインフォームへカーソルを飛ばしたい場合、どうすればいいのでしょうか? そのままEnterやTabを押しても、サブフォームの中の新規レコードが追加されるだけです。 自分でキーなどを設定できるのであれば、なおさら良いのですが・・・ とりあえず、基本的な操作方法として、サブフォームからメインフォームへ移るキーを教えてほしいです。 よろしくお願いします。

  • Accessのサブフォームについて

    メインフォームとサブフォームのあるフォームを作成しました。メインフォームを入力してから、サブフォームを入力し、次のレコードへ移動するのにメインフォームの移動ボタンを押すと、次のレコードのカーソルがサブフォームのフィールドへ移動します。メインフォームに移動する方法はありませんか?

  • Accessでサブフォームの合計をメインフォームに

    Access2007で開発しています。 メインフォームにサブフォームを貼り付けており、 サブフォームに入力した「数量」「単価」から「金額」を計算して表示し、 その合計金額をメインフォームのテキストボックス(非連結)に表示しようと しています。 サブフォームは行単位で追加、削除が可能です。 サブフォームの更新結果が正しくメインフォームに表示されずに困っています。 おわかりの方、おられましたらお教え頂きたく、よろしくお願い致します。 【サブフォーム】   ・レコードソース:T_明細   ・[詳細]項目:数量・・・レコードソース=T_明細・数量        単価・・・    〃    =T_明細・単価        金額・・・数量および単価のAfterUpdateで計算して表示。    [フォームフッター]項目:金額計・・・コントロールソース=Sum([金額])   ・Vbaコード:   Private Sub Form_AfterUpdate()   Forms![メインフォーム].合計計算   End Sub   Private Sub Form_Delete(Cancel As Integer)   Forms![メインフォーム].合計計算   End Sub 【メインフォーム】  ・テキストボックス:「合計金額」(非連結) Public Sub 合計計算()    Me.サブフォーム.Requery   方法1: Me!合計金額 =DSum("金額", "T_明細", (キー項目指定 記述省略))   方法2: Me!合計金額 = Me![サブフォーム].[Form].[金額計] End Sub ここで、 方法1の場合:数量、単価の変更入力及び行追加は正しく動作するが、          行削除の後、メインフォームの「合計金額」が再計算されず、変更前のまま。 方法2の場合:数量、単価の変更入力及び行追加すると、「合計金額」が”0”になる。          行削除しても「合計金額」は変わらず、変更前のまま。 どちらも、サブフォオームの「金額計」は正しく表示されています。 以上、よろしくお願い致します。

専門家に質問してみよう