アクセス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を検索して更新をかける、という動作に失敗しているように見えます。
しかし素人なのでこれ以上どうすればよいかがわかりません。どなたか少しでも解決策があれば教えていただけないでしょうか。
補足
回答ありがとうございます。 ヘルプを参考にいろいろ試してみたのですが、どうしてもうまくいきませんでした。 対象としているページを保存した場合の大きさと、GETリクエストで取得した際に表示されるサイズが明らかに異なっていることが分かりました。 URLを直接指定すると、対象としているページの入り口のページを見に行ってしまうようです。 対処法はありますでしょうか?