• ベストアンサー

ACCESS コンボボックスについて

yoishoの回答

  • ベストアンサー
  • yoisho
  • ベストアンサー率64% (331/516)
回答No.3

フォームを閉じても情報を残す必要がある場合は、そのフォーム以外にデータ(規定値)を記録しておくことが必要です。いろいろ考え方はあるかと思いますが、一般的な方法として、(1)Public変数に代入する。(2)テーブルにデータとして保存する。 の二通りが考えられます。 (1)の方法は、レスポンスが速く、構文も比較的容易にできますが、データベースを閉じてしまうと規定値もクリアされてしまいます。 (2)の方法は、多少処理が煩雑で、応答も(1)に比べると劣りますが、Accessを一旦閉じても規定値は保存されています。 と言うことで少々複雑になりますが、ここでは (2) の方法を提案させていただきます。 まず、規定値情報を保存するためのテーブル(名前を「TextParameter」:文字列情報のパラメーター全般を保存するテーブル)を作ります。 これに [pName] と [pValue] の二つのテキスト型フィールド(名前はこれにこだわらなくても好みでいいです。)をつくって、最初のレコードの[pName]に、「コンボ規定値」と入れてください。([pValue]は空欄でけっこうです。) 前回お示した、プロシージャの Me![コンボ].DefaultValue ~ の次の行に、以下を挿入してください。 DoCmd.RunSQL "UPDATE TextParameter SET pValue = '" & Me![コンボ] & "' WHERE [pName]='コンボ規定値';" (更新クエリーで、TextParameterテーブルの pValueフィールドに、規定値を書き込む操作です。) フォームの Open(開く時)イベントに、以下を記述してください。 Me![コンボ].DefaultValue = "'" & DLookup("pValue", "TextParameter", "pName='コンボ規定値'") & "'" (コンボボックスの規定値に、テーブルに保存してある値をセットする操作です。) 多少複雑になってしまいましたが、たぶん、以上でご希望のことが可能かと思います。 DoCmd オブジェクト、RunSQL メソッド、アクション(更新)クエリー、DLookup 関数、のあたりを、HELP で確認してみてください。

hinebot
質問者

お礼

再度の回答ありがとうございます。 アドバイスを参考に頑張ってみます。m()m

