プロが教える店舗&オフィスのセキュリティ対策術

Access2000

DLookup関数のcriteria部でクエリ指定行の値を求めたいのですが分かりません。
<参考>
DLookup("フィールド", "クエリ", "指定行=10")

クエリの10行目に有るフィールドの値を求める場合、criteria部の書き方を教えて下さい
検索で探したのですが見つける事が出来ませんでした・・。

A 回答 (1件)

アクセスについては書かれた順に取り出されているような気がしますが、RDB全般において、データの並び順は指定していない限り保証されませんので、クエリ部分で何らかの指定が入っているべきですが、、、



dlookupにそのような機能があるかわかりません。

ADOでそのようなファンクションを作ってみましたが、、、
エラー処理や、該当レコードがなかった場合などの処理方法は良くわからなかったのでテキトーです。
このようなものをモジュールに作っておけば、アクセス随所から呼び出して使うことができます。

Function DLookUPA(strSQL, strField, RowNum) As Variant
Dim Con As ADODB.Connection
Dim Rst As New ADODB.Recordset

Set Con = CurrentProject.Connection
Rst.Open strSQL, Con, adOpenKeyset, adLockOptimistic
If Rst.RecordCount = 0 Then
DLookUPA = "No Record"
Rst.Close
Con.Close
Exit Function
End If
If RowNum = 1 Then
DLookUPA = Rst.Fields(strField)
Rst.Close
Con.Close
Exit Function
End If
If Rst.RecordCount >= RowNum Then
For x = 2 To RowNum
Rst.MoveNext
Next x
DLookUPA = Rst.Fields(strField)
Rst.Close
Con.Close
Exit Function
End If

Rst.Close
Con.Close
DLookUPA = "error msg"


End Function



たとえば、フォーム上のボタンのイベントに

Private Sub コマンド0_Click()
MsgBox DLookUPA("select * from table1 order by mainkey", "data", 1)
End Sub

とすると、table1をmainkey順に並べて、2番目のレコードのdataというフィールドの値を取ってきてメッセージボックスにて表示します。


一応、ストリング値はとってくることができましたが、その他の変数、ヌル値、ブランクなどについては、未検証ですので、使うのでしたら検証しておいてください。
    • good
    • 0
この回答へのお礼

ファンクションの知識は無いので中身は分かりませんでしたが
実際モジュールに入れてID順で試してみたところ、出来ました。
>このようなものをモジュールに作っておけば、アクセス随所から呼び出して使うことができます。
これは助かります。他のAccessにも使わせていただきます。
分かりやすい回答有難うございました。

お礼日時:2013/10/28 16:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています