• ベストアンサー

リスト入力外の時の追加について

すみません、教えて下さい。 過去の質問を参考にして式を作ってみたのですが、うまくいきません。教えてください。 コンボのリストにない項目が発生した際に、次のイベントを起こして追加をしたいです。 (1)リストにない場合、メッセージを出して(「リストにないので追加をしてください」)追加用のフォームを開きすぐに利用できるようにしたい。 (2)リストにないものをすでに入力している場合、フォームを開く際にデフォルトとしてその文章が入力される。 (3)同様に、ダブルクリックした場合追加リストを表示してすぐにリストに反映させたい。 NotInListでイベントプロシージャーを登録しようとしてますが、どうしてもうまくいきません。 申し訳ありませんが、ご協力お願いいたします。

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

少し時間がとれたので、サンプルを作成してみました。 もしよろしければ、そちらでも作成して、参考にして下さい: 【テーブル】 1)ListA : ID(オートナンバー型・主キー)、Text(テキスト型) 2)TableA : Number(オートナンバー型・主キー)、Text(数値型・長整数)、Sentence(テキスト型)   *「TableA」の「Text」には、「ListA」のIDが記録されます。   *「ListA・ID-TableA・Text」での一対多のリレーションシップを想定。 【クエリ】 1)MQ1_Add : INSERT INTO ListA ( [Text] ) SELECT [Forms]![PF1]![Text] AS [Text];   *新規クエリをデザインビューで開いた後、テーブルは追加せずに、メニューの「表示(V)」→    「SQLビュー(Q)」をクリック。既定で表示される「Select;」を削除して上記SQL文を貼付。 【フォーム】 1)MF1 :   レコードソース=TableA  <設置コントロール>    ・TableAの3つのフィールドは、フィールドリストからのドラッグ&ドロップで全て追加。     (「Number」「Text」「Sentence」)    ・非連結コントロール・「新値」テキストボックスを追加     (非表示がベター:私は変数指定に慣れていないので、その代わりとして使っています)   *「Text」テキストボックスは、メニューで「書式(O)」→「コントロールの種類の変更(H)」→    「コンボボックス(C)」をクリックして、コンボボックスに変更後、以下のプロパティを設定:      ・「書式」タブ : 列数=2、列幅=0cm;3cm      ・「データ」タブ : 値集合ソース=ListA、連結列=1       (「入力チェック」の値は、自動的に「はい」になる)      ・イベント : 「リスト外入力時」イベントのビルダ(「...」)で「コードビルダ」を選択し、以下を貼付 Private Sub Text_NotInList(NewData As String, Response As Integer)   MsgBox "リストにないデータです。" & Chr(13) & "追加登録して下さい。"   新値 = NewData   DoCmd.OpenForm "PF1", , "", "", acFormAdd, acDialog   Response = acDataErrAdded End Sub 2)PF1 :   レコードソース=なし(空欄)    *フォームのイベントとして、「開く時」イベントのビルダで「コードビルダ」を選択し、以下を貼付: Private Sub Form_Open(Cancel As Integer)   Text = Forms!MF1!新値 End Sub  <設置コントロール>    ・「ID」テキストボックス(非連結)、「Text」テキストボックス(非連結)    ・「登録」コマンドボタン : 「クリック時」イベントのビルダで「コードビルダ」を選択し、以下を貼付 Private Sub 登録_Click()   DoCmd.SetWarnings False   DoCmd.OpenQuery "MQ1_Add"   DoCmd.SetWarnings True   DoCmd.Close , , acSaveNo End Sub サンプルは以上です。 「MF1」フォームを開いたら、「Text」コンボボックスに適当なデータを入力してみて下さい。 「PF1」フォームが開き、リスト外だったデータが「Text」テキストボックスに表示されます。 「登録」ボタンをクリックするとPF1が閉じ、「MF1」の「テキスト」コンボに値が正しく入力されます。 (つまり、ご質問の「(1)」と「(2)」に対応) *「MF1」で入力したのと違うデータを「PF1」で入力した場合は、「リストにありません」とメッセージが表示され、  コンボボックスのリストが展開されます。(登録したデータはリストに追加されています)