関連するQ&A

  • コンボボックスの値が消えてしまいます。

    コンボボックスの値が消えてしまいます。 フォーム(1)にコンボボックスA(値集合ソースはテーブル1)があります、この リスト外入力時で別フォーム(2)(レコード追加用)を開きテーブル1にレコードを追加、 フォーム(2)を閉じる時にコンボボックスAをリクエリかけてフォーム(1)に戻るとコンボボックスAが空になっているのでリストを開き選択し直さなければいけません! フォーム(1)に戻った時コンボボックスAに入力した値を選択させておくにはどの様にすれば良いか アドバイスよろしくお願いいたします。 WIN XP ACCESS 2003で作成しています。

  • コンボボックスの初期値(?)

    アクセス2000でデータベースを作成しています。 フォームでコンボボックスを置いています。フォームはなにも打たないと空白になっています。大体、いつも同じものを選択することになるのでそれを初期値としてセットしておきたいと思っています。コンボボックスのプロパティに「既定値」がありそれに入力しておく方法があります。 これではひとつ問題があります。リスト行が何行もある場合、一番上から選択しなければいけません。これをリスト行の真ん中あたりから上下選べるようにしたいのです。 このような場合、どのような方法でやればいいでしょうか?

  • AccessのコンポボックスでNULLを入れたくない

    AccessのコンポボックスでNULLを入れたくない Accessのテーブルで、NULLの代わりに0を入れたいのですが、どうすればいいのでしょうか? テーブルの既定値は0です。 そのテーブルには、フォームのコンボボックスから値を入れます。 そのコンボボックスの選択は必修ではありません。 そのため、選択しない場合は、既定値の0が入ります。 また、選択した場合は、数字が入ります。 問題は、コンボボックスで選択して、やめた場合です。 まず、コンボボックスで選びます。 でも、きが変わり、デリート(削除)でコンボボックスを空欄にします。 そして、更新した場合、テーブルにNULLが入ります。 私の希望は、コンボボックスをデリート(削除)した場合、既定値の0を入れたいのですがどうすればいいのでしょうか? 値要求は、メッセージ(ダイアログ?)が出るので、設定しないものとします。(他の人が、そのメッセージが出るたびに、どうすればいいかきいてくるからです。) よろしくお願いします。

  • ACCESSのコンボボックスについて

    ACCESSでコンボボックスを使っているときに たまに入力できなくなってしまう時があり困っています。 例えばA,B,Cという3つのデータを選択できるコンボボックスがあり、 現在、Aが選択されていてBに変更しようとした時に コンボボックスの表示部分が突然空欄(または選択されているのに表示されていない)になってしまいます。 その後、どれを選択してもコンボボックスには何も表示されなくなってしまいます。 この現象が起こるとなぜか同じフォーム内のボタンなどにも不都合が起こるようになってしまいます。 (テキストボックスのデータを削除するボタンがあるのですがおしてもなにも起こらなくなってしまいました) いろいろ試しているのですが全く原因がわかりません。 どのようなところに原因がありそうかなどあれば教えてください。 宜しくお願いします。

  • ACCESSコンボボックスの初歩的な質問ですが…

    初歩的な質問ですいません。最近ACCESSを始めたのですがわからないことがあったので教えてください。 入力フォームを使ってテーブルにデータを入力しようとしています。 そこでコンボボックスを3つ利用して項目を選択して入力する方法を考えました。 ただ、コンボボックス1である項目を選択したらコンボボックス2でそれに対応した項目しか表示されないようにしたら 入力ミスを防げると思ったのですがこれを実現するにはどのような手順を踏めばいいでしょうか? 更に予定としてはコンボボックス2で選んだ項目によってコンボボックス3で選択できる項目も絞り出したいと思っています。 要するに教えてgooの質問をするときのカテゴリ選択みたいにしたいのです。 よろしくお願いします。

  • コンボボックスからのフォームの開き方

    MS Access2002を使用しています。 入力用のフォームを作っているのですが。 親ホーム内のコンボボックスで選択すると 選択されたものと同じ名前の 詳細入力用の子フォームが開くようにしたいと思っています。 どのようにすればいいのでしょうか? どなたかご教授願います。

  • コンボボックスのリスト外入力について(Access2002)

    お世話になっております。 ひとつお聞きしたいのですが、Accessのコンボボックスプロパティの「リスト外入力」の設定のしかたが分かりません。 コンボボックスを非連結にして、コンボボックスより選択してフィルタをかける動作と、コンボボックスに値がなかったらコンボボックスに直接入力して新しい値を元に新規にレコードを追加すると言ったロジックを組み込みたいのですが可能でしょうか?よろしくお願いいたします。 まとめると、 (1)コンボボックスより値を選択して、フィルタをかける。 (2)コンボボックスに値が無かったら、コンボボックスに直接入力して新規レコードとして、レコードを追加する こう言った、流れでの作業です。

  • Access2002のVBAコンボボックスについて

    お世話になります。 Access2002でフォームを作成しているのですがコンボボックスを使用する際VBAで項目を登録、入力不可にして選択のみできるようにできないのでしょうか? VBAではなくVB6のコンボボックスの場合Styleプロパティに 2(ドロップダウンリスト)を設定したら可能なのですがAccess2002のコンボボックスにはStyleプロパティがありません。 また、ほかの方法が在れば教えていただけませんでしょうか? 以上、よろしくお願いします。

  • Access コンボボックスの複数選択

    Access2007を勉強中の初心者です。 「空白のフォーム」から作成したコンボボックスで、複数選択が可能になるような設定はありませんか? テーブル項目の「ルックアップ」「複数の値を許可」を許したテーブルから作成したフォームでは、コンボボックスで複数の値を選択可能になりますが、「空白のフォーム」から作成した場合にはできないのでしょうか。 リストボックスではスペースをとってしまう為、コンボボックスで行いたいです。 言葉足らずな内容かもしれませんし、大変お手数をおかけしますが、よろしくお願いいたします。

  • ACCESSでコンボボックスで入力しないとき

    ACCESS2000を使用しています。 コンボボックスを使用しているのですが、コンボボックスの中から選択して入力したのか、ダイレクトに入力したのかを区別するということは出来るのでしょうか。 コンボボックスとして作成した項目のところに、コンボボックスから連続して複数の値を取得する ということをしています。 つまり、コンボボックスの中に    1111    222    333333 とあるとすると  2221111 という項目にしたいというときです。 上記の質問は 間違って 作成したとき 2221111 を 後ろの1111を削除して 222に戻したい としたいときのことです。  よろしくお願いいたします。