• ベストアンサー

Accessの動作がおかしい?

Accessのフォームで、メインフォーム/サブフォームを作りました。 メインフォームには、伝票番号や日付などの情報、サブフォームは、伝票番号でリンクし、その伝票に記載されている製品名・数量等の詳細情報がデータシートビューで表示されるようになっています。 さらのこのフォームを開く時にパスワードを設定してあります。 フォームをデザインビューで開き、「開くとき」のイベントにイベントプロシージャを選択。 Private Sub Form_Open(Cancel As Integer) If InputBox("パスワードを入力してください") <> "25b0" Then MsgBox "パスワードが違います" Cancel = True End If End Sub ↑このように表記しています。 さらに、別のフォームにメニュー画面を作り、メニューボタンを押すと、このフォームが開くようになっています。 当然、パスワードを聞いてきます。パスワードを入力すると無事、OPENするのですが・・・ 開いたフォームで、レコードの操作ができません。 「新規作成」や「レコードの削除」といったレコード操作ができません。(?_?) その状態から、一度、フォームをデザインビューに切り替えて、再度、通常のビューに切り替えると、もう一度パスワードを聞いてきます。 パスワードを入力すると、今度は通常通り使えるようになります。 どうしてこのようなことが起こるのでしょうか? 何か設定の方法などに間違いなどがあるのでしょうか??? いつもお手数おかけしてすみません。m(_ _)m よろしくお願いします。

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

  • ベストアンサー
  • bonaron
  • ベストアンサー率64% (482/745)
回答No.2

> フォームから開くのは、「フォームを開く」マクロを登録しておいて、ボタンに割り付けてあります。 マクロの内容は「フォームを開く」アクションだけでしょうか? だとして、 アクションの引数「データモード」が「読み取り専用」になっているとか? 他のアクションもある場合はその内容を提示してください。

xchoxcho
質問者

お礼

返答が遅くなりまして、大変申し訳ございませんでした。 解決しました。 お恥ずかしながら、マクロのデータモードが「読み取り専用」になっていました。(凡ミスでした) 本当にありがとうございました。

その他の回答 (1)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

>さらに、別のフォームにメニュー画面を作り、メニューボタンを押すと、 >このフォームが開くようになっています。 ここのコードはどのようなものですか? デザインビューから開くとOKで、コードで開くと駄目いう所に答えがあるようにみえます

xchoxcho
質問者

補足

さっそくのお返事ありがとうございます。 フォームから開くのは、「フォームを開く」マクロを登録しておいて、ボタンに割り付けてあります。 そのボタンの「イベント」で「マクロ名」を選択しています。 何か分かりますかね? よろしくお願いします。

