ACCESS初心者です。
教えてください。

「支払」テーブル、「担当表」テーブルがあります。
「支払」テーブルには、
ID(主キー)、サービス名、金額、支払日
「担当表」テーブルには、
ID(主キー)、サービス名、担当者
という項目があります。
この二つのテーブルは「サービス名」で連結してます。

今「支払」テーブルの入力フォームを作っていて、サービス名をプルダウンで選択出来るようにしたのですが、出来れば選択したら自動的に該当する担当者の名前を表示したいと思っています。
担当者名を表示するためのテキストボックスを作成し、プロパティでいろいろいじってみましたがどうもうまく行きません。

すごく基本的な質問で恐縮ですが、どうか助けてください。
宜しくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

せっかく日付のデータがあるのに、わざわざ月別の集計が必要だからといって月だけのフィールドを追加するのも、あんまりスマートなやり方ではありません。



データベースの目的の一つは、同じ種類の情報を二重管理しない事もあります。
日付から、月だけを抽出するのが自然な方法でしょう。

ですが、SQL云々を悩むよりも、まずウィザードをぐりぐりいじって見てください。比較的単純な月ごとの合計値を出すクエリは10秒で出来ますよ。

クロス集計のクエリ自体は、非常に簡単にできますし、見てみればイメージもわきやすいでしょう。

それでデータが壊れるわけではないし、クエリなんて作っては消しての繰り返しで問題ないです。
もちろん、テーブルを消してしまってはまずいですけど(笑)
いろいろ試しているうちに、逆にこういうまとめ方もできるのかといった発見もあるかもしれませんよ。
    • good
    • 0
この回答へのお礼

いつも丁寧なご回答ありがとうございます。

おっしゃる通り、ウィザードで簡単に集計できましたし、イメージも沸きました。
あとクエリのSQLも見てみましたが「これがSQLか!」って感じでした(以前シスアドの勉強をしていた時に出てまして、その時は全くピンと来なかったんですが…(苦笑))。
まだまだ先は長そうですが、これで何とかなりそうです。

初めてACCESSに触れ、データベース構築方法のとっかかりもなく、途方にくれていたところを助けていただいて感謝しております。

お忙しいところ、初心者にお付き合いいただいて有難うございました。
またつまづいてしまったら、お助けくださいませ。
有難うございました。

お礼日時:2002/03/25 21:16

月次の集計自体は、クエリを使えば、都度支払台帳から出せるので、テーブルを作るよりも、いいと思います。



案件別のものであれば、抽出条件として日付とサービスIDに条件を付加すれば、その部分だけ取り出す事は可能です。
SQLで、WHEREを使う部分ですね。

集計が欲しい場合は、クロス集計のクエリを作成します。
SQL的には、GROUP BY句やPIVOTを使うような内容になります。
ある値の月次の集計等が、簡単に出せますし、やはり抽出条件を指定する事で、サービスと月の指定もできます。

いずれも、ウィザードで比較的簡単にたたき台が作れますし、作った後で細かくSQLを修正する事もできます。
ウィザードは、あんまり融通が利きませんので(笑)

ただ、担当者については月中で交代とか、サービス毎に1人という状態が、必ず成り立つのでなければ、入れない方がいいでしょう。

ここでテーブルを分けてしまうと、リレーショナルデータベースの一番便利なところを使わずにいる事になりますよ。
    • good
    • 0
この回答へのお礼

何度もご丁寧にご回答ありがとうございます!

まだ「SQL」がどのようなものであるかはちょっとわかりませんが(EXCELは使えるのでPIVOT等は何となく想像がつきますが)、とりあえずテーブルを分けてしまうことが大きな間違いであることは、よくわかりました。

とすると、確認ですが、テーブルを分けずに月毎の集計を出すには、「何月の」サービスなのかという項目が追加で必要になりますよね?

例えば、今まで支払台帳を
ID、サービスID、担当者ID、請求額、支払日
としていましたが、
ID、サービスID、サービス提供月、担当者ID、請求額、支払日
として、基本テーブルを組み直せばいい、ということです?
そこでSQL(これから勉強します)を使って、サービス提供月を抽出条件に、サービス名を縦軸、担当者名、請求額、支払日を横軸に置きなおして表示をすると、サービス提供月毎の支払状況を一覧で確認できるクエリが完成!ってことですよね。

何度も初心者質問ですみません。。。

お礼日時:2002/03/25 18:19

基本的にデータベースのマスタと呼ばれるようなテーブルは、ID等のデータを一意に指定出来るようなコードを持って表現するのが、望ましいです。



