|
こんにちは、まず小僧さんが言われたようにFor文の中のI = I + 1はいらないですね。
あと↓これも修正必要ですね。
>ご提示のコードですと rs1 が 2レコード目になった際、
>rs3 が Close したままになっているためそこでエラーが返って来てしまいますね。
小僧さんが言われた、
> ロジックで疑問なのですが、
> > 「距離」ワークテーブルの「KyoriX」フイールドの上位5位
> を出したいという事なのですが、
> > rs3![kyoriX] = rs2![X1] - rs1![X]
> しか処理をしていないという事は
> 実質「位置」テーブルの「X1」フィールドの上位5位と
> 変わりがないのではないでしょうか。
> もしそうであるならばもう少し簡単に上位5位が取って来れそうですね。
では、
>Do Until rs2.EOF
> rs3.AddNew
> rs3![kyotenmei] = rs2![拠点名]
> rs3![kyoriX] = rs2![X1] - rs1![x]
> rs3![kyoriY] = rs2![Y1] - rs1![y]
> rs3.Update
> rs2.MoveNext
>Loop
位置テーブルのrs2![X1]がrs2.MoveNextで値が変わるので、
単純に「X1」フィールドの上位5位では無理そうですね。
以下気になった点、、
>rs3.Close
>rs3.CursorLocation = adUseClient
>rs3.Open "距離", cn, adOpenKeyset, adLockOptimistic
わざわざrs3をClose・Openさせなくてもいい気がします。(何のエラーにもなりませんけど。)
>rs3.Sort = "kyoriX DESC"
のあとに rs3.MoveFirst が必要かも。?
>I = 0
>For I = 1 To 5
> rs4.AddNew
> rs4![kyotenmei] = rs3![kyotenmei]
> rs4![kyoriX] = rs3![kyoriX]
> rs4![kyoriY] = rs3![kyoriY]
> I = I + 1
> rs4.Update
>Next I
I = 0 はいらないですね。
I = I + 1 も省いて。
このFor文にrs3のMoveNextがないので同じ値しか書き込みにいってないです。
>Do Until rs3.EOF
> rs3.Delete
> rs3.MoveNext
>Loop
この処理に入る前にrs3のMoveFirstが必要です。
色々書きましたけど、Delete時のエラー解決にはなってないと思います。。
実際に動かさずに書いた文章なので間違いがあったらすいません。
|
|