- ベストアンサー
Access2003複数フィールドの文字数合計
- Access2003で複数のフィールドに入力されている文字列の文字数をカウントし、そのレコードごとの合計を一度の更新クエリで算出する方法について教えてください。
- 現在は各フィールドの文字数を計算してから合計数を計算していますが、フィールドを作成せずに一度で合計数を計算する方法があれば教えてください。
- SQLが書けないので、関数式をフィールド欄に入力している状況です。関数だけではできない場合はSQLで教えていただけると助かります。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
[A] ~ [E] すべて Null の場合にも ゼロが表示されるおまじないを付加。 K: Len('' & [A] & [B] & [C] & [D] & [E])
その他の回答 (5)
- piroin654
- ベストアンサー率75% (692/917)
追加ですが。 Nz関数について。 >(データの入っていない場合は「null」となる) ということなので、フィールドにデータが無い場合には データが返されないのでNz関数を使って0を返します。 したがって、Nz関数を使っていない場合にはどこかに Nullのフィールドがあるとデータが合計がNullで 返ってきます。
お礼
piroin654様 たくさんのご回答をいただき、ありがとうございました。 教えていただいたSQL文を使ってみたところ、希望通りの結果がえられました。 また、Nz関数のご説明までいただき、とても分かりやすかったです。 大変勉強になりました(*^_^*)
- piroin654
- ベストアンサー率75% (692/917)
#1のテーブル名がおかしくなっていました。 UPDATE テーブル名 SET テーブル名.合計 = Len(Nz([A]))+Len(Nz([B]))+Len(Nz([C]))+Len(Nz([D]))+Len(Nz([E]));
- mshr1962
- ベストアンサー率39% (7417/18945)
単純だと K:LEN([A])+LEN([B])+LEN([C])+LEN([D])+LEN([E]) 先に連結すれば、この通り K:LEN([A]&[B]&[C]&[D]&[E])
お礼
早々のご回答をくださり ありがとうございました。 希望通りの結果を得ることができました。 LEN関数を「&」でつなぐと、式がスッキリして良いですね。 大変勉強になりました(*^_^*)
- piroin654
- ベストアンサー率75% (692/917)
追記: テーブルの合計のフィールドは数値型です。
- piroin654
- ベストアンサー率75% (692/917)
テーブルに合計というフィールドがあるものとします。 以下の更新クエリで合計欄にデータが格納されます。 UPDATE Tdata SET テーブル名.合計 = Len(Nz([A]))+Len(Nz([B]))+Len(Nz([C]))+Len(Nz([D]))+Len(Nz([E]));
お礼
早々のご回答をくださり ありがとうございました。 希望通りの結果を得ることができました。 ゼロが表示される「おまじない」を試したところ、 本当に「0」が表示され感動しました! 「"」を加えるのですね。大変勉強になりました(*^_^*)