|
855さん、おはようございます。
早速のご教示ありがとうございました。
>こんにちは、まず小僧さんが言われたようにFor文の中のI = I + 1はいらないですね。
>あと↓これも修正必要ですね。
>>ご提示のコードですと rs1 が 2レコード目になった際、
>>rs3 が Close したままになっているためそこでエラーが返って来てしまいますね。
ご指摘ありがとうございます。この2点修正いたしました。
凡ミスでお恥ずかしいです。
>位置テーブルのrs2![X1]がrs2.MoveNextで値が変わるので、
>単純に「X1」フィールドの上位5位では無理そうですね。
こちらについては、小僧さんにも余計なお手間をとらせて恐縮しております。
実際には
rs3![Kyori] = Sqr((Abs(rs1![X] - rs2![X1]) * 30.82) ^ 2 + (Abs(rs1![Y] - rs2![Y1]) * 25.15) ^ 2) / 1000
という計算式なのです。この計算式が上手く作動しませんでしたので、とりあえず簡単な計算式で代用し、まずはコードを仕上げようと思っておりました。
>以下気になった点、、
>
>
>>rs3.Close
>>rs3.CursorLocation = adUseClient
>>rs3.Open "距離", cn, adOpenKeyset, adLockOptimistic
>わざわざrs3をClose・Openさせなくてもいい気がします。(何のエラーにもなりませんけど。)
私もおかしいなと思ったのですが、この3行をとると
「現在のプロバイダは並べ替え、またはフィルタリングに必要なインターフェイスをサポートしていません」と表示され、
rs3.Sort = "kyoriX DESC"のところが黄色くなります。
>>rs3.Sort = "kyoriX DESC"
>のあとに rs3.MoveFirst が必要かも。?
ありがとうございます。これは付け加えました。
>I = 0 はいらないですね。
>I = I + 1 も省いて。
はい、削除いたしました。
>このFor文にrs3のMoveNextがないので同じ値しか書き込みにいってないです。
Next i の前にrs3.MoveNextを入れました。
>>Do Until rs3.EOF
>> rs3.Delete
>> rs3.MoveNext
>>Loop
>
>この処理に入る前にrs3のMoveFirstが必要です。
rs3.MoveFirstを付け加えました。
>色々書きましたけど、Delete時のエラー解決にはなってないと思います。。
>実際に動かさずに書いた文章なので間違いがあったらすいません。
いろいろ教えていただきありがとうございます。
Delete時のエラーは現在もでます。
データ件数が多いので、毎回ワークテーブルのデータを消さないと時間がかかりすぎるため、この方法にしたのですが、他にいい方法があればと思います。
|
|