初心者でうまく説明できないかもしれませんが、
添付アクセスでNo1,2,3とテーブルをクエリでフォームを作りました。
1の社員番号を入力すると名前が呼び出され、
2の所属コードを入力すると部署。。。が呼び出されます、
3は資格コードをいれると資格名。。。が呼び出されるようにしました。

1にも所属コードを入力してあり1と2のリレーションを所属コードで結んでます、
これで困ったのが社員番号は変わらないのですが、所属コードは部署名が
変わったり変わったり人も部署の異動で変わります、
このままだと、部署の異動があった場合、入力してあるデータの修正が必要に
なります、
次にやったのは1と2を一つのテーブルにしました、しかし、これも部署名が変わった時
社員数分変更をしなければなりません、本当なら変わった部署を修正し1と2をあとで
一緒にできるといいのですが、
1と2のテーブルをクエリで一緒にして3のテーブルと合わせてフォームを作ったところ
入力ができなくなりました、

添付の1と2を別なテーブルで出来て、部署名など変更になったり、部署の異動の時
過去のデータを修正せずにすむ構築教えてください。

※添付画像が削除されました。

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

A 回答 (2件)

1つの部署に対していくつかに枝分けれするならば、すべてをばらばらにしてデーターの一元性をたもたさなければなりません。

最終的に報告書としてまとめるにはそれぞれのコードに対して名前付けが必要になりますから、名前付けの手段としてそれぞれに関連づけてクエリーを幾重にもつくり、その最後のものを実行するだけで目的がはたせるようにしなければなりません。とにかく私の危惧しているのはデーターベースを作成する際の方法です。何件の社員、部署、資格があるのかわかりませんがそれぞれを間違いなくコードだけで入力していくことができるのかという点です。もし件数が多いのならその方法を構築していく必要があります。
    • good
    • 0

テーブルは次の4つにする


社員: 社員番号、社員名
資格:資格コード、資格名
所属:所属コード、所属名
社員履歴:社員番号、資格コード、所属コード、日付
クエリーを次の3段階を作り、実行は常に第3段階のものを実行する。(第1、第2のクエリーは自動的に行われますので不要)
第1段階社員名名付けのクエリ作成・・・テーブル社員履歴とテーブル社員でクエリーを作成。社員番号でリレーション
第2段階資格名名付け・のクエリー作成・・・第1段階社員名名付けのクエリーとテーブル資格名でクエリ作成。資格コードを結合プロパテイーで結ぶ。社員名名付けの全レコードと資格名の同じ結合フイールドのレコードだけを含めるを選択してクエリーの作成
第3段階所属名名付けのクエリー作成・・・第2段階資格名名付けのクエリーとテーブル所属でクエリ作成。所属コードを結合プロパテイーで結ぶ。第2段階資格名名付けの全レコードと所属の同じ結合不イールドのレコードだけを含めるを選択してクエリーの作成。
これで質問の問題点は解決です。

テーブルの社員履歴は社員が入社してから退社するまでの記録ですから資格修得や転属の日付別に履歴を記録していくことが必要です。
しかしこのテーブルの日々の記入はすべてこのテーブルの項目にじかに直接入力ができるのか心配です。なぜなら社員の数、資格の数、所属名の数が不明ですので、少数であれば何にも問題がないですが、多い場合は入力時の方法を再考しなければなりません。とういのはそれぞれ番号と名前の一致性に自信をもってデーター入力がおこなわなければならないからです。

この回答への補足

84338433さん
ありがとうございます、
やり直してみます、その際ですが所属は部署、課、チーム、班とfieldを分けていましたが
合体した方がいいでしょうか?分けたのは、見やすいかなと思ったためです、部署で知りたい場合、課で知りたい場合など、レポートにする時分かりやすいのかなと思ったやめです、
よろしくお願いします

補足日時:2011/04/25 22:17
    • good
    • 0
この回答へのお礼

いろいろありがとうございました。
試してみましたがちょっとできませんでした

お礼日時:2011/05/09 12:41

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

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

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

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

QACCESS2003のデータアクセスページの使い方について

イントラ内でACCESS2003のデータアクセスページを使いたい。

1.ACCESS2003のデータアクセスページを作成しました。
2.そのMDBファイルと、データアクセスページ(htmファイル)を、WINDOWS2000ServerのInetpub内のwwwrootフォルダの中へ入れました。
3.ここにはイントラ内のHPなどを置いています。(普通に見れています。)
4.クライアントから、データアクセスページのhtmファイルを見に行くと「データソースログオン」が立ち上がります。(パスワードを設定しています。)
5.パスワードを入れるとデータアクセスページ(htm)から、通常のアクセスのフォームのごとくデータ入力が出来る予定なのですが(泣)できません。(泣)

