- ベストアンサー
Access DLookup関数 行で指定
Access2000 DLookup関数のcriteria部でクエリ指定行の値を求めたいのですが分かりません。 <参考> DLookup("フィールド", "クエリ", "指定行=10") クエリの10行目に有るフィールドの値を求める場合、criteria部の書き方を教えて下さい 検索で探したのですが見つける事が出来ませんでした・・。
- みんなの回答 (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というフィールドの値を取ってきてメッセージボックスにて表示します。 一応、ストリング値はとってくることができましたが、その他の変数、ヌル値、ブランクなどについては、未検証ですので、使うのでしたら検証しておいてください。
お礼
ファンクションの知識は無いので中身は分かりませんでしたが 実際モジュールに入れてID順で試してみたところ、出来ました。 >このようなものをモジュールに作っておけば、アクセス随所から呼び出して使うことができます。 これは助かります。他のAccessにも使わせていただきます。 分かりやすい回答有難うございました。