プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
現在、VB.NET2008上でアクティブレポートを使って帳票作成をしています。
仕事の都合上、アクティブレポートやSQLはぶっつけ本番状態で学んでいるのでかなりの初心者なのですが、ネット上で探しても探し方が悪かったのか、同じような記事を見つけられなかったので、質問させていただきます。

やりたい事は、コードだけが入っているテーブルと、そのコードとコードに対する名前が入っているテーブルを関連付けて、帳票に名前を載せるということなのですが、今、困っているのは、同じテーブルから、区分が違うデータを取りだすという事です。
説明がうまく出来ませんが・・・

テーブル1
----------------------
|区分|コード|名前 |
----------------------
|01 |001  |A会社|
|01 |002  |B会社|
|01 |003  |C会社|
|02 |01  |商品A|
|02 |02  |商品B|
|02 |03  |商品C|
----------------------

ここから、「B会社」の「商品C」を帳票に出そうとしています。
今までは1つのテーブルから1つの情報だけ取り出していたので
SELECT * FROM テーブル1 WHERE 区分='01' AND コード='指定のコード'
と言ったような書き方でやっていて、アクティブレポートのデータフィールド部分には「名前」と列名を設定させてきました。
今回このような場合、どういう風にSQLを書けばいいのか、アクティブレポートでどう設定すればいいのかまったく分からないので、ご指導をお願いしたいと思っています。

A 回答 (1件)

こんにちは



いまひとつ内容が理解できません

コードだけが入っているテーブル
(本当にコードだけのテーブルなんですか意味が?)

そのコードとコードに対する名前が入っているテーブル
(これがテーブル1と同じなんでしょうか'区分'もありますね)

テーブル1の商品CはなんでB会社のと判るんですか?

焦っておられるようですが
もう少し話を整理していただけると
もしかすると自己解決してしまうかもしれませんよ

この回答への補足

回答ありがとうございます。
落ち着いて見返してみると・・・本当に分かりにくいですね申し訳ありません。

>コードだけが入っているテーブルについて。
まずこの帳票では、登録された情報を表示するという作業をしており、その登録する時に、別のテーブルからコードを取ってきています(例えば、商品テーブルから商品コードを引っ張ってくるといった感じです)
登録時には、そのコードしかテーブルに保存しないので、コードだけが入っているテーブルが出来ます。

>そのコードとコードに対する名前が入っているテーブル
例えで説明させていただきますと、プレゼント用の包装で使うものを顧客ごとに帳票一覧で出すのが目的です。
表示させたいのは「顧客の名前」「包装紙」「箱」「リボン」の四つです。
普通は帳票一覧で出すテーブル(以下:帳票テーブル)の「顧客のコード」と「顧客の名前を出すテーブル(以下:顧客テーブル)」の「顧客コード」をLEFT JOINで関連付ければ、帳票のオブジェクトのデータフィールドに「顧客名」の入っている列名を設定すれば、出力時に名前が出てきていました。
しかし「包装紙」「箱」「リボン」は種類が少ない為に、1つのテーブルにまとめて入っています(以下:包装テーブル)。番号が同じでも区別が付くように「区分」という列名をつけてあります。
これもLEFT JOINで関連付けて・・・と思っていたのですが、同じテーブルから区分を指定して、コードを関連付けるのをどうすればいいか。と分からなくなっています。

↓帳票テーブル(番号は帳票番号)↓
------------------------------------
|番号|顧 客|包装紙|箱|リボン|
------------------------------------
|01 |001  |  01|02|  03|
|02 |002  |  03|01|  02|
|03 |003  |  01|03|  01|
------------------------------------
↓顧客テーブル↓
------------------
|コード|顧客名|
------------------
|001  | 田中|
|002  | 佐藤|
|003  | 大田|
------------------
↓包装テーブル↓
---------------------------
|区分|コード|包   装|
---------------------------
|01 |001  |無地   |
|01 |002  |チェック |
|01 |003  |ストライプ|
|02 |001  |丸    |
|02 |002  |三角   |
|02 |003  |四角   |
|03 |001  |赤    |
|03 |002  |青    |
|03 |003  |黄    |
---------------------------

なので「テーブル1の商品CはB会社のと判る」というか、帳票出力するためのテーブルに「B会社」と「商品C」のコードを登録したので、その名前を出したいのです。
テーブルを1つしか説明していなくて申し訳ありませんでした。

この説明で補足出来たでしょうか?
ちなみに、まだ分からなくて唸っています。
もし、解決法に心当たりがございましたらご教授よろしくお願いします。

補足日時:2009/02/25 14:27
    • good
    • 0
この回答へのお礼

先ほど、解決法を見つけました!
SQL文で解決しました。「AS」を使って名前を新たに定義すると言うものを知らなかったんですが、これで解決しました。

SELECT *,
  紙.包装 AS 紙_包装,
  入れ物.包装 AS 入れ物_箱,
  飾りリボン.包装 AS 装飾品
帳票テーブル
 LEFT JOIN 顧客テーブル
  ON 帳票テーブル.顧客 = 顧客テーブル.コード
 LEFT JOIN 包装テーブル AS 紙
  ON 帳票テーブル.包装紙 = 紙.コード
 AND 紙.区分 = '01'
 LEFT JOIN 包装テーブル AS 入れ物
  ON 帳票テーブル.箱 = 入れ物.コード
  AND 入れ物.区分 = '02'
 LEFT JOIN 包装テーブル AS 飾りリボン
ON 帳票テーブル.リボン = 飾りリボン.コード
AND 飾りリボン.区分 '03'

として、帳票で名前を表示するデータフィールドに
「紙_包装」や「装飾品」と設定すると、名前が表示されるようになりました。
おさがわせして申し訳ありませんでした。
でも、冷静になるようアドバイスをありがとうございました。

お礼日時:2009/02/25 20:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!