• ベストアンサー

Accessコンボボックス

Access2000でコンボボックスで日付を選択できるように したいとおもっています。 リストは、予め1999年~2010年をセットするなどして 月・日についてもコンボボックスを作成しています。 規定値ではformat(year(date()),"0000")などとして 現在日時から年・月・日を取得しています。 コンボボックス選択後、一つのデータとして入れ込んでいます。 次からは前のデータを参照し、コンボボックスは 予めその行が選択されているようにしたいのですが、 うまくいきません。 レコードから年・月・日などを取って コントロールソースに =format( year([tx_date]), "0000" ) ※tx_dateには"2002/12/18"という形で入っています。 を入力すると、コンボボックスを選択することが できません。 上記のような状況を打開する策をお教えいただけませんでしょうか? よろしくお願いいたします。 わかりにくくてすみません。

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

  • ベストアンサー
回答No.3

お疲れ様です 単票フォームと仮定して、説明します。 フォーム上には、年・月・日という3つのコンボボックスがあるんですよね。 しかし、実際に保存されているデータは一つのフィールドなんですよね。 だとしたら、コンボボックスのコントロールソースには、何も設定してはいけません。 (何も設定せずに非連結にする) フォームにレコードソースを設定しているならば、下記コードにて実現できると思います。 '~~~~~~~~~~ Private Sub Form_Current() Me.cmb年.Value = Year(Me.Txt日付.Value) Me.cmb月.Value = Month(Me.Txt日付.Value) Me.cmb日.Value = Day(Me.Txt日付.Value) End Sub Private Sub cmb年_AfterUpdate() Me.Txt日付.Value = DateSerial(Me.cmb年.Value, Me.cmb月.Value, Me.cmb日.Value) End Sub Private Sub cmb月_AfterUpdate() Me.Txt日付.Value = DateSerial(Me.cmb年.Value, Me.cmb月.Value, Me.cmb日.Value) End Sub Private Sub cmb日_AfterUpdate() Me.Txt日付.Value = DateSerial(Me.cmb年.Value, Me.cmb月.Value, Me.cmb日.Value) End Sub '~~~~~~~~~~ レコード移動時のイベントにて、保存されている日付データをコンボボックスに反映しています。 各コンボボックスの更新後のイベントで、日付データの内容を更新しています。 これで、相互関係は成り立つと思われます。 あと、規定値のことですが、この場合コンボボックスに規定値はいりません。 フォーム上の日付テキストボックスの規定値プロパティに「=Date()」と設定すればOKです。 (このフォーム上の日付テキストボックスは、可視設定「不可」でかまいません) 参考になれば...

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

下記が一部でも参考になれば幸いです。 下記でコンボ30等はcohkojiさんが実行時に決まる名前で 変えてください。 Msgbox cmby.Name等をtest02の終わりの方に入れると なんという名前になったか、見られるでしょう。 test04は適当なイベントプロセジュアに変えてください。 すると、初めは本日の日付けにセットされます。 ある日付にセットして、次の回の日付のセットまで何があるか、私には判らないので、前回の日付を次回に引き継ぐところは組みこめていません。悪しからず。 (注)値リストの「リスト」は半角に変えてください。 OKWEBで強制的に、全角になってしまっています。 Option Compare Database Option Explicit Sub test01() Dim frm1 As Form Set frm1 = CreateForm With frm1 .Caption = "取引1" End With End Sub '------------ Sub test02() Dim cmby As Control Dim cmbm As Control Dim cmbd As Control Dim i As Integer DoCmd.OpenForm "取引1", acDesign Set cmby = CreateControl("取引1", acComboBox, acDetail, , , 500, 400, 700, 200) Set cmbm = CreateControl("取引1", acComboBox, acDetail, , , 1500, 400, 700, 200) Set cmbd = CreateControl("取引1", acComboBox, acDetail, , , 2500, 400, 700, 200) End Sub '----------- Sub test03() Dim s As String Dim i As Integer DoCmd.OpenForm "取引1", acDesign Forms("取引1").コンボ30.RowSourceType = "値リスト" s = "" For i = 1999 To 2010 s = s & Str(i) & ";" Next i Forms("取引1").コンボ30.RowSource = s '------ Forms("取引1").コンボ31.RowSourceType = "値リスト" s = "" For i = 1 To 12 s = s & Str(i) & ";" Next i Forms("取引1").コンボ31.RowSource = s '------ Forms("取引1").コンボ32.RowSourceType = "値リスト" s = "" For i = 1 To 31 s = s & Str(i) & ";" Next i Forms("取引1").コンボ32.RowSource = s End Sub '---------- Sub test04() Dim y, m, d As String y = Year(Date) m = Month(Date) d = Day(Date) Forms("取引1").コンボ30.SetFocus Forms("取引1").コンボ30.Text = y Forms("取引1").コンボ31.SetFocus Forms("取引1").コンボ31.Text = m Forms("取引1").コンボ32.SetFocus Forms("取引1").コンボ32.Text = d End Sub

noname#7099
noname#7099
回答No.1

