■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#21927-0ADOでのファイル更新Yoshi212001-07-20(金) 18:51
     #21929-0RE#21927:ADOでのファイル更新匿名219292001-07-20(金) 23:51
     #21931-0RE#21929:ADOでのファイル更新Yoshi212001-07-21(土) 10:28
     #21938-0RE#21931:ADOでのファイル更新レベル102001-07-23(月) 09:34
     #21941-0RE#21938:ADOでのファイル更新Yoshi212001-07-23(月) 17:58
     #21997-0RE#21927:ADOでのファイル更新(再)Yoshi212001-07-27(金) 10:46
     #22002-0RE#21997:ADOでのファイル更新(再)Say2001-07-27(金) 12:49
     #22009-0RE#21997:ADOでのファイル更新(再)ゆー太郎2001-07-27(金) 17:33
     #22013-0RE#22009:ADOでのファイル更新(再)Yoshi212001-07-28(土) 10:52
#21927-0
ADOでのファイル更新
VB6(SP5)+ACCESSを使用しています。
複数のテキストボックスのデータでMDBに更新をかけたいとき
テキストボックスが Null 値のとき実行時エラーとなり次のメッセージが出ます。
全項目テキストボックスを埋めたときは正常です。

実行時エラー '-2147217887(80040e21)':
Multiple OLE DB operation generated errors. Check each OLE DBrs.CursorType = adOpenKeyset
status value,if available. Not work was done.rs.LockType = adLockOptimistic

デバッグ指示すると、1つ先のステートメントにエラーが表示されています。
Null 値の編集が悪いのか、別の原因か教えてください?

rs.Open "tbl", cn, , , adCmdTable
rs.Find "Cd2 = '" _
        & txtCd2 _
        & "'"
If rs.EOF = False Then
    rs!Cd1 = txtCd1.Text        ←英数 値有り
    rs!Cd2 = txtCd2.Text        ←数字 値有り
    rs!Nm = txtNm.Text          ←漢字 値有り
    rs!No = txtNo.Text          ←数字 値無し    ここからデータ値無し
    rs!J1 = txtJ1.Text          ←漢字 値無し    このステートメントをエラー表示
    rs!J2 = txtJ2.Text          ←漢字 値無し
    rs!J3 = txtJ3.Text          ←漢字 値無し
    rs!J4 = txtJ4.Text          ←漢字 値無し
    rs.Update
End If
rs.Close
#21929-0
RE#21927:ADOでのファイル更新
> VB6(SP5)+ACCESSを使用しています。
> 複数のテキストボックスのデータでMDBに更新をかけたいとき
> テキストボックスが Null 値のとき実行時エラーとなり次のメッセージが出ます。
> 全項目テキストボックスを埋めたときは正常です。

まず、データベース設計はどうなんですか?
NULLを許す設定になっていますか?
各フィールドの型に合ったデータ型を格納していますか?
#21931-0
RE#21929:ADOでのファイル更新
> まず、データベース設計はどうなんですか?
> NULLを許す設定になっていますか?
> 各フィールドの型に合ったデータ型を格納していますか?

データベース設計を確認しました。キー部以外は空文字を許す指定になっています
データ属性は全てテキスト型です。
ACCESS定義以外にVBのコードでそれらの属性を指定(デフォルトなど)出来るのですか
またこのようなエラーが発生したときMSDNやHELPを参照してもなかなか解決しません。
いろいろ試行錯誤する以外にないのでしょうかね
#21938-0
RE#21931:ADOでのファイル更新
> > まず、データベース設計はどうなんですか?
> > NULLを許す設定になっていますか?
> > 各フィールドの型に合ったデータ型を格納していますか?
> 
> データベース設計を確認しました。キー部以外は空文字を許す指定になっています
> データ属性は全てテキスト型です。