arkdream
質問者

お礼

丁寧にありがとうございます! 解決いたしました。 今後ともよろしくお願いいたします。

その他の回答 (1)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.1

>リストにない場合・・追加用のフォームを開きすぐに利用できるようにしたい。 これはコンボに表示するのは追加用のフォームでテーブルに入力したレコードということで良いのですよね。 追加用のフォームで入力しテーブルにレコードを保存し確定した状態にしなくてはダメです。そしてコンボボックスのリストをRequeryすれば反映出来ます。 例えば追加用のフォームにレコードの保存ボタンでも作り Dim ctlCombo As Control Set ctlCombo = Forms!フォーム名!コンボ名 ctlCombo.Requery 上記を追加してテーブルにレコードを保存後、コンボのリストを再クエリさせる。これでいけると思いますが。 >(2)リストにないものをすでに入力している場合・・ >(3)同様に、ダブルクリックした場合追加リスト・・ これはちょっと質問の意味が理解できないので・・。 取りあえずフォーム上のコンボボックスに再クエリをさせる記述を追加すれば対処できるはずです。

関連するQ&A

  • ACCESSでコンボボックスからの入力でリスト外の追加をフォームを使っ

    ACCESSでコンボボックスからの入力でリスト外の追加をフォームを使って登録 ACCESSのフォームを使ってデータ入力を作成しています、"顧客名"をコンボボックスを使って選択するようにしていますが。 リスト外の新規顧客を入力する際には別の"顧客登録"フォームが開いて、顧客情報(読み仮名、顧客名、都道府県コード、所在地)を入力して、閉じると登録した"顧客名"がコンボボックスから選択できるようにしたいと思い、マクロを使用して(VBはよくわからないので) イベント→リスト外入力時→”顧客登録”フォームが開く 必要事項を入力し、閉じるボタンをクリック。 してみたのですが、コンボボックスのリストに先に入力した新規データが出てきません。 何が足りないのかご教授お願いいたします

  • 【Excel】データの入力規則のリスト項目追加

    データの入力規則の「リスト」に、項目を追加したい場合の簡単な手順がありましたら教えてください。 「範囲」でリスト化したい項目を選択するとき、リストをグループ化(名前を付けて「名前ボックス」に登録)したその名前を入力する方法もありますが、追加項目がある場合、「名前ボックス」にあるグループを削除し、再度グループ化とリスト化をしなければならないでしょうか? 単に項目をグループ化する対象の項目一覧に追加してもリストに反映しないようですが… しかし反対に削除の場合は、反映するようです。項目一覧から削除したものが、リストから景帝ます。このような感じで、追加も可能かと思うのですが、やはり上のような手順をふまないとならないでしょうか?

  • リスト外入力

    アクセス2002を使っています。 フォームでコンボボックスを使用し一覧から選択できるようにしたのですが、一覧にない文字列を入力しようとすると「一覧から選択して下さい」とメッセージが出て入力できません。 一覧にない文字列も入力できるようにしたいのですが、どなたか教えていただけませんか? フォームのプロパティで「リスト外入力」という項目がありますが、このプロシジャでマクロを設定すればできるのでしょうか? よろしくお願い致します。

  • リアルタイムで入力データを反映させたい「修正版」

    入力したデータをリアルタイムに近い形で対象オブジェクトへ反映させたいと思っています。是非、アドバイスをお願い致します。 [やりたいこと] コンボボックス「プルダウンメニュー」を利用したデータ入力を行っています。コンボボックスで選択するデータを新たに追加した際、リアルタイムに近い形でプルダウンメニューに反映できればと思っています。 [現状での対応] フォームにコマンドボタンを配して、クリック時のマクロ(コマンドの実行)で「最新の情報に更新」を設定し対応しています。時々、ボタンを押し忘れることがあり、データ追加時点にコンボボックスでの選択を可能にしたいと考えています。 [おねがい] データベースオブジェクトの項目フィールドは「項目コンボ」から入力しています。「項目コンボ」で選択するデータの追加は「項目フォーム」で行います。以下のオブジェクト構成とした場合の効果的な設定方法を教えて下さい。 ■データベースオブジェクト ・テーブル(名前)メインテーブル「フィールド(名前):ID、項目、・・・」 ・フォーム(名前)メインフォーム「テキストボックス(名前):ID、項目(コンボボックス入力)、・・・・」 ・コンボボックス(名前):項目コンボ ■コンボボックス入力用データの追加オブジェクト ・テーブル:項目テーブル「フィールド:ID、項目」 ・フォーム:項目フォーム「テキストボックス:ID、項目」※一覧フォーム 以上ですが、宜しくお願いします。

  • 追加したデータをコンボボックスへ即反映させたい。

    困っておりますので(私の勝手で申し訳ないですが)、アドバイスをお願いします。 【現状と状況のご説明】 収集した情報を活用する為にACCESSでデータを保存しております。登録した情報を絞込んで検索する為に、入力時に3つの定型項目をコンボボックスを使ったプルダウンメニューの形式で入力しています。 定型項目(3項目)への新たな項目追加は、個別(3つ)のテーブルを作成。そのテーブルからフォームを個別に3つ作成し、情報登録フォーム上にボタン(フォームを開くマクロ)を配して新たな項目を追加しています。 【簡単に構成をご説明】 ・テーブル名:情報登録テーブル(1つのテーブル) ・入力フォーム名:情報登録フォーム(3つのコンボボックス:A・B・C) ・テーブル名:情報項目テーブル(3つのテーブル) ・情報項目フォーム名:Aフォーム、Bフォーム、Cフォーム 【困っていること】 情報登録フォームから情報項目フォーム(A・B・C)を開いて、項目を追加したあと情報項目フォームを閉じても、開いている情報登録フォームのコンボボックスへ反映させられず(コンボボックスのメニューに未反映)、一度、情報登録フォームを終了させて、再度情報登録フォームを起動させるしかない状況です(そうすれば、コンボボックスのメニューに反映)。 【希望】 情報登録フォームを開いたままで、情報項目フォーム(A・B・C)に追加した項目をコンボボックスへ即反映させ、情報登録力フォームへの即入力を可能にさせたい。 以上ですが、宜しくお願いします。

  • アクセス コンボボックスのリスト項目以外を手動で入力は可能ですか

    フォームにコンボボックスで通常入力しているところにリスト項目以外を手動で入力は可能にできるのですか

  • どのように書けばよいか教えて下さい。

    フォームのLoadイベントプロシージャを記述する際に 〔数値〕コンボボックスの最初の項目(〔2〕)を選択したい場合、 どのように記述したらよいでしょうか。

  • コンボボックスへの手入力規制

    フォーム上にコンボボックスで項目選択させているのですが、手入力で項目を入力させない方法はないのでしょうか?手入力項目も反映されて困っています。 もう一つ、▼マークをクリックしてコンボボックスで項目を選択す際に、上から何行か空白が入ってしまうのですが、空白行を消す方法はないでしょうか?

  • フォームへの未入力を無くしたい

    [やりたいこと(宜しくおねがいします)] フォームの未入力「コンボボックス」と「テキストボックス」を事前に把握したい。 [(やりたいこと)の実現と希望] このサイトでアドバイスを頂きまして、長年に渡り作成できたデータベースが「68」、入力するフォームは「78」を超えます。現状「フォーム」の構成を生かす方法を含めアドバイスをお願いします。 [入力するフォームに共通していること] 1,コンボボックスとテキストボックス  ・全てのコンボボックスへの選択入力は必須になっている。  ・テキストボックスは未入力箇所も発生する。「未入力箇所は不特定」 2,フォームに共通して配している2つのコマンドボタン  ・フォームを閉じるボタン「マクロ(クリック時)」  ・情報の最新化ボタン「マクロ(クリック時)」   ※コンボボックスの選択項目追加時に反映用として配置 以上ですが、宜しくお願いします。

  • コンボボックスのリストに追加

    歌手のアルバムリストを作成しています。 コンボボックスに新規入力した歌手の名前をコンボボックスのリストに追加し、既にある歌手名はそのままコンボボックスから選択できるようにしたいんですがどの様にコードを書いていいかわかりません。 お解りになる方がいらっしゃいましたらよろしくお願い致します。