コンポボックスの規定値に入れたらどうですか。

関連するQ&A

  • accessのコンボボックスのことで質問です。

    accessを勉強しているのですが、ちょっとしたことで分からなくなってしまいました・・。 質問の内容なのですが、まずフォーム上にコンボボックスAとコンボボックスBを配置するとします。 レコードソースには仮に[情報テーブル]というテーブルが選択されているとします。 コンボボックスAには[情報テーブル]のフィールド名が、 例えば[顧客NO]、[商品]、[値段]というフィールド名が入っているとし、フィールドにはそれぞれ10件ずつデータが入力されています。 そしてコンボボックスAで[顧客NO]を選択するとコンボボックスBに[顧客NO]の10件のデータが挿入され、選択できるようにしたいのです。 他のフィールド名を選んだときにも同じようにコンボボックスBにフィールドのデータが入るようにしたいと思っています。 コンボボックスAにテーブル名を入れることはできたのですが、 コンボボックスAで選択されたフィールドのデータを、コンボボックスBで選択できるようにするというやり方がわからないのです・・。 accessは2002を使っています。 よろしくお願いします。

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

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

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

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

  • Access コンボボックスの値をセットしたい。

    Access初心者です。 試行錯誤しながら、添付のフォームを作成しました。 コンボボックスの部課→担当者と対象年月を指定すると、サブフォームに該当レコードが表示されるところまでできました。 ここで、新規レコードの対象年月、担当者フィールドにコンボボックスで選択した値をセットするように したいのですが、方法を教えていただけませんでしょうか。 宜しくお願い致します。

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

    コンボボックス2つを使いユーザーに誕生日の月と日を入力してもらいたいのですが,すこし疑問があります.2月には30,31日が,4,6,9,11月には31日がありません.このような月や日が選択された場合,コンボボックスのリストの内容をそれぞれ変化させたいのですが,どのようにしたらよいかわかりません.ぜひ,教えていただきたく思います.よろしくお願いいたします.

  • Access2003のコンボボックスで

    テーブルにある ID 名前 誕生日 住所 データをフォームで IDをコンボボックスで選択し テキストボックスA,B,Cに 名前、誕生日、住所を表示させたいのですが どの様な処理を行なえばよろしいのでしょうか?

  • vbデータベースのコンボボックスの連動

    お世話様です。 VBでデータベースを作っています。 Accessのテーブルからコンボボックスで、レコードを 読み込んでるのですが、1つ目のコンボボックスで 選択した際に、他のコンボボックスも連動するようにするにはどうすればいいでしょうか?? たとえば  コンボボックスであるレコードを選択。 他のコンボボックスでは、先のコンボボックス で絞り込まれたレコードのみ選択できるようにする。 それに伴い他のフィールドも連動するということです。 どうぞよろしくお願いいたします。

  • Accessのコンボボックスの値が消える

    お伺いいたします Accessのフォーム(フォーム請求実績)上に置いたコンボボックスで ユーザーリスト(テーブル)から目的のデータを 選択出来るように設定していますが、 目的のデータをクリックすると、コンボボックスに一瞬、表示された後、消えて空欄になります。 目的のデータ(販売先名)で販売実績表(クエリ)の中の販売先別のデータを抽出(Filter)させていますが目的のデータの抽出はできるのですが、 コンボボックスの表示が消えるので困っています。 因みに、請求実績データ(選択クエリ)の販売店フィールドの抽出条件欄には [forms]![フォーム請求実績]![コンボボックス1]で 抽出するようにしています。 ぐだぐだと長い説明で解りにくいと思いますが要は コンボボックスのデータを選択してもコンボボックスに表示されないのです。 こんな経験された方よろしくアドバイスお願いいたします。

  • Access2000のコンボボックスで複数列の絞込み

    1つのテーブルに「A」「B」「C」という列にデータが入力されていて、それを1つのコンボボックスで絞込みをやりたいと思っていますができません。 コンボボックスで選択したデータを「A」「B」「C」のすべてから検索し含まれる物全てを抽出したいです。   A  B  C 1 山  川  谷 2 山  水  川 3 川  谷  山 1つのコンボボックスで「谷」を選ぶと、1と3のレコードを抽出したいです。 良い方法は、ないでしょうか?

  • Access フォーム コンボボックス

    フォーム上のコンボボックスの選択したデータをテーブルに保存するにはどのようにすれば宜しいのでしょうか? 実際のものは、社員が複数人表示されていまして、その社員一人一人が1日ごとの出勤が可能か不可能かをコンボボックスから選択しテーブルに書き込みたいのですが、その社員一覧のテキストボックスと出勤可・不のコンボ(コントロールソースにてテーブルの各日付ごとに設定)をフォームに作ったところ、社員一覧と社員に対するコンボがずらっと表示さるのですが、コンボを選択しようとしますと下部に「このコントロールは式○○に連結しているため編集できません。」と表示されます。 長文になり、尚且つかなり分かりづらい説明で申し訳ございませんが宜しくお願い致します。

専門家に質問してみよう