今回の場合も、担当者とサービスが同じテーブルで無ければ、IDで表現する事に何も問題は無いのです。
先の回答は、データ構造をあまり大きく変更しないように回答したのですが、多分以下のようなデータ構造が本来望ましいのではと思います。

支払台帳
ID、サービスID、担当者ID、請求額、支払日

サービスマスタ
ID、サービス名、基本料金、サービス内容、備考

担当者マスタ
ID、氏名、備考

まあ、細かいフィールドについては、まだまだ足りない部分もあるでしょうが、私ならこのようなデータ構造にすると思います。
どことどこがリレーションするかは分かりますよね?
これなら、過去のデータが矛盾する事無く、担当者やサービス内容についても、独立して管理出来ます。
    • good
    • 0
この回答へのお礼

たびたびご回答ありがとうございます。

自分で頭をひねったところ、ご回答のようなテーブルを作成するに至りました(「備考」は入れてなかったですけど、これいただきです(笑))。
リレーションはもちろん「支払台帳_サービスID」と「サービスマスタ_ID」、「支払台帳_担当者ID」と「担当者マスタ_ID」ですよね?
これをもとに、
サービス名、サービス内容、氏名(担当者名)、請求額、支払日でクエリを作成し、フォームを作ったところ、思い通りの表を作成することができました。
ありがとうございました。

ちなみに質問の内容が変わり、かつ何度も質問して申しわけありませんが、再度質問させてください。
最終的にこの支払管理を月次締めにしていこうと考えています。
例えば4月が役務提供月のサービスの支払状況一覧、5月が役務提供月のサービスの支払状況一覧、という形です。
私の考えとしては、支払台帳をベースにして、4月支払台帳、5月支払台帳、といったものを用意してやっていこうと思い、テーブルを作成しております。
しかし、考え方として、サービスID毎をベースにしてテーブルをつくる方法もあると思います。
例)
Aサービス
4月、(4月の)料金、(4月の)担当者、(4月分の)支払日
5月、(5月の)料金、(5月の)担当者、(5月分の)支払日
・・・
Bサービス
4月、(4月の)料金、(4月の)担当者、(4月分の)支払日
5月、(5月の)料金、(5月の)担当者、(5月分の)支払日
・・・
提供されるサービスのラインナップは、月ごとに大きな変化はありません。
もしかすると後者の組み方のほうが賢い、ということはありますでしょうか?

やや頭がこんがらがってます。
何卒ご教授ください。
宜しくお願い致します。

お礼日時:2002/03/25 12:51

恐らく今は入力フォームに対して支払いテーブルを渡しているのでは無いかと思いますが、これを自分で結合クエリを作成して、そのクエリを渡せば良いかと思います。



ウィザードで作れますので、すでにリレーションの設定がされているのであれば、簡単に作成できます。

作成したクエリは、あたかもテーブルであるかのように扱えますので(もちろん全く同じではありませんけど)このような事ができます。

どのような仕様が欲しいのか、具体的には分からないので断言はさけますが、このような使い方をするならば担当表テーブルにはIDは不要かと思います。

私であれば支払いテーブルにサービス名の変わりにサービスIDというフィールドを作成して、それとリレーションさせます。
なぜなら、サービス名は変わるかもしれないからです。
また、担当者名というフィールドも別途支払テーブルに追加します。
そして、入力フォームから支払の記録を入れる際に、サービスIDから担当者名を引っ張ってきて、担当者名を直接そこにいれます。
これは、同じサービスに対して永遠に担当者が変わらないとは限らないからです。
支払は、一度支払ったらその事実が変わる事は無く、また担当者はその時点の担当者の名前が入っていなければなりません。
途中で担当者が変わって、その後に見てみたら、自分では心当たりの無い案件に、担当者として自分の名前が入っているような事態は、避けた方が良いでしょう。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。

出したい要素が別のテーブルに存在する場合は、結合してクエリを作成し、そのクエリを元に入力フォームを作成する、という理解でよろしいでしょうか?

結合クエリは何となくできましたが、なかなか思う通りの形になりません。
しかし地道に勉強して頑張っていこうと思います。

あと薄々気づいていたのですが、ご指摘の通り、そもそもテーブルの組み方に問題がありました。アドバイス通りに作り直してみようと思います。
尚、「担当者名というフィールドも別途支払テーブルに追加します」とありますが、「担当者ID」より「担当者名」のほうがよろしいのでしょうか?
担当者表というテーブルも別途作成し、基本このテーブルは削除なしというルールで担当者もIDで表現した方がより管理しやすいのかな?なんて思いました。意味ないですかね…?

