アプリ版:「スタンプのみでお礼する」機能のリリースについて

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件目にあると思うので、それを”任意”の行にしたいのですが教えてください。

A 回答 (3件)

まずちょっと変更したほうがいい点です。


>If Text1(0).Text <> rs.Fields(1) Then

↑のような条件判定をレコードごとに行うのはよくありません。
今は3件だけかもしれませんが、1000件のデータを対象にすると
時間がとてもかかります。
SQLでwhere句で条件を指定してもっとレコードを絞り込むべきです。

>それを”任意”の行にしたいのですが教えてください。
なぜ任意にしたいのでしょう。
SQLを再発行するとか、MoveFirstを使用してはだめなのですか?

この回答への補足

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

補足日時:2002/01/30 09:29
    • good
    • 0

こんにちは。

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

この回答への補足

そうですね、”行数”が問題になっています。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

補足日時:2002/01/30 14:51
    • good
    • 0

再びmaruru01です。


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

この回答への補足

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

補足日時:2002/01/30 16:47
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!