で、悩んでおります。

ACCESS2003のMDBファイルとデータアクセスページ(HTMファイル)をサーバーのwwwrootへ置いただけでは、データアクセスページを通してmdbファイルへの入出力は不可能なのでしょうか?

Aベストアンサー

MDBに接続されたAccessプロジェクトを開いている場合データアクセスページは自動的にそのデータベースに接続されてそのパスがデータアクセスページのConnectionString プロパティに設定されます。
ページを作成した後でデータベースを移動またはコピーした場合はConnectionString プロパティに設定されているパスを更新して新しい保管場所を設定する必要がありますがどうなっていますか?
そこを確認してみてください。

Qアクセスの勉強のやり方

ホント初心者質問ですみません。(汗)

Access2000を使えるようになりたいのですが、どのように勉強していくといいでしょうか?
書店などに行ってテキストを探してみたのですが、種類がたくさんありすぎてどれが良いのだか、、、。
とりあえず、エクセルとワードは使いこなせます。

具体的な質問ではないのですが、みなさんのアドバイスや経験談をよろしかったらお聞かせください。
よろしくお願いします。

Aベストアンサー

いきなり、むずかしいことをやろうとせず、基礎からじっくりとやることですね。
書籍は、入門書で自分で見てわかりやすく書かれているもの、サンプルCD-ROMが
付いているものがいいと思います。

Web上のこんなサイトも役にたつでしょう。
http://www.mahoutsukaino.com/

また、DBMS全般のことも学習された方がいいかと思います。
こちらのサイトにいろんな情報があります。
http://allabout.co.jp/computer/database/

Qホームページ移転に伴う.htaccessの使い方ですがアップロードして

ホームページ移転に伴う.htaccessの使い方ですがアップロードして削除できなくなる事ないですか??また、さくらサーバーは.htaccess使えますか??

Aベストアンサー

.htaccessだけではなく、
ファイルはパーミッションによっては一旦削除できなくなると思いますよ・・・
使えないのにアップすると削除出来ないとか。

>さくらサーバーは.htaccess使えますか??
使えます。
.htaccessを使えない有料サーバってあるのでしょうか?・・・

Qアクセス97のリレーションシップのやり方

困っています。
アクセス97を使ってある、地区の区の会計簿を作りたいのです。
現金出納帳から、各元帳へ自動的に摘要、金額などが記入されるように、また、元帳から決算書に自動的に合計金額が移行されるようにしたいのですが、、。
「日経PC21の根本から学ぶパソコン講座(データベース編)」とかその他の本などを見てやり方を覚えているのですが、、。どうやっても、リーレーションシップの考え方がいまいちで、自分が思うようなテーブルまたは、クエリ、フォームができません。

現金出納帳から、元帳へ自動的に摘要や金額が入力できるような、リーレーションシップをどうすればできるかわかる方、ぜひ、教えてください。

元帳の項目は30個くらいでもう決まった項目名しかありません。

さらに、フォームでテキストとかを入力するフィールドを作る際、入力しやすいように、フィールドの枠をデザインビューで広げるのですけど、フォームビューに戻すと、広がっていないときがあります。どうしてなのでしょうか?
これも、わかる方、ぜひ教えてください。

よろしくお願いします。

Aベストアンサー

>ところで、tksoftさんはどうやって、ACCESSの使い方を勉強したのですか?
私の場合は、会社でとあるメーカーの作成したAccess上のシステムが、些細なトラブルによってメーカーと音信不通になり、仕方無しに使用していたを、興味半分で改造しだしたのが切っ掛けで、そのシステムを少しずつ解体、解析し、テーブルの構造や、クエリーの作成方法、フォームとの関連、マクロ、モジュールの使い方を勉強しました。

>よろしければ、良い勉強の仕方を教えてください。
私が勉強する上で参考にしたのは「できる~」「始めての~」等の書籍を1冊それとヘルプですね。ヘルプは特に重要です、簡単なサンプルも着いているので是非使いこなすようにしたほうが上達も早いと思います。
また、[ファイル]->[新規作成]からウイザード形式で作るデータベースを解析・改造してみるのもいいかもしれません。
そして、最も重要なのは自分でいろんなデータベースを作ってみる事ですね。「蔵書」「雑誌」「住所録」「料理(レシピ)」「音楽」等等、片っ端から作成しているとそのうち慣れてきます。

