質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

1回答

3157閲覧

accessで指定されたキーワードが一つでも含まれているレコードを変換したい

tomokappa07

総合スコア8

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2017/04/28 11:22

###前提・実現したいこと

ACCESSのファイルを引き継ぎなく渡されて
更新時に大変困っているACCESS初心者です。

A列 B列 C列 E列
イチゴ にんじん バナナ 果物含む
リンゴ ネギ キャベツ 果物含む
トマト にんじん ネギ 果物無し
みかん バナナ イチゴ 果物含む

上記のような表を作りたく相談させていただきました。
A列、B列、C列に果物の名前が入っています
E列に 果物が入っているか入っていないかACCESSの機能で展開できれば助かります。
キーワード(イチゴ、バナナ リンゴ みかん)で引っ掛けられるのではないのかな?と
よろしくお願いします。

###発生している問題・エラーメッセージ

###該当のソースコード
EXCELではできました。
=IF(OR(COUNTIF(A1:C1,"イチゴ")<>0,COUNTIF(A1:C1,"バナナ")果物含む","果物無し")

###試したこと

###補足情報(言語/FW/ツール等のバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Accessには、A列、B列、C列というような概念はないので、
下記のようなテーブルがあるとします。

素材テーブル

フィールド名データ型
テキスト型
テキスト型
テキスト型

このテーブルからクエリを作成して、
デザインビューでフィールドにA, B, C を追加して、
さらにフィールド欄に下記の式を設定します。

E: IIf([A] In ("イチゴ","バナナ","リンゴ","みかん") Or [B] In ("イチゴ","バナナ","リンゴ","みかん") Or [C] In ("イチゴ","バナナ","リンゴ","みかん"),"果物含む","果物無し")

SQLビューにSQLを記述するなら下記。

SQL

1SELECT 2 素材テーブル.*, 3 IIf([A] In ("イチゴ","バナナ","リンゴ","みかん") Or [B] In ("イチゴ","バナナ","リンゴ","みかん") Or [C] In ("イチゴ","バナナ","リンゴ","みかん"),"果物含む","果物無し") AS E 4FROM 素材テーブル;

ただ、データベースとしてはダメダメなテーブル設計です。このままでは、データベースとしては使い物に
なりませんので、今後のことを考えると「テーブルの正規化」をすることをお勧めします。

追記

「イチゴジュース」や「甘いみかん」等は、フィールドの方に入っているということですよね。
それとも、キーワードの方が「イチゴジュース」や「甘いみかん」ということでしょうか。

とりあえず前者の場合、下記の式になります。

E: IIf([A] & ";" & [B] & ";" & [C] Like "*イチゴ*" OR [A] & ";" & [B] & ";" & [C] Like "*バナナ*" OR [A] & ";" & [B] & ";" & [C] Like "*リンゴ*" OR [A] & ";" & [B] & ";" & [C] Like "*みかん*","果物含む","果物無し")

投稿2017/04/28 12:26

編集2017/04/29 06:49
hatena19

総合スコア33699

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomokappa07

2017/04/29 05:34

ご回答ありがとうございます。 とても助かりました。 もしよろしければクエリの場合のフィールド欄で追加の質問させてください。 キーワードの「イチゴ バナナ リンゴ みかん」が少しあいまいな表現の場合はどのように記入すればよろしいでしょうか? 「イチゴジュース」や「甘いみかん」等、余計な文字が含まれているケースが出てきてしまいました。 likeと*を使えばいいのではないかと思うのですが、エラーメッセージが出てしまい私にはできませんでした。 お手数ですがよろしくお願いします。
hatena19

2017/04/29 06:22

回答の方に追記しました。
tomokappa07

2017/04/29 07:46

分かりやすい丁寧なご回答ありがとうございます。 知識を高めるためにもう一点質問させてください。 複数のフィールドではなく一つのフィールドに「あいまいな」ワードが入っていて それをBフィールドに判断ができるコメントを反映させることができますでしょうか? Aフィールド                Bフィールド イチゴジュース にんじん バナナ    果物含む 甘いリンゴ ネギ キャベツ       果物含む トマト にんじん ネギ         果物無し みかん バナナ イチゴ         果物含む 重ね重ね申し訳ございませんが よろしくお願いします。
hatena19

2017/04/29 07:50

追記の回答では、複数のフィールドを ; を区切り文字として [A] & ";" & [B] & ";" & [C] と結合したものを対称としてますが、ひとつのフィールドなら、上記の部分を、 [A] と変更するだけです。
tomokappa07

2017/04/29 10:40

解決しました。 ありがとうございました。 私も質問に答えれるよう勉強します!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問