• ベストアンサー

ACCESSのテーブルで「&」を使いたい

ACCESSのテーブルで、複数のフィールドを&でつなげて、一つのフィールドを作りたいです。 例えば、 一つのテーブル内で「コード」と「品番」のフィールドがあり、 つなげた「コード品番」というフィールドを作りたいのです。 クエリでは規定値に [コード]&[品番]と入れて「コード品番」とフィールドを作ることができました。 それをテーブル内ではできないのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

ちょっと訂正 誤:2.「select *,[コード]&[品番] as コード品番 from 商品マスタ」と言うクエリを作り「商品マスタ」と言う名前で保存します。 正:2.「select *,[コード]&[品番] as コード品番 from 商品マスタ原本」と言うクエリを作り「商品マスタ」と言う名前で保存します。

その他の回答 (3)

回答No.3

>それをテーブル内ではできないのでしょうか? 出来ません。 これが出来ないから、代わりにクエリを使うのです。 クエリで select *,[コード]&[品番] as コード品番 from テーブル名 って言うクエリを作成し、それを「元のテーブルの代わり」にすれば、目的は達成する筈です。 例えば、 1.元のテーブルの名前を、ほんの少し変更します。例えば「商品マスタ」を「商品マスタ原本」にリネームします。 2.「select *,[コード]&[品番] as コード品番 from 商品マスタ」と言うクエリを作り「商品マスタ」と言う名前で保存します。 とすればOKです。 今まで「商品マスタのテーブル」を参照していた部分では、自動的に「商品マスタのクエリ」を参照するので、結果的に「コード品番というフィールドが増えたように見える」のです。 もし、新しくフィールドを増やしたテーブルを作り直すと、かなり「痛い目」を見ます。 例えば、他の回答の方法で「コード品番」のフィールドを追加しても、暫くの間は大丈夫です。 しかし、ある日ある時 コード「48301」品番「AC59」コード品番「48301AC58」単価「136」在庫「2077」 コード「48301」品番「AC58」コード品番「48301AC59」単価「136」在庫「1987」 という2つのレコードが出来ているのに気付いたとします。 「あるフィールドの値が変わったら、別のフィールドも値が変わる」という連動はしません。 ですから、だれかがウッカリで「コード+品番と、コード品番が食い違ったレコードを作ると、そのままになってしまいます。 ここで「あるプログラムは、コード品番フィールドを元にテーブルを更新し、別のあるプログラムは、コードと品番の2つのフィールドを元にテーブルを更新した」とします。 コード番号48301、品番AC58のデータを更新する時、コード品番を元に更新するプログラムがデータを更新した場合「在庫が2077になってる方」を更新します。 コード番号48301、品番AC58のデータを更新する時、コードと品番の2つを元に更新するプログラムがデータを更新した場合「在庫が1987になってる方」を更新します。 同じ商品のレコードを更新したつもりで、違う商品のレコードを更新する事になってしまいます。 逆に、違う商品のレコードを更新しているつもりで、同じ商品のレコードを更新する事になってしまいます。 このような「馬鹿げた事例」は「実際に起きた話」で、在庫棚卸の時に発覚し「半年分の在庫データが全部嘘。データベースを半年前のバックアップデータにロールバックして、半年分のデータを保管してある伝票を見ながら全て再入力」と言う地獄を見た人が居ます。 そういう目に遭いたくないなら、素直にクエリを使いましょう。 クエリを使えば「フィールドの内容が食い違っていて、どっちがどっちか判らない」なんて事は起きません。

  • 007MUKADE
  • ベストアンサー率41% (286/694)
回答No.2

デーベース(Accessも含む)で ”テーブル ”は データーを蓄積するものです。 各種のテーブルを組み合わせて クエリーで 見たい物(フィールド値)を使い データーを編集したり 入力したりします。 ですから テーブルでは ”& ”は使いません。 ・・・ここが Exell との大きな違いです。 データーベースの基本ですので・・・・ここはよく理解してないとなりません。 フィールドA と フィールドB の ”& ” を結語したものを 新しく フィールドC に書き込むのは クエリーで出来ますが DB上では何の意味もありません。 メモリーの諸費を増やすだけです。 見たいものを 見たい絞込み や結合で クエリーを組んで ホームやレポートに 使うので フィールドの結合は いつでも必要な時に 設定すればいいのです。

  • soicho
  • ベストアンサー率75% (6/8)
回答No.1

「コード」、「品番」というフィールドの他に両フィールド値を結合した値を「コード品番」というフィールドに収録するという解釈ですが。 クエリで実現するには。 ■テーブル作成クエリ 設問にあります選択クエリのデザイン画面で、メニューバーから「クエリ(Q)-「テーブル作成(K)」を選択すれば別名のテーブルが作成できます。 ■更新クエリ 予め「コード品名」というフィールドを作っておく。(この時、当該フィールドは空) 更新クエリのデザインシートで「コード品名」に対して、  レコード更新:[コード]&[品名] として実行する。 他にも追加クエリと使ったりする方法もありますが、更新クエリを使う方法が一番カンタンかと思います。