ACCESS2003です。
SQLのSELECT文で取得した結果に対して、条件を満たすかどうかを
判定して、1レコードずつ結果を更新していくロジックを考えました。
wSQL = "SELECT * FROM ~"
Set wREC = wCNN.OpenRecordset(wSQL, dbOpenDynaset)
Do Until wREC.EOF
If 条件を満たすか Then
wREC.Edit
wREC.Fields("結果") = "○"
wREC.Update
Else
wREC.Edit
wREC.Fields("結果") = "×"
wREC.Update
End If
wREC.MoveNext '次レコードへ
Loop
これを実行すると、途中で「レコードが大きすぎます。」というエラーが
発生します。SELECT文を*でなく、項目を絞ったのですが相変わらずです。
レコード数は1800行ほどです。
これはどういった対処が必要でしょうか?
No.4ベストアンサー
- 回答日時:
#1です。
エラーの起こるレコードの他のフィールドの値を確認してみる事をお勧めします。
この回答への補足
その後、そのレコードの他の項目の長さを削ってやってみたところ、
うまくいきました。
どうも、1レコードは半角2000文字以内という制限があるようです。
今までご回答いただいた方々、ありがとうございました。
同じテーブルの他の項目も一応見てみましたが、特に変わったところはないように思いました。SELECT文で項目を絞っても出るのですが、そのテーブルの全項目も関係してくるのでしょうか。
No.5
- 回答日時:
ロックの問題だと思いますよ。
1度にロックできるレコードの件数は1000件程度です。
レジストリで変更できるはずですが。
例えば、10000件のテーブルを開いて
全レコードを選択して、DELキーを押しても
1度に削除できません。
No.3
- 回答日時:
なぜでしょうね?
mdbを作り直してみると、エラーが起こらなくなったりすることもありますが、毎回同じところで起こるのは、もっとはっきりした原因がありそうですね。
あまり、参考にならなくてすみません。
参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=338749
No.2
- 回答日時:
エラーはどの行で出ているのでしょうか?
直接的な回答ではありませんが、1件ずつ更新するよりUpdate文(更新クエリ)を使ったほうが早いし、簡単ですよ。
この回答への補足
SQLで、
UPDATE テーブル名 SET 結果="○" WHERE 条件式 ;
というのを作って実行してみましたが、なんと同じエラーが
発生しました。(レコードが大きすぎます。)
う~ん、なぜだろう?
ご回答ありがとうございます。
エラーは「wREC.Fields("結果") = "○"」の行で発生します。
SQLのUPDATE文の方が確かに簡単そうなので試してみます。
でも、どうもすっきりしないので、原因を知りたいのですが・・。
No.1
- 回答日時:
Access2003では緩和されているのかもしれませんが、
テキストフィールドの合計が2000バイトを越えていませんか?
また、Access2000以降ではテキストフィールドの大きさの指定がバイト数から文字数へと変更されたため、
ユーザー側での容量計算に間違いが起こる恐れがあります。
文字型フィールドに設定できる文字数は255文字となっていますが、これはあくまで文字数であってバイト数ではありません。従って最大510バイトを占めてしまいます。
文字型フィールドの文字数の既定値は255ですので、キチンと必要文字数を設定せずに使用していませんか?
ご回答ありがとうございます。
どのレコードで発生するかを絞り込んで行ったところ、ある特定の
レコードで発生することがわかりました。ところがそのレコードは
上の例では条件を満たすので○を入れようとするのですが、その
代入文で表題のエラーが発生します。○を入れる前はNULLでしたが、
それがまずいのでしょうか?○を入れる前がNULLだったケースは
このレコードが最初です。(それまでは何らかの値が入っていました。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Oracle SQL update方法 2 2022/06/22 14:07
- Oracle 列1と列2の関係性で列3の条件に一致するレコードを抽出したい 1 2022/04/13 07:46
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
このQ&Aを見た人はこんなQ&Aも見ています
-
賃貸で可能な古民家風レトロな部屋作りのコツ!改めて知る畳の高い機能性と魅力も紹介
畳の部屋を雰囲気のよい部屋に仕上げたい!賃貸住宅でもできる古民家風のレトロな部屋作りのコツを伺った。
-
ACCESSで400以上のフィールドがある場合の作成方法‥
その他(データベース)
-
Accessのフィールド数が255しかない=業務では使えない?
PowerPoint(パワーポイント)
-
「RunSQL」と「Execute」の違い
Access(アクセス)
-
-
4
アクセス メモ型 255文字以上入れられない
Access(アクセス)
-
5
Accessでデータシートに同じデータがいくつもでてしまいます。
その他(データベース)
-
6
アクセスデータベースのUnicode圧縮について
その他(データベース)
-
7
ACCESS 重複データを1つだけ表示したい(初心者です)
Access(アクセス)
-
8
Accessで、1つの項目に複数の置換えを1度でするには?
Access(アクセス)
-
9
Access→Excelへエクスポートすると日付の表示形式が変化する
Excel(エクセル)
-
10
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
11
作成したレコードセットのCSV出力の方法
その他(データベース)
-
12
ACCSESS2013VBA フォームのレコードソースを変更する
その他(データベース)
-
13
Access レポート印刷するときに1ページに収める方法
Access(アクセス)
-
14
ACCESSでデータ読み取り専用を解除する方法
その他(データベース)
-
15
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
16
エクセルからアクセスにインポートする際のエラーについて
Access(アクセス)
-
17
リンクテーブルを CopyObject するとリンク情報がコピーされる
その他(データベース)
-
18
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
19
Access 各レコードの中での最大フィールドを抽出したい
Access(アクセス)
-
20
このISAMでは、リンクテーブル・・
その他(データベース)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスでレポートの1印刷内...
-
ADO VBA 実行時エラー3021
-
サブレンジ分割されたNDB(富士...
-
ファイル書込みで一行もしくは...
-
JSPのNULLレコード表示について...
-
DataGridViewの内容をDBに反映...
-
ワードの差込印刷で教えて下さ...
-
DataGridViewの、選択されてい...
-
レコードセット(ADO.Recordset)...
-
データセットのレコード更新が...
-
レコード長を数えてくれる関数
-
レコードが存在しなかった場合
-
カレントレコードが無い事を判...
-
どのようなレコード構成でもfil...
-
サブフォームに新規レコードを...
-
DetailsViewで挿入後、挿入した...
-
Accessデータシートビューの行...
-
Delphi データベースコンポー...
-
差し込み印刷のレコード数について
-
Access のフォームで新しい行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ADO VBA 実行時エラー3021
-
ファイル書込みで一行もしくは...
-
JSPのNULLレコード表示について...
-
レコードが存在しなかった場合
-
DataGridViewの、選択されてい...
-
カレントレコードが無い事を判...
-
DataGridViewの内容をDBに反映...
-
Access を×ボタンで閉じ...
-
アクセスでレポートの1印刷内...
-
ヘッダレコードとトレーラレコ...
-
Access でレコードセレクタが押...
-
レコードセット(ADO.Recordset)...
-
ACCESSで大量の更新を行うと「...
-
差し込み印刷のレコード数について
-
DataGridViewにてセル以外をク...
-
サブレンジ分割されたNDB(富士...
-
Line Inputで文字化け(助けて...
-
固有レコード識別子の選択とは
-
[VBA] ADOの Clone と AddNew
-
ワードの差込印刷で教えて下さ...
おすすめ情報