>また、作業を続けますので、わからないところは教えてください。
喜んでお手伝いさせていただきますよ(^v^)
でも、全ての質問にお答えできるとは限りませんのでご了承下さいm(_ _)m
また、ここ「教えてgoo」での質問であれば、新たに質問を立てたほうがより多くの人のお知恵を借りることが出来るかもしれません。この質問も大分古くなり余り人目につかなくなったようですしね

一応、前々回の参考リンクに私のE-mailアドレスを載せておきましたのでそちらからの質問も受け付けています。

それでは、作成頑張ってください(^_-)-☆

>ところで、tksoftさんはどうやって、ACCESSの使い方を勉強したのですか?
私の場合は、会社でとあるメーカーの作成したAccess上のシステムが、些細なトラブルによってメーカーと音信不通になり、仕方無しに使用していたを、興味半分で改造しだしたのが切っ掛けで、そのシステムを少しずつ解体、解析し、テーブルの構造や、クエリーの作成方法、フォームとの関連、マクロ、モジュールの使い方を勉強しました。

>よろしければ、良い勉強の仕方を教えてください。
私が勉強する上で参考にしたのは「できる~」...続きを読む

QAccessで作成したテーブルのOLEオブジェクトの使い方

Accessで作成したテーブルにデータ型(OLEオブジェクト型)で画像を取り込みできるようにしました。
取り込みした画像を開くためのフォームを作成して画像を開けるようにしました。
下記の内容です。

Private Sub Form_Open(Cancel As Integer)
Form.Caption = ProgName
End Sub

しかし「ビットマップ形式」ですと問題なく開くのですが、「JPG形式」ですと開けないのです。取り込みしたAccessテーブルのフィールドから直接だとひらけます。
Accessで作成したフォームから、「JPG形式」の画像を開くにはどうすればよろしいですか?
また、画像を1000件ほど取り込みすると大きいデータベースになってしまいます。Accessのデータベースのサイズは制限があるのかしら?
アドバイスいただけれは幸いです。

Aベストアンサー

Access のバージョンは?
んで Web で検索する努力はしましょうよ。
丸 1日ぐらい検索しっぱなしで悩まないと。

Google「access ole jpeg」で検索
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=access+ole+jpeg&num=50

Access 2003 では以下のような制限があるようです。
■ Access 2003 で OLE オブジェクトとして JPEG および GIF 画像を取り扱う場合の注意事項
http://support.microsoft.com/kb/884484/ja

■ OLE オブジェクト型のフィールドに格納されているイメージが正しく表示されません
http://support.microsoft.com/kb/832508/ja

解決策としては JPEG を開ける OLE コンテナになるアプリケーションをインストールしておく。

Google「Access データベース サイズ 制限」で検索
http://www.google.com/search?hl=ja&num=50&q=Access+%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9+%E3%82%B5%E3%82%A4%E3%82%BA+%E5%88%B6%E9%99%90&lr=lang_ja

Access のバージョンは?
んで Web で検索する努力はしましょうよ。
丸 1日ぐらい検索しっぱなしで悩まないと。

Google「access ole jpeg」で検索
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=access+ole+jpeg&num=50

Access 2003 では以下のような制限があるようです。
■ Access 2003 で OLE オブジェクトとして JPEG および GIF 画像を取り扱う場合の注意事項
http://support.microsoft.com/kb/884484/ja

■ OLE オブジェクト型のフィールドに格納されているイメージが正...続きを読む

Qアクセス初心者ですが困っています。

アクセスで名簿一覧を作成したいと思っています。

テーブルで1人につき50項目のデータを打ち込んでいます。
それをフォームの表形式で名前と識別番号を表示したいです。
(項目が多いので見やすくするため)
フォームの表形式の左側にボタンを置き各詳細データを単票形式
で見れるようにしたいのですがうまくいきません。

現状として、ボタンを押して単票形式のデータを開くことは、でき
たのですが表形式のボタンと単票形式のデータが連動しておらず、
ボタンを押すと一番最初の人物のデータしか出てきません。

どなたかアイデアのほうをご教授お願いします。

Aベストアンサー

> 単票形式のデータを開くことはできた

ということなので、その時の OpenForm のパラメータ「WhereCondition」に識別番号を使用した条件を設定するとよいと思います。

ヘルプで OpenForm を参照してみてください。

QAccess2000でFTPの使い方について。

