EOFを正しく判断してくれない
VB:Ver6.0
OS:WindowsXP
テーブル[tbl_A]のデータをテーブル[tbl_b]にコピーし、テーブル[tbl_A]の発行フラグ=Falseなら
テーブル[tbl_C]からNo.を取得するという処理を行っています。
この処理を実行すると、抽出されたテーブル[tbl_A]のデータが2件なら、テーブル[tbl_b]のデータは4件と
コピーされるデータ件数が2倍になってしまいます。
テーブル[tbl_A]のデータをコピーしている最中にupdateしているためにrsA.EOFを正しく認識していないのでしょうか?
どうしても原因がわからず困っています。
原因や解決策がわかる方がいらっしゃいましたらどなたかご教授くださいますようお願いいたします。
TA_id,TA_addr,TA_no,TA_hakd,TA_hakf
1,東京,,,false
2,東京,,,false
3,大阪,,,false
TB_id,TB_addr,TB_no,TB_hakd,TB_hakf
1,東京,100,,false
2,東京,101,,false
1,東京,102,09/12/16,true
2,東京,103,09/12/16,true
Public Function WRITE_DATA() As Boolean
Dim rsA As New ADODB.Recordset
Dim rsB As New ADODB.Recordset
Dim strSql As String
WRITE_DATA = False
adoCon.BeginTrans
rsB.Open "tbl_B", adoCon, adOpenKeyset, adLockOptimistic
strSql = "select * from tbl_A where TA_addr = '東京'"
rsA.Open strSql, adoCon, adOpenKeyset, adLockOptimistic
Do While rsA.EOF = False
rsB.AddNew
rsB![TB_id] = rsA![TA_id]
rsB![TB_addr] = rsA![TA_addr]
rsB![TB_no] = rsA![TA_no]
rsB![TB_hakd] = rsA![TA_hakd]
rsB![TB_hakf] = rsA![TA_hakf]
if rsA![TA_hakf] = false then
strSql = "select * from tbl_C where TC_id = 'PRINTID'"
rsC.Open strSql, adoCon, adOpenKeyset, adLockOptimistic
rsC![TC_no] = rsC![TC_no] + 1
rsC.Update
rsB![TB_no] = rsC![TC_no]
rsC.Close
rsA![TA_no] = rsB![TB_no]
rsA![TA_hakd] = Format(Now, "yy/mm/dd")
rsA![TA_hakf] = true
rsA.Update
end if
rsB.Update
rsA.MoveNext
Loop
rsA.Close
rsB.Close
adoCon.CommitTrans
WRITE_DATA = True
Exit Function
お礼
ご回答ありがとうございました。