- ベストアンサー
Access 2010 クエリの置換について
- Access初心者がクエリの置換について質問しています。
- 現在のテーブルのデータを変更せずに、特定の科目コードを置き換えたいとのことです。
- しかし、テーブルのデータが正しく置き換えられず、上手く処理されない問題が発生しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>こうなる原因は他に考えられますでしょうか? 原因は他にではなく、最初の書き込みでも書いたように 評価するデータの値の桁数が統一されていないからなんです 書式の所に"000"とやっても格納されているデータは入力した桁数のデータが格納されているので、書式で"000"とする事で 表示では 011 と表示されていても 格納されているデータは 11のままなのです よってそれぞれ科目コードをformat関数を使って 3桁の テキストデータにせよと書き込みました このテキストデータにするという所が肝心で この関数を通してやる事で 11 という値は 011という値として扱われるようになります 質問を丸投げで解決しようとせず、ご自分でもきちんと模索される方のようなので、具体的な式の記述もしておきます >科目区分: Replace (Replace (Replace([科目名コード],"11","教養"),"21","専門"),"221","実技") 上記のクエリでは無く 科目区分: Replace(Replace(Replace(Format([科目コード],"000"),"011","教養"),"021","専門"),"221","実技") というクエリを実行すればきちんと科目コードに対応した希望通りの表記になるでしょ? ただし、上記のクエリでは 置換希望されている全ての科目コードを網羅していませんし、置換させなくても良いコードの場合の対応がされていません Replace対象とならないデータは 式が入っている部分にそのまま科目コードの番号が入りますので、本当の意味での希望のデータを表示させるには、IIF関数なども併用してクエリ作成する必要があるかもしれませんね
その他の回答 (1)
- tamu1129
- ベストアンサー率58% (1294/2222)
ええ可能ですよ どうしてこうなるのかって事考えればわかりますよね 科目コードの桁数が入力されているデータによって違っているからです このような場合 format関数使って桁数を揃えてしまうんです 科目コードをformat関数使って テキスト3桁のデータに変換させ、その値で科目名を表示させればいい訳です 国語の科目コードは 011 古文は 021 として3桁のデータで扱えば希望されている結果になります
お礼
さっそくのお返事ありがとうございます。 format関数がいまいちわからなかったので、教えていただいた、桁数をそろえるというアイディアをもとに、 テーブルをデザインビューで開き、書式のところに"000"とし、すべての桁を3桁にそろえました。 テーブル、クエリともに、 12 → 012 21 → 021 と3桁に表示の変更できたのですが、クエリを実行させても、結果は、12,21で表示されます。 もちろん、計算式も変更しました。 format関数を用いるやり方も現在調べておりますが、こうなる原因は他に考えられますでしょうか?
お礼
す、すばらしい・・・ 出来ました。アドバイスだけでなく、具体的な式も記述していただいたおかげで、月曜からの仕事にも少し余裕ができました。 誠にありがとうございます。感謝です。 文句無しのベストアンサーです。 また、何かありましたらその時はまたよろしくお願いします。