Access2000のフォームから、実行のボタンをクリックするとFTPサーバに接続→ファイル取得→Accessテーブルに取込→FTPサーバのファイル削除→FTPサーバの接続切断という処理をしたいのですがどのようにしたらよいかわかりません。説明不足だとは思いますが、アドバイスを宜しくお願い致します。

Aベストアンサー

ちなみに先ほどのFTPサンプルは、BASP21をインストール後、サンプルのコードを新規モジュールに貼り付けて(たとえば以下をまるごと)実行すればAccessでもそのまま動きます。

sub file_download()

Dim ftp As Object, rc As Long, v As Variant, v2 As Variant
Dim ctr As Long

Set ftp = CreateObject("basp21.FTP")
ftp.OpenLog "c:\temp\log.txt"
rc = ftp.Connect("ftp.microsoft.com", "anonymous", "")
If rc = 0 Then
v = ftp.GetDir("bussys/winnt/winnt-public", 2) ' ディレクトリ一覧(詳細)
If IsArray(v) Then
For Each v2 In v
Debug.Print v2
Next
End If
v = ftp.GetDir("bussys/winnt/winnt-public") ' ディレクトリ一覧(ファイル名のみ)
If IsArray(v) Then
For Each v2 In v
Debug.Print v2
Next
End If
rc = ftp.GetFile("bussys/winnt/winnt-public/*", "c:\temp") 'ファイル受信

end sub

実行には20秒ほどかかります。
実行前にはCドライブにtempというフォルダを作っておいてください。

ちなみに先ほどのFTPサンプルは、BASP21をインストール後、サンプルのコードを新規モジュールに貼り付けて(たとえば以下をまるごと)実行すればAccessでもそのまま動きます。

sub file_download()

Dim ftp As Object, rc As Long, v As Variant, v2 As Variant
Dim ctr As Long

Set ftp = CreateObject("basp21.FTP")
ftp.OpenLog "c:\temp\log.txt"
rc = ftp.Connect("ftp.microsoft.com", "anonymous", "")
If rc = 0 Then
v = ftp.GetDir("bussys/winnt/winnt-public", 2) ' ディレクトリ一...続きを読む

Qかなり初心者参ってます(アクセス)

