Microsoft Access 掲示板

ADOでのレコード追加

2 コメント
views
4 フォロー

社員情報登録でADOを使用しています。
以下コードにて検索し、すでに登録がある場合は
変更内容を更新します。
登録がない場合は新規に登録をします。

以下コードですと、更新はうまくできるのですが、
新規登録の場合下記エラーがでます。

「実行時エラー '2147217887(80040e21)
 複数ステップのOLE DBの操作でエラーが発生しました。
 各OLE DBの状態の値を確認してください。作業は終了しませんでした。」

ネットを色々調べましたがギブアップです。
対処方法を教えていただきますようお願い致します。

    Dim CN As ADODB.Connection
    Dim RS As ADODB.Recordset

        Set CN = CurrentProject.Connection
        Set RS = New ADODB.Recordset

RS.Open "meibo_T", CN, adOpenKeyset, adLockOptimistic
RS.Find "名前 LIKE '" & Me![検索用名前] & "'"

If RS.EOF Then  '該当氏名がない場合(新規登録)

RS.AddNew
RS![氏名] = Me![氏名]←ここでエラーがでます
RS!住所 = Me![住所]
RS.Update

Else  '該当氏名がある場合(データ更新)

RS![氏名] = Me![氏名]
RS!住所 = Me![住所]
RS.Update

End If

kitty
作成: 2020/01/22 (水) 09:39:43
通報 ...
1
スナフキン 2020/01/23 (木) 13:34:51 796a1@06760

meibo_Tのデザインはどうなってますか?

RS.Find "名前 LIKE '" & Me![検索用名前] & "'"

RS![氏名] = Me![氏名]

で名前なのですか?
氏名なのですか?

後はどんなフォームを作成されているのでしょうか?

2
kitty 2020/01/23 (木) 16:09:56 e4054@a3086

スナフキン様
ご連絡ありがとうございます。

ご指摘の件、実際のフィールド名を変えて質問していたため誤記です。
RS![名前] = Me![名前] となります。

このコードの前に、
 RS![check] = Me![check] ←チェックボックスがあるんですが、じつはここが問題だったようです。
フォームを開いた時に、チェックボックスがfalseになっていませんでした。
フォームロード時にチェックボックスを、
Me.check.Value = Falseにすることで解決できました。

ありがとうございました。