お礼日時:2002/03/24 02:47

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qテーブル入れ子にしたらNNではダメ?

赤い背景画像を使ったHTMLにテーブルを3個入れ子で載せました。
下のテーブルのセルに白色、中のテーブルのセル色にグレー、一番上のテーブルのセルに白色を指定しました。

そこへラジオボタンをつけたのですが、本来、枠がない丸いボタンのところに赤の枠ができてしまいます。
IEでは問題ないのですが、NN4.7で確認したらこうなっていました。

デザインを変えずに回避する方法があったら教えてください。
また、NN6.*~だったらOKということはありますか?

Aベストアンサー

こんにちは!

<input type="radio" name="address" value="menber" checked style="background-color:#FFFFFF;">

と style="background-color:#FFFFFF;" を追加してください。

NN6は分かりませんが4.7と7で確認しました。

Mac 側は確認していません・・。

QExcel→Accessテーブル インポート後の主キーについて

Excelで作成したリストを、Accessテーブルへ追加インポートしたとき、
インポートはできますが、主キーの数値が大きく桁違いな数字が現れてしまいます。

例えば、Accessテーブルのレコード数が10957件あります。
主キーの一番最後の数字は10980番です。(途中いくつか削除しました)

Excelのレコード数は100件あり、これを追加インポートしますが、
    10979
    10980
 85200513
 85200514
 85200515
 85200516
    ・
    ・
    ・
というように、10980以下の主キーの数値が、まったく桁違いになってしまいます。
どうしてこのようなことになってしまうのでしょうか?
ソフトはExcel2002、Access2002です。

Aベストアンサー

えーっと、なんだか問題点が曖昧になってきましたね・・・
1.インポートすると主キーが桁違いになる。
2.インポートすると年月フィールドがエラーになる。

1は通貨型かテキスト型にしたことで解決し、未解決は2だけでいいんでしょうか?

