dポイントプレゼントキャンペーン実施中!

お世話になっております。
ひとつご教授ください。
それは、条件によって参照するテーブルのデータを見にいかせる方法です。
マスターテーブルと、材料費テーブル、人件費テーブルとあって、これらのテーブルの構造は以下のようになっています。
<マスターテーブル>
Cost_ID
G_ID
<材料費テーブル>
Cost_ID(規定値=1)
G_ID(材料の項目によって1~番号を振ってある)
M_Name(G_IDに対応する材料費名)
<人件費テーブル>
Cost_ID(規定値=2)
G_ID(人件の項目によって1~番号を振ってある)
P_Name(G_IDに対応する人件費名)

という構造にしており、マスターテーブルには、材料費ならCost_IDには「1」が代入され、それに対応する項目の番号をデータとして格納していっています。(人件費についても同様)

そこで、レポートにおいて、Cost_IDをグループ化させて、出力しているのですが、材料費・人件費の項目ID(G_ID)を、Cost_IDを元に区別させ、それに対応する項目ID(G_ID)を元に項目名を表示させようと思っています。
例えば、SelectCaseを使えばいいのかなと予想はつくのでしょうが、可能なのでしょうか?可能な場合どのようにしたらよろしいのでしょうか?よろしくお願いいたします。

A 回答 (3件)

こんにちは。

maruru01です。

レポートのレコードソースはマスタテーブルにして、詳細のFormatイベントに記述する方法。
(エラートラップはしてない。)


Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)

  Select Case Me!txtCostID
    Case 1
      Me!txtName = DLookup("M_Name", "材料費テーブル", "G_ID = " & CLng(Me!txtGID))
    Case 1
      Me!txtName = DLookup("P_Name", "人件費テーブル", "G_ID = " & CLng(Me!txtGID))
  End Select

End Sub


ところで、材料費テーブルと人件費テーブルにはCost_IDというフィールドがあるのでしょうか。
もしそうなら、すでにテーブルを別にしてあるのでそんなフィールドはいらないと思いますが。
(2つのテーブルを1つにするなら、費用区分として必要ですが。)

この回答への補足

人件費テーブルと、材料費テーブルにはそれぞれCost_IDというフィールドを設けています。
人件費テーブルには規定値を2とし、材料費テーブルには、規定値1を入れて、マスターテーブルにこれはどの費用かを認識させるためにです。
G_IDと、M_IDは、人件費・材料費の中のさらに細かい項目と言う意味でフィールドを設けてます。
さっそく、頂いたソースをもとに組んでみます。
また、不明な点がでましたらよろしくお願いいたします。

補足日時:2002/09/11 13:00
    • good
    • 0

No.2の修正です。



Caseの値が両方とも1になっているので、下の方を2にしておいて下さい。

この回答への補足

何度か試してみたのですが、うまく行きません 汗
構造としては、Cost_IDをヘッダーとして、その詳細として、G_IDを設置しています。Cost_IDをグループとしているので右のような構造にしているのですが、教えていただいたソースでも大丈夫なのでしょうか?
エラーの内容としては、「オブジェクトに値を代入できません」というエラーがでます。
何度もすみませんが、よろしくお願いいたします。

補足日時:2002/09/12 09:50
    • good
    • 0
この回答へのお礼

すみません。
できました。
簡単なミスでして、とても恥ずかしいです 汗
これからも、何かありましたらよろしくお願いいたします。

お礼日時:2002/09/12 10:55

レポートのレコードソースを



select TZ.* from マスターテーブル TMA inner join 材料費テーブル TZ on TMA.Cost_ID=TZ.Cost_ID and TMA.G_ID=TZ.G_ID
union
select TJ.* from マスターテーブル TMA inner join 人件費テーブル TJ on TMA.Cost_ID=TJ.Cost_ID and TMA.G_ID=TJ.G_ID;

――みたいなのにして、出力するとか。
クエリの列名をそろえたり、レポートの詳細部のformat時に、連結フィールドの可視属性を切り替えたり、などを行う必要があるかも。
    • good
    • 0

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