2010年7月20日火曜日

access vba:カーソルがある位置のコントロール名取得

タイトルがなんか変ですが。

例えばフォーカス取得時のイベントで、

Dim ctlName As String, ctlValue As Variant
ctlName = Me.ActiveControl.Name
ctlValue = Me.ActiveControl

でctlNameにコントロール名格納。
ctlValueに値取得。

サブフォームの場合は、http://www.accessclub.jp/bbs2/0095/beginter29204.htmlにあるように、
Dim ctlName As String, ctlValue As Variant
ctlName = Me!サブフォームコントロール名.Form.ActiveControl.Name
ctlValue = Me!サブフォームコントロール名.Form(ctlName)
ですね。

予断ですが、例えばコントロール名とテーブルのフィールド名が一緒だったら、
sql="select * from test where " & ctlName & " = " & ctlValue & ";"
とかいけるんでしょうかね(未検証)。

一緒じゃなくても
Select Case ctlName
Case ほにゃらら
sql="select * from test where id = " & ctlValue & ";"
Case ふもふも
sql="select * from test where name = " & ctlValue & ";"
End Select
みたいに対応するテーブルのフィールド名と一致したときに対応するsql文を組む、とか。

0 件のコメント:

コメントを投稿