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です。
(このフォーム上の日付テキストボックスは、可視設定「不可」でかまいません)
参考になれば...
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- Excel(エクセル) コンボボックス及びリストボックスを5段階連動させる方法をご存知の方ご教授頂きたいです。 Excelで 3 2022/04/03 21:43
- Visual Basic(VBA) Excel VBA でデータ転記について 1 2023/03/07 19:11
- Access(アクセス) Accessフォーム 一部のレコードだけを抽出する方法について 1 2022/06/28 18:45
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- Excel(エクセル) Excel2019、2021の売り上げなどの集計表について 4 2022/11/29 14:03
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Excel(エクセル) Excel2019、2021の日付、曜日の表示について 2 2022/11/29 15:01
- Excel(エクセル) Excel コンボボックス バックカラー 1 2023/02/18 08:06
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
開始と終了を指定して、その間...
-
substrの使い方について教えて...
-
C言語でシステム日付との差を...
-
差分の月数を算出する方法
-
Accessで、DAOでAddnew
-
SQL:TIMESTAMPの期間検索を指...
-
php カレンダーの休み表示
-
Dosブロンプトでtabを出力したい
-
wordの差し込み印刷で文字...
-
Yahoo! JAPAN IDを新規取得でき...
-
VB.NETからVBAマクロ(引数)を呼...
-
phpでcookieがうまく保存されない
-
switch()文で値の大小比較
-
VB or VBScriptでPCの製造番号...
-
(Win32)ファイルパスから物理ド...
-
PHPのセッション有効期限について
-
$_SESSIONと、POSTやGETの違い
-
findstrのerrorlevel
-
コンピューター名を取得したい
-
【C#】DataGridViewの最大列数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
開始と終了を指定して、その間...
-
ファイル名に日付の挿入
-
アップロードしたファイル名に...
-
昨日の日付を取得するVBscript
-
C言語でシステム日付との差を...
-
C言語を使って、ある特定の日の...
-
Accessコンボボックス
-
現在時刻をyyyymmddhhmmss形式...
-
月曜日から始まる週間カレンダ...
-
6ヶ月前の日付を取得するにはど...
-
MySQLのdate型をphpで○年○月○日...
-
今日の日付から1週間のリスト
-
MYSQLの日付から現在までの年数...
-
ASP 年度年齢の計算
-
ESXiのdateコマンドについて
-
PHP 指定した期間だけ表示した...
-
改行されないカレンダー(PHP)
-
VBAでのDATEについて
-
シェルスクリプト:N日前の日付...
-
rss2.0<pubDate>の日付整形
おすすめ情報