売り上げをアクセスにて管理しています。
以前、詳しい方が作成したようで何の引継ぎもないまま私が担当になりました。
売り上げを年度毎にレポートにて印刷出来るようにしてあるのですが、平成17年度の集計のレポート新たに作成してと言われました。
アクセスは入力・修正のみの経験なので、参考書を読んでも正直さっぱりです。
今までの年度毎のレポートがあるので、それをどうやって作成しているのか知る方法はありますか?
全く同じ方法で平成17年度版を作成したいのです。
レポート作成にあたって基になるものを選択とありますが、クエリにたくさんのデータがあってどれを基にしているのかでさえ、さっぱりです(^o^;
非常に分かりづらい文章ではありますが、良い方法があれば教えて下さい。
宜しくお願い致します。

Aベストアンサー

> そんな単純ではないのでしょうか・・・(;^_^A
ないです。


> (3) (2)でクエリ名か、SQL文が記述されているはずなので、SQL文ならば、
>   こちらにUPしてください。
>   クエリ名であれば、そのクエリをデザインビューで開き、
>   「表示」→「SQLビュー」でSQL文を提示してください。

この手順は、きちんとした回答をするための情報収集の段階です。
なので、直接解決できるようなことは、全く書いていません (^^ゞ

この手順(3) の返事がなければ、次に進むことができませんので。

QRuby on Rails 「attr_accessor」 の使い方に

Ruby on Rails 「attr_accessor」 の使い方について

こんにちは。

現在、Ruby on Railsで登録画面を作成しているのですが、attr_accessorで定義した項目に対して、validationのチェックを行うと、問題が起きてしまいました。

attr_accessorで定義した項目は、DB登録の対象ではないのですが、lengthのチェック等を行う必要があり、validates_length_of等を使って入力チェックを行っています。

問題になったのは、入力があったときだけチェックをかけたいのに、入力がなくてもチェックがかかってしまうという状態になってしまうことです。
「:if => 項目?」を書いてみると、「undefined method」のエラーがでてしまいます。

どなたか対応策の分かる方がおられましたらご教授いただけないでしょうか?

下記に実際の問題箇所のモデルクラスのソースを書いておきます。

 class User < ActiveRecord::Base

   attr_accessor :NEW_USER_PW ← 追加したアクセサ

   # 追加したアクセサに対するチェック
   validates_length_of :NEW_USER_PW, :minimum=>4, :message=>"は%d桁以上を設定してくださ            
    い。", :on => :update, :if => :NEW_USER_PW?

 end

上記のチェック内の「:if => :NEW_USER_PW?」で落ちてしまいます。
入力がないのにチェックに引っかかるとまずいので、入力がないときだけ上記チェックを行えれば良いのですが・・・。

どうぞ宜しくお願い致します。

Ruby on Rails 「attr_accessor」 の使い方について

こんにちは。

現在、Ruby on Railsで登録画面を作成しているのですが、attr_accessorで定義した項目に対して、validationのチェックを行うと、問題が起きてしまいました。

attr_accessorで定義した項目は、DB登録の対象ではないのですが、lengthのチェック等を行う必要があり、validates_length_of等を使って入力チェックを行っています。

問題になったのは、入力があったときだけチェックをかけたいのに、入力がなくてもチェックがかかってしまうという状...続きを読む

Aベストアンサー

attr_accessor :NEW_USER_PWを定義したからといって、
NEW_USER_PW?メソッドが定義されるわけではりません。
attr_accessorはゲッターとセッターメソッドを作るだけです。
それ以外の論理値を返すようなメソッドは自作しなければなりません。

NEW_USER_PW?メソッドを作成されていないのなら、「undefined method」が
出てしまうのは当然です。

質問にあるように、「入力があった場合のみ」とありますので、
NEW_USER_PW?メソッドを下記のように実装すればチェック可能です。

def NEW_USER_PW?
@NEW_USER_PW.size > 0
end

また、ifにはprocオブジェクトを渡すこともできますので、
:if => Proc.new{|u| u.NEW_USER_PW.size > 0}
と書いてもいいでしょう。


NEW_USER_PWというインスタンス変数はすべて大文字を使用されていますが、
見る人によっては定数と勘違いします。
変数であれば小文字表記を利用するほうが良いかもしれません。

attr_accessor :NEW_USER_PWを定義したからといって、
NEW_USER_PW?メソッドが定義されるわけではりません。
attr_accessorはゲッターとセッターメソッドを作るだけです。
それ以外の論理値を返すようなメソッドは自作しなければなりません。

NEW_USER_PW?メソッドを作成されていないのなら、「undefined method」が
出てしまうのは当然です。

質問にあるように、「入力があった場合のみ」とありますので、
NEW_USER_PW?メソッドを下記のように実装すればチェック可能です。

def NEW_USER_PW?
@NEW_USER_PW.s...続きを読む

Qアクセスで困ってます(初心者)

クエリのSQL文で作りたいと思っています。

表1
会社コード 年月日  重量
==    ==   ==
1     5/1     1
1     5/12    2
1     5/13 3
2     6/21 4
2     6/22 5
・      ・    ・
・      ・    ・
このようなテーブルがあり21日締めでテーブルもしくは
クエリを作りたいと思います。

会社コード 5/21 5/22 5/23・・・・・・・・・6/20
==    == == ==
1     0  0  5
2     1  3  0
このようにデータを変換させたいと思います。集計クエリだと日付がない所が表示されないので・・・

どうぞ、よろしくお願いします。m(○)m

Aベストアンサー

>クエリのところで21日締めなのでクエリ日付を21から翌月20までととめたいのですがどうすればよろしいのでしょうか?

締め日は固定していないので、日付まで入れて下さい。
その日から1ヶ月の集計をする仕様になっています。

集計開始日に 2007/5/21 と日付まで入れると、
2007/5/21 ~ 2007/6/20 までになると思います。

============================================================
日付の入力を省略したいなら、下記の様に変更して下さい。

集計開始月に 2007/5 と月まで入力すれば、
2007/5/21 ~ 2007/6/20 までになると思います。

----集計日----
PARAMETERS 集計開始月 DateTime;
SELECT DateAdd("d", 番号+20, 集計開始月) as 集計日
FROM 連番
WHERE DateAdd("d", 番号+20, 集計開始月) < DateAdd("m", 1, DateAdd("d", 20, 集計開始月));
---------------

>クエリのところで21日締めなのでクエリ日付を21から翌月20までととめたいのですがどうすればよろしいのでしょうか?

締め日は固定していないので、日付まで入れて下さい。
その日から1ヶ月の集計をする仕様になっています。

集計開始日に 2007/5/21 と日付まで入れると、
2007/5/21 ~ 2007/6/20 までになると思います。

============================================================
日付の入力を省略したいなら、下記の様に変更して下さい。

集計開始月に 2007/5 と月まで入力すれば、
...続きを読む


人気Q&Aランキング

おすすめ情報