アプリ版:「スタンプのみでお礼する」機能のリリースについて

ACCESSで複数主キーにおけるseek検索

ACCESS2000で複数の主キーを持つテーブルからseekで一致検索を行いたいが、
ADOを利用した場合のコードの書き方がわかりません。
テーブルは以下の3つのフィールドから構成されます。

フィールド1:フィールド2:フィールド3
年月日:担当職員:応対結果

ここで主キーは「年月日」と「担当職員」の2つで、「年月日」と「担当職員」が
一致するレコードをseekによって検索したいのです。
インデックスを表示させると「年月日」と「担当職員」が表示されます。
「年月日」の欄にのみ、インデックス名の欄にPrimaryKeyと書かれています。

DAOを用いて検索部分をVBAで書いたら動きました。
以下に検索部分だけ書きます。

(1) ds.Index = "PrimaryKey"
(2) ds.Seek "=", 年月日, 担当職員
(3) If ds.NoMatch Then
(4) MsgBox"そんなデータないですよ"
(5) Else
(6) MsgBox"一致するのがありました"

しかしながら、ADOを用いた記述方法がわかりません。
上の(1)行は
ds.Index = "PrimaryKey"
でよいと思うのですが、(2)行以下がどう書いて良いかわかりません。
何卒宜しくお願いします。

A 回答 (2件)

えー、すべて設定は出来ているものと


勘違いしていました。一応、こちらで
すべてを設定してみました。


テーブルをTdataとします。

Private Sub コマンド0_Click()
Dim cn As ADODB.Connection
Dim ds As ADODB.Recordset
Dim vardat As Variant
Dim strmsg As String
Dim myKey(1 To 2)
Dim varA As Variant
Dim varB As Variant

Set cn = CurrentProject.Connection
Set ds = New ADODB.Recordset

ds.Open "Tdata", cn, adOpenKeyset, adLockOptimistic, adCmdTableDirect
varA = InputBox("検索する年月日を入力して下さい。")
varB = InputBox("検索する担当職員を入力して下さい。")
Let myKey(1) = varA '"年月日"
Let myKey(2) = varB '"担当職員"
ds.Index = "PrimaryKey"
ds.Seek Array(myKey(1), myKey(2)), adSeekFirstEQ

If ds.EOF Then
MsgBox ("ありません")
Else
MsgBox ("ありました")
End If

ds.Close: Set ds = Nothing
cn.Close: Set cn = Nothing
End Sub

このような感じで一応動いています。
設定の勘違い、Inputboxなどはご勘弁を。
    • good
    • 0
この回答へのお礼

この回答を待っていた!
ありがとうございます!

お礼日時:2010/06/08 00:59

>If ds.NoMatch Then



If ds.EOF Then

では?
    • good
    • 0

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

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