2004/04/01→2004年4月(yyyy"年"m"月")
2004→2004年(####"年")

これらはそれぞれ、かっこ内の書式設定によってこのようにセルに表示されているだけであり、セルの値そのものは、数式バーに表示してある通りです。
(ただし、2004/04/01の方は、厳密に言えば本当はシリアル値といって、1900年1月1日を1とした、38078という数字が実態ですので、このセルを標準表示すると38078となったのはご承知の通りです。)

そんな訳で、ACCESSには、数式バーに表示される値でインポートされるみたいですね・・・僕もそれ以上はちょっと今はわかりません(>_<)

EXCELでの書式設定通りにインポートする方法は、調べれば多分あると思いますので、まずはACCESSのヘルプが、下記のMS技術情報などを見てみてください。
http://support.microsoft.com/default.aspx?scid=fh;JA;KBHOWTO

頑張ってくださいヽ(^。^)ノ

参考URL:http://support.microsoft.com/default.aspx?scid=fh;JA;KBHOWTO

えーっと、なんだか問題点が曖昧になってきましたね・・・
1.インポートすると主キーが桁違いになる。
2.インポートすると年月フィールドがエラーになる。

1は通貨型かテキスト型にしたことで解決し、未解決は2だけでいいんでしょうか?

2004/04/01→2004年4月(yyyy"年"m"月")
2004→2004年(####"年")

これらはそれぞれ、かっこ内の書式設定によってこのようにセルに表示されているだけであり、セルの値そのものは、数式バーに表示してある通りです。
(ただし、2004/04/01の方は、厳密に言...続きを読む

QNN4.7 テーブルの背景を表示出来ますか?

至急教えて欲しいのですが、ネットスケープ4.7でhtmlを確認中ですが。
テーブルへ背景を埋め込むと表示されないようです。
この現象は、NN4.7では無理なのでしょうか?
どなたか助けてくださいm(_ _)m

Aベストアンサー

NN4.7では <table bgcolor="~"> や <table background="~"> は正式にサポートされています。
(Win. Mac. 共にNN4から正式サポート)

但し、NNの仕様でテーブルの各セル内が背景以外何もない場合は背景が表示されません。

おそらく、背景が表示されていない部分は、文字も画像も入れていないのではありませんか?

そのときには、各空白のセルに相当するソース部位に「&nbsp;」(&は実際には半角です)を記述しておきます。
「&nbsp;」(&は実際には半角です)は、空白を表す特殊な記号で、ブラウザには表示されません。

Q主キーはオートナンバー型のIDを使った方が良いのか

主キーはオートナンバー型のIDを使った方が良いのか、
独自の主キーを作った方がいいのか?

今は
テーブル1
-------------------
IDフィールド(オートナンバー型) 主キー
1
2
3
-------------------
伝票番号フィールド
A001
A001
A002
-------------------
部署フィールド
営業部
システム部
営業部
-------------------
金額フィールド
100
200
300
-------------------
という状態ですが、
新たに主キーフィールドを作り
更新クエリで
UPDATE テーブル1 SET テーブル1.主キー = [テーブル1]![伝票番号] & [テーブル1]![部署] & [テーブル1]![金額];
をして、主キーを独自に作った方がいいのか。

アクセスを作るにおいて、どちらの方が良いのでしょうか?
テーブルのレコードは削除したりする事もあるので、オートナンバー型だと空きができてしまいます。

レコードに空きができないデータベースなら、オートナンバー型、
空きができるデータベースなら、独自に作った主キーにしたほうがいいのでしょうか?

主キーはオートナンバー型のIDを使った方が良いのか、
独自の主キーを作った方がいいのか?

今は
テーブル1
-------------------
IDフィールド(オートナンバー型) 主キー
1
2
3
-------------------
伝票番号フィールド
A001
A001
A002
-------------------
部署フィールド
営業部
システム部
営業部
-------------------
金額フィールド
100
200
300
-------------------
という状態ですが、
新たに主キーフィールドを作り
更新クエリで
UPDATE テーブル1 SET テーブル1.主キー = [テーブル1]![伝票番号] & ...続きを読む

Aベストアンサー

よい質問です。

この場合は伝票No.を主キーにすると
番号を間違えて入力してレコードが出来てしまえば
主キーの変更はできません。
削除して新規に入力することになります。

主キーは数値、文字列も可能ですがオートナンバー型を勧めます。
ただしフィールド名はIDのままにせずに
伝票IDとユニークなものに変えておきます。

オートナンバーにすると主キーはACCESS側にお任せになるので、
フォーム、レポート上では省略出来るので、番号に空きが出来ても問題ないでしょう

一般的に主キーとは別に伝票No.、商品コード、取引先コードを用意しますが
これはフォーム、レポートでのレコードの抽出条件、表示(リスト)の順番のためです。

QIE6/NN7.1のテーブルのheight="100%"

テーブルの高さの指定 height="100%" なんですが、
IE6とNN7.1で100%で表示されません。

下記の記述に間違いはありますでしょうか?
もしかしたら初歩的な問題なんでしょうか?


ちなみにIE5.5 MacのIE5.2では表示されました。
困っています。
宜しくお願いいたします。

ーーーーーーーーーーーーーー
<table border="0" cellspacing="0" cellpadding="0" height="100%">
<tr>
<td valign="top">上</td>
</tr>
<tr>
<td valign="bottom">下</td>
</tr>
</table>
ーーーーーーーーーーーーー

Aベストアンサー

HTML4.01の規格(仕様)では、tableに使えるアトリビュートは、summary、align、widthです。
heightが有効になるほうが特殊だと思ったほうがよいとおもいます

QACCESSにインデックス(主キー)のあるテーブルを作りたい

元データがEXCELでそのデータを利用し、
ACCESS内にマスター用(品目マスタ)のテーブルを作り、
1番目の部品コードというフィールドを
インデックス/主キー(重複しない)にして
2番目、3番目の項目の値をえられるように
しようとしていますが、EXCELからの元データを
インポートしようとしても部品コードフィールドが
インデックス/主キーに設定できません。
EXCEL内で部品コードが重複しないように削った
つもりです。
部品コードが重複していなくても、いけない文字列
があってインデックス/主キーにできないのでしょうか?

※詳細
以下のようなテーブルをつくり、
284-A80と入力したら製品部品名称の「基板」と
いう値や製品分類の「LED」という値を得ようと
している。


部品コード    製品部品名称   製品分類
284-A80      基板        LED
7841P20      ヨーク       ブザー
CL-270-CD     LED         LED
HSDL-3201#001   センサー     センサー
……約17000レコードぐらい

ただし、部品コードの値がもっとごちゃごちゃして
いて、「*」、「スペース」「#」「_」「/」などや
カタカナ文字のものも含まれていたりします。

なぜ、上記の部品コードをインデックス/主キーとして
設定をおこなったテーブルとしてインポート
できないのですか?

元データがEXCELでそのデータを利用し、
ACCESS内にマスター用(品目マスタ)のテーブルを作り、
1番目の部品コードというフィールドを
インデックス/主キー(重複しない)にして
2番目、3番目の項目の値をえられるように
しようとしていますが、EXCELからの元データを
インポートしようとしても部品コードフィールドが
インデックス/主キーに設定できません。
EXCEL内で部品コードが重複しないように削った
つもりです。
部品コードが重複していなくても、いけない文字列
があってインデックス/主キーにで...続きを読む

Aベストアンサー

一度、主キーを設定せずにテーブルにインポートをしてみて、重複クエリーウィザードで「部品コード」の重複を調べてみてはいかがですか?
あと、もしかしたらデータの中にブランクが存在すれば同じくそのフィールドは主キーとしては、設定できません。
excelで最終データの行以下を一度削除してみては・・・。
お試し下さい。

QNNでテーブルの枠線(BORDER)の設定は?

NN6です。
BORDERを使用したいのですが、NNではうまくいきません。
<TABLE>タグにあてはめるとだめだときいたので、TDにあてはめようとしているのですが…。

HEAD内で
TDにBORDER-STYLE="SOLID; BORDER-COLOR:GRAY;"
としました。これをTD CLASS=***
としているのですが、一向に線は出てきません。
どのように直せばいいのでしょうか?

Aベストアンサー

とりあえずダブルクォーテーションは不要なので削除しましょう。

BORDER-STYLE=SOLID; BORDER-COLOR:GRAY;

それでも出なかったらボーダーの太さも明記しておきましょう。

BORDER-STYLE=SOLID; BORDER-COLOR:GRAY;BORDER-WIDTH:1pt;

QACCESS2003で、複数テーブルのある項目を一括して主キーにしたい

アクセス2003で、1つのmdbの中に、同じデザインのテーブルがたくさんあります。
これらのテーブルには共通して「A、B、C、D」という項目があり、Dが数値型です。
既にテーブルにはデータが入力されています。(正確には、エクセルファイルから「TransferSpreadsheet」を使って同じ形式の複数シートを一気にインポートした状態です)
全てのテーブルに対して、一括してこのDという項目を主キーに設定したいのですが、どのようにすれば良いでしょうか?
テーブル数は、200個程度あります。

VBAを利用したり、外部ツールを利用しても良いです。

ご教示、よろしくお願いします。

Aベストアンサー

全部のテーブルやっちゃっていいならこんな感じかなぁ
※全てのテーブルの"D"というフィールドに主キーをセット

Function CreateIdx()

Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim idx As Index
Set db = CurrentDb

For I = 0 To DB.Tabledefs.Count - 1
Set tdf = db.TableDefs(DB.Tabledefs(I).Name)
Set idx = tdf.CreateIndex("D")
idx.Fields.Append idx.CreateField("D", dbLong)
idx.Primary = True
tdf.Indexes.Append idx
db.Close
Next I

End Function

QIE(5.5)とNN(4.7)のフォントサイズについて。

フォントサイズがデフォルトのままだと、IE(5.5)とNN(4.7)とではフォントサイズが違うのです。
IEの方でフォントサイズを「小」にするとNNと丁度良いサイズになるので、
IEでアクセスしたときには強制的にフォントサイズを「小」に変更することなど出来ませんでしょうか?
CSSで「12px」とかにしたんですけど、やはりIEでサイズが「中」になっていると
微妙にサイズが違ってしまうのです。
また、テーブル内のフォントのサイズも同じように変更したいのでNNに対しては融通が利かないのです。
なにとぞお知恵をお貸しくださいませm(_ _)m

Aベストアンサー

これはJavaScriptとの併用である程度解決つきます。
ブラウザによって使用するCSSファイル(この場合は外部ファイルにします。拡張子『.css』)を用意し、<head>~</head>タグ内にブラウザの判別のスクリプトを書く形です。

IE用とNN用で別々のCSSを用意する事によって、かなり近い状態で表示されるはずです(それでもWindows/Mac、他のバージョンを考えると完全に一致させる事は至難の技ですが・・・)。

JavaScriptでのブラウザ判別については、ここの『JavaScirpt』の方で見つかったので、そのリンクを。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=186603

Qアクセス フィールド名変更と別テーブル作成 access2010です。 既存テーブル名:AAA 既存

アクセス フィールド名変更と別テーブル作成



access2010です。

既存テーブル名:AAA
既存フィールド名:あああ

これをレコード内容、型式を変えずに別の新テーブルに新フィールド名で作りたいです。

新テーブル名:BBB
新フィールド名:かかか

よろしくお願いします。

Aベストアンサー

テーブルを構造とデータを含めてコピーして、フィールド名を変えればよいのでは?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング