OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

カレント行取得

  • すぐに回答を!
  • 質問No.207862
  • 閲覧数175
  • ありがとう数0
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 9% (11/119)

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件目にあると思うので、それを”任意”の行にしたいのですが教えてください。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全3件)

  • 回答No.1
レベル10

ベストアンサー率 31% (47/149)

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

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

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

お礼率 9% (11/119)

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


  • 回答No.2
レベル14

ベストアンサー率 51% (1179/2272)

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

お礼率 9% (11/119)

そうですね、”行数”が問題になっています。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:55
  • 回答No.3
レベル14

ベストアンサー率 51% (1179/2272)

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

お礼率 9% (11/119)

すみませんが、Findの使い方を教えていただけないでしょか?ヘルプ機能がないもので・・・
投稿日時 - 2002-01-30 16:47:50
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