掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VB.NET からAccessへUPDATE文で更新時の問題 (ID:148031)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>>そうした最低限の環境に UPDATE した場合にも、 >今回の現象が再現されるのでしょうか? >再現されました。 引用符「>」は、相手の発言行すべてに付けましょう。 で、その再現したというのは、更新されないという件だけでなく、 ステップ実行すると正常に書き込まれる、という点までも 再現したということでしょうか。 また、その時の ExecuteNonQuery の戻り値はどうなっていましたか? > もっと多くなる場合があります。SQL文のパラメータの文字数制限に …どういう意味でしょうか? ループ回数が増えると文字数制限にひっかるのですか? > そのレコード自体に問題があるのでしょうか? こちらには再現できる環境が無いので、原因までは分かりません。 機密情報等を取り除いた最低限の検証データとソースを、 SkyDrive 等にアップロードできないでしょうか。 更新失敗の要因として良く見かけるのは、 ・そもそも、コミットし忘れていた。 ・開発用DBと本番用DBが別ファイルで、両者を見間違えていた。 ・mdbをソリューションの一部として配置していたため、 ビルド時に更新前の mdb が再配置されてしまっていた。 ・本来であれば更新されるべきデータだと思い込んでいたが、 実はデータに予定外の不可視文字が入っていたので、 WHERE での更新対象から外れてしまっていた。 ・パラメータ化した際、ADO.NET が日付時刻型がを日付型に 誤ってマッピングされてしまう問題に引っ掛かり、時刻情報が 欠落することで、検索条件に合致しなくなっていた。 ・mdb の照合順序によっては、文字列比較(LIKE 演算子、= 演算子など)で 特定の文字が無視されるため、それによって抽出されなかった。 ・フィールド名に予約語が含まれていたため、フィールド名を 角括弧([〜])で囲まないと更新されなかった。 などの問題が思い当たりますが、今回のようにステップ実行で結果が 変わるというと、やはり、先の遅延書き込みの問題ぐらいしか 想像できませんでした。 > ちなみにUPDATEするフィールドはメモ型ですが、それは関係ないですか? WHEREや副問い合わせで使うのではなく、SET 句に使うだけであれば 問題ないと思います。 メモ型として特殊な設定があるとすれば、 ・4KB 以下の西欧言語文字をシングルバイトで保存するための “[Unicode 圧縮/Unicode Compression]プロパティ”。 ・編集履歴を保持させる“[追加のみ/Append Only]プロパティ”。 (履歴は ColumnHistory メソッドで取得。) ぐらいですが、今回の件とは関係なさそうですし。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.