• 締切済み

重複チェック

いま、重複チェックをしているのですが、MoveFirstで データをある分だけ調べていて、データが重複してなかったら、データを更新したいのですが、はじめにMoveFirst で、データを調べたので、カレント行が最終行にあると思うので、それを例えば、3行目のデータだったり、5行目のデータを変更したいのですが、よろしくお願いします。 重複チェック rs.MoveFirst   Do While Not rs.EOF    If Text2(0).Text <> rs.Fields(1) Then rs.MoveNext End If Loop rs.Fields(1) = Text2(0).Text

みんなの回答

  • yanmaa
  • ベストアンサー率45% (207/457)
回答No.2

ADOはデータベースにアクセスする手段です。 Accessはデータベースです。 因みに開発はVB6.0ですか? GERRARDさん>このままでは、例えばデータベースに それを言うなら「単位テーブルには」です。 ですから慌てず冷静に補足して下さい。 フォーム上にコードと名称を持っていてそれが15行分あるというのは理解出来ました。 データベースでデータの格納位置については保証される物では御座いません。 単にAccessのフォームでマスタ更新系画面をお作りになりたいならレコードソースに「単位」テーブルを指定すればいいだけですし、VBからADO経由で行いたいのであればdatagridで対応しても良いでしょう。 急いでいるならここで「datagrid」と検索するだけでも十分勉強になります。 rs.Fields(1)からでなく0からのはずですが 画面上でコードを2000から1500に変更したらテーブルのコード2000を1500に変更したいという事ですか?ならば全くもって考え方に問題があります。 2000は何処から拾うのですか? 全行1500でチェックして、重複が無ければ追加だと思いますがなぜ更新なのですか? ループを抜けた後という事はrsはEOFになっているという事はrs.Fields(1)なんて「インデックスが有効範囲にありません」てエラーかな GERRARDさんのソースを見て疑問に思う所は?にしております strSQL = "SELECT * From 単位 " ?レコードセットの記述は? If Flg(1) = 1 Then ?なにもしないのね? Else  'データがある場合  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    Else     msg = "コードが重複しています."     MsgBox msg, vbOKOnly, "重複チェック"     Textx(0).Text = ""     Textx(0).SetFocus    End If   Loop ?なぜループを抜けた時の処理なの? ?ループが抜けた時とはEOFになっているのですよ   rs.Fields(1) = Textx(0).Text   rs.Fields(2) = Textx(1).Text   'データの更新   rs.Update  End If ?何処へ移動するつもりのかな?既に最後の行なのに次があるの?  rs.MoveNext End If ?対応するIf文がないよ End If

  • yanmaa
  • ベストアンサー率45% (207/457)
回答No.1

ご質問が判断出来ません。何がやりたいの? MoveFirstすれば先頭行に位置付けられています。 データベースとのやり取りをしたいのはどうにか理解出来ますが、何と判断して重複チェックをしたいの? 重複が無ければなにに対して更新をしたいの? どのような更新をお望みですか? レコードセットでSELECT文実行しているいるはずだけど場合によってはWHERE句でノットイコール条件(<>や!=)で抽出するだけでもいい。 データベースとのやり取りはADO、DAOそれともそれ以外ですか? とにかく情報が少なすぎて回答するにはちょっと無理があります。 冷静に補足お願いします。 DBMSはなんですか?Access?ORACLE、SQLServer、MySQL・・・

GERRARD
質問者

補足

プログラム載せます。 データベースはADOです。ACEESSに書いてます。 /*注意*/ 下記のようなプログラムが15個あります。 Textx(0)となっていますが”x”は1~15まである だから、1行、1行データがあるかないかを判断している。 Textx(0)はコード Textx(1)は名前 /-------------------/ このままでは、例えばデータベースに コード 名前     1000   あいうえお 2000   あいうえお 3000   あいうえお 4000   あいうえお と入っていて、2000を1500に変えて、登録すると、/###/ の下でエラーがでで、更新できなくなるんです。 /-------------------/ strSQL = "SELECT * From 単位 " If Flg(1) = 1 Then Else 'データがある場合 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 Else msg = "コードが重複しています." MsgBox msg, vbOKOnly, "重複チェック" Textx(0).Text = "" Textx(0).SetFocus End If Loop /#######/ rs.Fields(1) = Textx(0).Text rs.Fields(2) = Textx(1).Text 'データの更新 rs.Update End If rs.MoveNext End If End If

関連するQ&A

専門家に質問してみよう