関連するQ&A

  • ACCESSで条件によってサブフォームを非表示に

    Accessの初心者です。よろしくお願いします。 Accessで住所録を作っています。 メインフォームは主に本人のデータを表示し、サブフォームで家族の データを表示するようにしました。 その時、家族がいない人についてはサブフォーム自体を表示しないようにしたいと思います。 そこで下記のようにしましたがうまくいきませんでした。 (1)サブフォーム内で家族の人数をカウントする。 (2)このカウント結果をメインフォームに表示する。(メインフォーム にテキストボックスを配置し、コントロールソースをサブフォームの 人数カウントにする。)     ここまではうまくいきました。 (3)ここでメインフォームのイベントの「開くとき」に以下のように記 述しました。(メインフォームのテキストボックスにカウントという  名前をつけました。) Private Sub Form_Open(Cancel As Integer) If Me!カウント = 0 Then サブフォーム.Visible = False Else サブフォーム.Visible = True End If End Sub この記述の仕方がまずいと思うのですが、どのようにすればよいか 分りません。よろしくお願いします。

  • Access2010 帳票サブフォームで

    Access2010 SP1を使用しています。 帳票サブフォームを含むフォームを作成しています。 1.そのフォームを開いている時、VBAで実際のフォーカス(カーソルがあって直接入力できる位置)が メインフォームにあるかそれともサブフォームにあるかを判断する方法はありませんでしょうか? メインで入力中でもRequery時などで、サブフォーム内のコントロールでEnterイベントが起きてしまい、 本当はサブフォーム内でカーソルが当たって入力する時だけに実行したい処理が動いてしまうのです。 そこでサブのイベントの方にメインで入力中は実行せず、サブで入力している時のみ実行するよう IFで分岐を入れたいのですができますでしょうか? 2.フォームフッタを含む帳票サブフォームでレコードソースが0件の時、 そのフッタにあるテキストボックスへのEnter時にSelLengthやSelStart、Textプロパティが実行できません。 Enter時なのに「コントロールがフォーカスを取得していないときに、コントロールのプロパティまたはメソッドを参照することはできません」 と出てしまうのです。 0件でなければエラーが出ないのですがどうすれば出るようになるのでしょうか?

  • access サブフォーム間の連動について

    Access2013について メイン親単票フォーム上に連動する二つのサブフォームを配置させました。 内一つは帳票、もう一つは単票にし、帳票からレコードを選択するとデータ詳細が単票側が連動するまで至りましたが、ここでサブフォーム帳票を並べ替えや抽出を実行すると、サブフォーム間の連動が出来なくなり、解決に困っております。 解決方法をご存知の方、お力添え願います。 親フォームに VBA Private Sub Form_Open(Cancel As Integer) Set Me.SubForm2.Form.Recordset = Me.SubForm1.Form.Recordset End Sub 抽出方法としては帳票サブフォーム上からとメインフォーム上からの実行までを試しておりますが、いずれも抽出後にサブフォーム間の連動が出来なくなってしまう状況です。 お力添え、宜しくお願いいたします。

  • access vbaのコンパイルエラーについて

    お世話になります。 vbaは超初心者なので、説明が良くないかもしれませんがご容赦ください。 フォーム上のレコード数を一件に制限する必要があり、下記サイトを参考に作成中のデータベースに構文をあてはめてみました。 http://hatenachips.blog34.fc2.com/blog-entry-189.html サブフォーム移動時のプロシージャは、 Public Sub Form_Current() Me.AllowAdditions = Me.Recordset.RecordCount < 1 End Sub メインフォーム移動時の動作として、対象のサブフォーム名を入れて下記のような構文を 作りました。 Private Sub Form_Current() Me.新規入力 サブフォーム.Form.Form_Current End Sub ところが、「コンパイルエラー 変数が定義されていません」となってしまいました。 サブフォームコントロール名はデザインビューのプロパティで、タブの「すべて」の名前の欄にあるものだと思っているのですが、もしかしてこれが違っているのでしょうか? エラーの意味がよくわからず、困り果てています。 どなたかお力をお貸しください。 よろしくお願いします。

  • ACCESS VBA 条件付き処理

    お世話になります。 仕訳伝票の入力フォームを 日付、伝票No.、目的のテキストボックスと目的テーブルにある、借方規定値、貸方規定値のテキストボックスをメインフォームとし 借方金額、貸方金額のテキストボックス、借方科目ID、貸方科目IDのコンボボックスをサブフォームに配置しました。 サブフォームで新規レコードの借方科目IDにメインフォームの借方規定値をコピーするために次のようにコーディングしました。 尚借方科目IDはテーブル定義でフィールドサイズ:長整数型 規定値:0にしています 命令文の右端の(1)(2)(3)で説明します。 (1)または(2)が有効であればよいのですが (1)(2)はきいていないようで、(3)は有効です Private Sub 借方金額_Exit(Cancel As Integer) If 借方科目ID = 0 Then 借方科目ID = Me.Parent!借方 '…(1) End If If IsNull(借方科目ID) Then 借方科目ID = Me.Parent!借方 '…(2) End If 借方科目ID = Me.Parent!借方 '…(3) End Sub

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

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

  • Accessにてフォームを開く時にエラー

    Accessにて、メイン・サブ形式のフォームを作成しています。 サブフォームには、取引の一覧を表形式で入力していきます。 フォームを開く時に、新規のレコードから入力できるようにマクロで設定しましたが、 オブジェクト”サブフォーム名”が開いていません というメッセージが表示されうまくいきません。 ◆マクロ◆ フォームを開く ・・・ メインフォーム名 レコードの移動 ・・・ サブフォーム名            新しいレコード 上記のように設定しています。 マクロでは、不可能なのでしょうか? よろしくご教授願います。

  • アクセス サブフォームのレコードの値が変更したら

    フォームの中にテーブルに基づいたサブフォームを入れています。 サブフォームはデータシートビューで表示しています。 そのサブフォームのレコードの値が変わったら msgboxを表示させるにはどのイベントで行なえば良いですか? サーブフォームのコントロールに Private Sub ページ名_AfterUpdate() MsgBox "" End Sub としたら確かにメッセージボックスは表示されるのですが 全てのコントロールにつけないとだめですか? 「サブフォームのレコードの値が変更したら」 とするにはどうすればいいでしょうか?

  • ACCESS2007でのサブフォームとグラフについて

    access 2007での質問です。 フォーム上に既存のテーブルを基にサブフォームとピボットグラフを表示させています。 サブフォームとグラフが同じレコードソースを使用しています。 サブフォームでデータを変更した場合に、グラフも変更内容を同時に反映させる方法はどうしたら良いのでしょうか。 フォームをフォームビューからデザインビューに切り替え、また、通常のフォームビューに戻すとデータ変更内容が反映されています。 これ以外何かイベントプロシージャなどで指定はできないものでしょうか。教えてください。

  • access でエラーを回避するには?

    アクセス初心者ですが、宜しくお願い致します。 現在、納品伝票を作っており、 納品フォームに得意先情報、合計金額 サブフォームに売上げ商品と数量、単価、金額などを表示、 同じフォーム上にボタンを作って、マクロで印刷を行う設定にしています。 サブフォームには商品コードフィールドがあり、 別にある商品テーブルから DLookup関数を用いて その商品コードの商品名と単価を自動入力させ、 サブフォーム上で合計金額を計算しています。 合わせて商品コードはコンボボックスになっており、 各得意先名により表示内容が変わるようにしてあります。 商品コードのフォーカス喪失時イベントには Private Sub 商品コード_Exit(Cancel As Integer) If Not IsNull(商品コード) Then 商品名 = DLookup("商品名", "取り扱い店名クエリ", "商品コード='" & 商品コード & "'") 単位 = DLookup("単位", "取り扱い店名クエリ", "商品コード='" & 商品コード & "'" End If End Sub こんな感じで記述しているのですが、 サブフォーム上の商品コードにカーソルがある時に フォーム上の印刷ボタンを押すと、 実行時エラー2424 「指定した式にアクセスが見つける事ができない フィールド、コントロール、プロパティ名が含まれています」 となってしまいます。 例えば、サブフォームの1レコード目に入力をし終わり、 2レコード目の商品コードにカーソルが移った時点で印刷ボタンを押す。 2レコード分の入力を済ませたあと、エンターキーを押し続けて (カーソルはカレントレコード内に戻る様にしています)、 再度商品コードにカーソルが合った時に印刷ボタンを押す。 などの場合です。 何とかこのエラーを回避する手立てはありませんでしょうか? どうか宜しくお願い致します。

専門家に質問してみよう