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も見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
ACCESSで400以上のフィールドがある場合の作成方法‥
その他(データベース)
-
Accessのフィールド数が255しかない=業務では使えない?
PowerPoint(パワーポイント)
-
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
-
4
【Access】クエリで抽出したデータをCSV形式でエクスポートできますか?
Access(アクセス)
-
5
アクセス メモ型 255文字以上入れられない
Access(アクセス)
-
6
ACCESSのSQLで、NULLかNULLでないかの判定
その他(データベース)
-
7
アクセスデータベースのUnicode圧縮について
その他(データベース)
-
8
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
9
AccessのDAO.ExecuteとDoCmd.RunSqlの違いについて
その他(データベース)
-
10
ACCESS クエリで、グループ化したものをカウントしたい
その他(データベース)
-
11
ACCESS 「パラメータの入力」を消したい!!
Access(アクセス)
-
12
Access インポート上限について
Access(アクセス)
-
13
Accessでテーブル名やクエリ名一覧の抜き出し
Access(アクセス)
-
14
「#エラー」の回避
Access(アクセス)
-
15
Accessの最大レコード数
Excel(エクセル)
-
16
Access VBAでクエリーのレコード件数を取得したいのですが
その他(データベース)
-
17
「RunSQL」と「Execute」の違い
Access(アクセス)
-
18
作成したレコードセットのCSV出力の方法
その他(データベース)
-
19
ACCESS クエリの抽出条件に他のテーブルの値を参照する方法
Access(アクセス)
-
20
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル書込みで一行もしくは...
-
ADO VBA 実行時エラー3021
-
レコードが存在しなかった場合
-
JSPのNULLレコード表示について...
-
桁数を指定してファイルデータ...
-
DataGridViewにてセル以外をク...
-
ワードの差込印刷で教えて下さ...
-
レコード長を数えてくれる関数
-
レコードセット(ADO.Recordset)...
-
Access を×ボタンで閉じ...
-
サブフォームに新規レコードを...
-
ADODBのRecordset.Deleteのエラ...
-
アクセスでレポートの1印刷内...
-
サブレンジ分割されたNDB(富士...
-
vb.netのdatatableのレコード削...
-
カレントレコードが無い事を判...
-
差し込み印刷のレコード数について
-
データベースへのinfoの入力
-
DataGridViewの内容をDBに反映...
-
[VBA] ADOの Clone と AddNew
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ADO VBA 実行時エラー3021
-
カレントレコードが無い事を判...
-
レコードが存在しなかった場合
-
ファイル書込みで一行もしくは...
-
DataGridViewの内容をDBに反映...
-
差し込み印刷のレコード数について
-
ワードの差込印刷で教えて下さ...
-
レコードセット(ADO.Recordset)...
-
アクセスでレポートの1印刷内...
-
JSPのNULLレコード表示について...
-
Access でレコードセレクタが押...
-
Line Inputで文字化け(助けて...
-
ヘッダレコードとトレーラレコ...
-
DataGridViewの、選択されてい...
-
サブフォームに新規レコードを...
-
ACCESSで大量の更新を行うと「...
-
[VBA] ADOの Clone と AddNew
-
DataGridViewにてセル以外をク...
-
サブレンジ分割されたNDB(富士...
-
VB6.0のIsNull関数に相当するもの
おすすめ情報