<Access DLookup関数を使ってみた>
どうも、三流プログラマーのKen3です。 今回は、 AccessでDLookup関数を使ってみたいと思います。/* * 1.今回のキッカケ */
メールで下記の質問をもらいました。 --------------- In message "アクセスVBAでwindowの閉じ方、グループでのデータ取得法...", >あとひとつは、やはりアクセスで、 >グループ処理のとき、次のデータから > > fld1 fld2 fld3 > あ 2 a > あ 1 b > あ 4 c > >「あ」でグループ化し、fld2から 最小値 1をえらび > fld3 については、bを表示させたいのですが、 >(fld2に属するfldsのデータを選ぶ) > >どうすればよろしいのですか。 --------------- そんな質問に対して、 よく使うだろうと思う、DLookupを使ってみたいと思います。/* * 2.クエリーとDLookupでかわしてみようと思った */
クエリーとDLookupでできそうです。 fld1 fld2 fld3 あ 2 a あ 1 b あ 4 c 「あ」を条件にして、fld2で小さい順にされているクエリーから fld3の値を取り出す。 と方針を少し変えてみました。 まぁ、軽くテストでもするかな。 ※下記失敗作です、動かないので注意。
Sub aaa() '失敗作・・・SQL直接は記述できないのかなぁ?
Dim data As String
Dim strSQL As String
'fld2の小さい順に並べたデータの集合がほしいので
strSQL = "select * from TEST_TABLE order by fld2"
'必要なデータfld3をstrSQLの集合から条件はfld='あ'で検索
data = DLookup("fld3", strSQL, "fld1 = 'あ'")
MsgBox data
End Sub |
↑実行時エラーの画面
しかたがない、ワンクッション置いたクエリーを作成するかな。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
↑fld2でソートしたクエリーの作成
で、そのクエリーを元にデータをチェックします。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
下記、Accessのフォームに貼ったコマンドボタンです。
txtA [ ___ ]に条件を入れてテスト。
Private Sub コマンド2_Click()
Dim data As Variant
'直接の値でやってたけど、フォームの値を利用して、
data = DLookup("fld3", "Q_CHK", "fld1 = '" & Me![txtA] & "'")
MsgBox "fld3=" & data
End Sub |
↑フォームから検索した結果
それにしてもなぜ?
Dim data As Variant
~~~~~~~~~~~~~~~~~~~
えっとですね、
データが無いときに、"う"など見つからなかった時に、
Stringだと、Dlookupの戻り値がNULLなので、エラーが発生してしまうので。。。
↑フォームから検索した結果
いつものかわしかたで、
Dim data As String
'直接の値でやってたけど、フォームの値を利用して、
data = "" & DLookup("fld3", "Q_CHK", "fld1 = '" & Me![txtA] & "'")
と
””&〜と強引に文字列にする、なんて逃げ方もあります。
Private Sub ken3_検索_Click()
Dim 探したID
Dim str検索条件 As String
'検索条件を作成
str検索条件 = "照明番号 = '" & Trim(Me![ken3_番号]) & "'"
'該当するIDを照明番号台帳サブから検索する
探したID = DLookup("ID", "照明番号台帳サブ", str検索条件)
'検索がOKか判断する
If IsNull(探したID) Then
MsgBox "証明書番号" & Me![ken3_番号] & "は見つかりませんでした"
Else
'IDが見つかったら、レコードを移動させたい
DoCmd.GoToControl "ID" 'IDフィールドに入力を移動
'指定した条件のIDを探す
DoCmd.FindRecord 探したID
End If
End Sub |
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
|
気になったジャンル↓を選択してください。 人気記事(来場者が多いTOP3): Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など 開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う] 仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力] ※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。 |
Blogとリンク:[三流君の作業日記]/
[VBAやASPのサンプルコード]/
広告-[通販人気商品の足跡]