• 締切済み

カレント行取得

Do While Not rs.EOF  If Text1(0).Text <> rs.Fields(1) Then   /*--*--*/   rs.MoveNext     Else   msg = "コードが重複しています."   MsgBox msg, vbOKOnly, "重複チェック"   Text1(0).Text = ""   Text1(0).SetFocus  End If Loop *------ text1(1) = rs.fields(1) text1(2) = rs.fields(2) -------* データベース(Access)にデータが3件入っていて、例えば、1件目のデータを更新したいのですが今のソースでは、/*--*--*/でデータベースを次々読んでいるので、3件読み終えたときにカレント行が4件目にあると思うので、それを”任意”の行にしたいのですが教えてください。

みんなの回答

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

再びmaruru01です。 もし、Accessのそのテーブルのレコードを、 変更や追加はするが、削除はしない ということであれば、そのテーブルに新しく数値のフィールドを作って、一番上のレコードから順に、 1,2,3・・・ という風に連番をつけてはどうでしょう。 そうすれば、Findを使って、そのフィールドの値で検索出来ます。 連番は、15個ぐらいなら手入力出来ますし、もし実はレコードが多いということなら、コードで書いて実行してもいいと思います。 では。

GERRARD
質問者

補足

すみませんが、Findの使い方を教えていただけないでしょか?ヘルプ機能がないもので・・・

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 ちょっとお聞きしたいんですが、 どういう条件で、"5行目"を取り出すのでしょうか。 どこかのフィールドの値がある条件のデータでしょうか。それなら、Findを使えばいいと思います。 それとも、"行数"が問題なんでしょうか。でも、行数は、Accessでテーブルをいじってしまう(ソート)と変わってしまいますけど。 データの内容に関係なく移動するのはMove系(先頭、前、後ろ、末尾)で、任意の条件での移動はFindになります。 補足をお願いします。 では。

GERRARD
質問者

補足

そうですね、”行数”が問題になっています。ACCESSのテーブルはいじらないとおもってください。 今問題になっているのが”データ更新”のところなんですが?? /*** ***/ ここで、データがある文だけ最初から探しているので、例えば、データが10件入っていて、1行目のデータを変更するときは、/###/のところにmovefirstをつかえばいいのですが、3件目のデータとかの場合はどうすればいいのですか?? /*注意*/ textxは1~15までが入っていて、だから15個このようなプログラムがあります。 If Textx(0).Text <> rs.Fields(1) Then    '重複チェック    rs.MoveFirst   Do While Not rs.EOF      If Textx(0).Text <> rs.Fields(1) Then         /***           rs.MoveNext         ****/         End If    Loop End If /#####/ rs.Fields(1) = Textx(0).Text

  • zerosix
  • ベストアンサー率31% (47/149)
回答No.1

まずちょっと変更したほうがいい点です。 >If Text1(0).Text <> rs.Fields(1) Then ↑のような条件判定をレコードごとに行うのはよくありません。 今は3件だけかもしれませんが、1000件のデータを対象にすると 時間がとてもかかります。 SQLでwhere句で条件を指定してもっとレコードを絞り込むべきです。 >それを”任意”の行にしたいのですが教えてください。 なぜ任意にしたいのでしょう。 SQLを再発行するとか、MoveFirstを使用してはだめなのですか?

GERRARD
質問者

補足

それじゃあ、ちょっと言い方を変えます。ACCESSにデータが10件は入っていて、5行目のデータを取り出したいときにはどうすればいいですか?   moveXXXでないですか?

関連するQ&A