えっと、空文字許可と値要求は別モノです。「値要求」の項目を確認して下さい。
#21941-0
RE#21938:ADOでのファイル更新
> > > まず、データベース設計はどうなんですか?
> > > NULLを許す設定になっていますか?
> > > 各フィールドの型に合ったデータ型を格納していますか?
> > 
> > データベース設計を確認しました。キー部以外は空文字を許す指定になっています
> > データ属性は全てテキスト型です。
> 
> えっと、空文字許可と値要求は別モノです。「値要求」の項目を確認して下さい。

「値要求」の設定はNULL許可と同時に「いいえ」に設定しています。
#21997-0
RE#21927:ADOでのファイル更新(再)
> VB6(SP5)+ACCESSを使用しています。
> 複数のテキストボックスのデータでMDBに更新をかけたいとき
> テキストボックスが Null 値のとき実行時エラーとなり次のメッセージが出ます。
> 全項目テキストボックスを埋めたときは正常です。
> 
> 実行時エラー '-2147217887(80040e21)':
> Multiple OLE DB operation generated errors. Check each OLE DBrs.CursorType = adOpenKeyset
> status value,if available. Not work was done.rs.LockType = adLockOptimistic
> 
> デバッグ指示すると、1つ先のステートメントにエラーが表示されています。
> Null 値の編集が悪いのか、別の原因か教えてください?
> 
> rs.Open "tbl", cn, , , adCmdTable
> rs.Find "Cd2 = '" _
>         & txtCd2 _
>         & "'"
> If rs.EOF = False Then
>     rs!Cd1 = txtCd1.Text        ←英数 値有り
>     rs!Cd2 = txtCd2.Text        ←数字 値有り
>     rs!Nm = txtNm.Text          ←漢字 値有り
>     rs!No = txtNo.Text          ←数字 値無し    ここからデータ値無し
>     rs!J1 = txtJ1.Text          ←漢字 値無し    このステートメントをエラー表示
>     rs!J2 = txtJ2.Text          ←漢字 値無し
>     rs!J3 = txtJ3.Text          ←漢字 値無し
>     rs!J4 = txtJ4.Text          ←漢字 値無し
>     rs.Update
> End If
> rs.Close

まだ、解決せず悩んでいます。-2147217887 エラーの件 Microsoft USsite の技術資料を
検索したりすると 100 件以上の資料が有りました、MDB以外やOLEDB4.0 以外を除いていくと
10件程有りましたが、どれも結論となりませんでした。
そこでVBとACCESSの環境を全く同じにして OS を Win/Me から Win/2000 にすると正常に
データ更新が出来ました。
Windows/Me と VB の相性で何か経験された方がいましたら教えてください。

#22002-0
RE#21997:ADOでのファイル更新(再)
追加/更新にRecordsetのメソッド使わないんでよくしらないんですが、
rs.Updateするには、事前に
rs.AddNewとかrs.Editとかしないといけないのでは?

ふつうは
strSQL = "UPDATE TABLENAME SET ....WHERE...."
adocon.Execute strSQLとかします。

私は、UPDATEより DELETE→INSERTが好きだったりしますが・・・


#22009-0
RE#21997:ADOでのファイル更新(再)
#ADO の場合、 Editステートメントは無いですよ。

rs!Noと rs!J1 のフィールドの型は何ですか?
文字型の場合、フィールドの空白文字を許可するプロパティ
はどうなっていますか?
#22013-0
RE#22009:ADOでのファイル更新(再)
> #ADO の場合、 Editステートメントは無いですよ。
> 
> rs!Noと rs!J1 のフィールドの型は何ですか?
> 文字型の場合、フィールドの空白文字を許可するプロパティ
> はどうなっていますか?

全てテキスト型で定義し、値要求「いいえ」、空文字許可「はい」
にしています(ACCESS2002)
また試行錯誤の結果、Windows2000 では正常処理、WindowsMe では
NULLデータ編集が連続するとき2番目のNULLデータ編集でエラーが発生しています。
(直前の項目にSPACEが1つでも有れば次のNULL編集は出来る)

お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)