アクセスVBAの検索メソッドについてデバック
前回もこちらで質問させていただいたことがある内容なのですが、引き続き、トラブルに悩まされています。仕組みがおかしくなっていたので、自分で触ってしまったことがまた悪影響だったのですが、、。
元々他の人が作ったものであり、いま、うまくいかない原因を探っているところです。まず、添付のシートにあるように、上の行のテーブルデータは"商品2_T"という名前のテーブル、下のデータは"商品2_T25discount"という名前のテーブルです。それぞれデータを引っ張ってきて、こちらのサイトに投稿するために貼り付けしました。
問題のコードをこちらに記載します。
Dim cn As ADODB.Connection
Dim cn2 As ADODB.Connection
Dim rs As ADODB.Recordset
Dim rs2 As ADODB.Recordset
Dim strmsg As String
Dim lngRet As Long
Dim strcriteria As String
Set cn = CurrentProject.Connection
Set rs = New ADODB.Recordset
Set cn2 = CurrentProject.Connection
Set rs2 = New ADODB.Recordset
rs.Open "商品2_T", cn, adOpenKeyset, adLockOptimistic
rs2.Open "商品2_T25discount", cn2, adOpenKeyset, adLockOptimistic
MsgBox "更新を開始します ", 64, 更新
Do Until rs.EOF
'該当レコード摘出
If rs!MCD = Me!tx検索 Then
'---------------------------------------------
strcriteria = "CAT = '" & rs!CAT & "'" ' --- A
rs2.Find strcriteria, 0, adSearchForward
If rs2.EOF Then
'
Else
rs!仕入単価 = rs2!discount
End If
'---------------------------------------------
rs!更新日 = Now()
rs.Update
End If
rs.MoveNext
Loop
MsgBox "更新が完了しました ", 64, 更新
(以上)
やりたいことの説明ですが、まず、 If rs!MCD = Me!tx検索 Then とあるように、これはフォーム内にテキストボックスを用意していますので、ここに記入したMCDに一致するものに、検索をかける、ということです。そしてつぎに、strcriteria = "CAT = '" & rs!CAT & "'" 、(省略)rs!仕入単価 = rs2!discount
とありますように、"CAT"を検索対象にし、前者のテーブルの"仕入単価"を、後者のテーブルの"discount"のデータで塗り替えます。
という私の解釈なのですが、(何せ他の人が作りましたので)正しいですよね?
それで今試しているところなのですが、なぜかうまくいきません。何が間違っているのでしょうか?
どういうエラーになるのかというと、これを実行すると、"更新日"というフィールドのみ、更新されて、仕入単価はそのままになります。ちなみに更新日が更新されているのは、このテキストボックスに入れたMCDが一致する全てのデータに対してですので、MCDが一致、には反応しているが、CATを検索して更新をかける、という動作に失敗しているように見えます。
しかし素人なのでこれ以上どうすればよいかがわかりません。どなたか少しでも解決策があれば教えていただけないでしょうか。
お礼
ありがとうございます。若干少ないんですね。 ボックスポテトを1箱食べた時、おなかには余裕で入るものの あきてしまって、どうしようか、というのもありましたが・・・