- ベストアンサー
アクセスの IIf
エクセルの時は、IF関数を使用し簡単に設定できたのですが、アクセスは勉強中で全くわかりません。 図にあるように、勤務箇所に 例 事務所 と指定した場合に、右のフィールドの値(開始時間)に対し8:30等 ある時間に設定したいのです。 説明がうまくできませんが、お分かりになる方お教え願いませんか。 アクセス2003で使用しています。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
Q.勤務開始時刻規定値:日付型/時刻型 勤務終了時刻規定値:日付型/時刻型 これを絡めてみます。 A.その通りです ただしデータテーブルと既定値のフィールドのある マスターテーブルを関連付け(リレーションシップ)をしたクエリーを作成し 1つのテーブルのようにして、このクエリーを元にしたフォーム の中にVBAで前回提示した式を作成する事になります ※実際には各マスターテーブルにフィールドを追加する事になります 例えば社員マスタには誕生日、住所、電話番号等 今出来ているテーブルはどのようにしますか テーブルの正規化をして複数のテーブルに分割して複数のテーブルにしますか 結果の各テーブルの概要を記述して下さい。 もし私の提案通りで宜しければ既定値をどのマスタテーブルに するか決めてくだされば次のステップへ進みたいと思います (リレーションシップ→クエリー作成、フォーム作成)
その他の回答 (6)
- chayamati
- ベストアンサー率41% (260/624)
Q.画像は一回しか載せれないみたいですが・・・ A.画像少し良くなったようですね ルックアップ設定されたようですね 日付と曜日が別フィールドになっているようですが エクセルもアクセスも書式で一つに出来ます→DD.(AAA) Q.Private Sub 勤務内容_Exit() 勤務開始時刻 = "17:00" 勤務終了時刻 = "19:00" End Sub ここに A現場がどう絡むのかが理解出来ていません。 A.勤務内容とA現場とは別ですか もし別としたら勤務内容マスタが必要です 済みません 肝心のテーブル定義でもれがありました 1.場所マスタ ID:主キー オートナンバー型 場所名:テキスト テキスト型 IME入力モード オン 勤務開始時刻規定値:日付型/時刻型 勤務終了時刻規定値:日付型/時刻型 勤務内容のテーブルは 4.勤務内容マスタ ID:主キー オートナンバー型 勤務内容名:テキスト テキスト型 IME入力モード オン 勤務開始時刻規定値:日付型/時刻型 勤務終了時刻規定値:日付型/時刻型 ※勤務開始時刻規定値、勤務終了時刻規定値 は社員マスタ、場所マスタ、勤務内容マスタの内 どれか一つのマスタテーブルでよいです これでご理解いただけますか Q.現在 テーブル・クエリ・レポート・フォームと作成は出来ています。 A.このテーブルには大量のデータが入っていてテーブルの体系を変える 事は不可能かも知れませんね… 良いテーブル体系は、開発の次工程及び運用の効率効率が上がります。 試しに新規に空のファイルを作成して、ここへ テーブルをインポートしてを[テーブルの正規化]やってみて下さい 自分もやってみました。正規化の過程で色々参考になる説明があります。 クリックで次へ次へと進めると[ウィザードを使う]と[独自に指定する] の選択する所で[ウィザードを使う]でエラーが発生しましたが [独自に指定する]は成功しました。 ツールメニューの中に中に[テーブルの正規化]というツールがあります
補足
毎日本当にありがとうございます。 コツコツですが、勉強になります。 A.勤務内容とA現場とは別ですか もし別としたら勤務内容マスタが必要です 勤務内容の中に A現場 B現場とリストで作成してあります。テーブルも作成してあります。 勤務コード・勤務区分とで10ケ所程入れ込んであります。 ここに勤務開始時刻規定値:日付型/時刻型 勤務終了時刻規定値:日付型/時刻型 これを絡めてみます。 日付に関しては、練習のつもりで曜日と分けて作ってみました。
- chayamati
- ベストアンサー率41% (260/624)
Q.現在職場が2003ですので2003で作成しています。 A.職場のマシンですか、画面の文字を大きく見せるために解像度を下げていませんか PRTSCするとき、解像度を上げてやってみて下さい 早速ですがツールバーをスキャンして添付していただけませんか 少し前まではAccess2000を使っていましたがどのツールがどこに配置されていたか忘れました
お礼
http://oshiete.goo.ne.jp/qa/7879282.html 画像は一回しか載せれないみたいですが・・・ 上記に載せてみました。
補足
補足説明欄には、画像を載せれません。 私の使い方がいけないのか・・・ 改めて 質問を作成しそこに載せてみます。
- chayamati
- ベストアンサー率41% (260/624)
色々試されているようですね テーブルはエクセルのSHEETをエクセルの左の枠にコピペしても、エクセルファイルをインポートしても 作成できますが、一般的なテーブルになります。 テーブルの設定内容は次工程の クエリー、フォーム、レポートへレポートに反映されます。 書式、定型入力、標題、既定値、入力規則、エラーメッセージ、インデックス、IMEモード、ふりがな、 下に隠れている住所入力支援は葉書入力ソフトと同じように郵便番号⇔住所が可能です 従ってよいテーブルを作成すると運用を含めた次工程が大変効率よく進みます。 ルックアップを少し ルックアップタグは最初表示コントロールがテキストの偉業のみですが、右端クリックよりコンボボックスを 選ぶと添付のようになります 値集合ソース:右端クリックでテーブルおよびクエリがリストされます 連結列:例えば場所マスタ(ID,場所名)のIDが連結列は1とします 列数:表示はIDと場所名の2つなので2 リスト幅:IDは表示する必要がないので0、最後の項目幅は省略可 リスト行数:プルダウンリストの高さで32行 よいテーブルを作るとシステムの80%以上完成したと言えます 先へ進みたい気持ちを少し押さえてテーブルの設計内容を見直してください
- chayamati
- ベストアンサー率41% (260/624)
Q.現在職場が2003ですので2003で作成しています。 A.ツールは上辺の2003ではツールバーに入っていますが 2010では上辺の複数のリボンの中にグループ分けされていますが働きは変りません Q.現在 テーブル・クエリ・レポート・フォームと作成は出来ています。 A.社員マスタ、勤務データにルックアップ設定していますか これして置くと社員マスタ登録のとき勤務場所はプルダウンメニューから選択 勤務データ登録のとき社員はプルダウンメニューから選択 (社員名が100名以内なら1~3度程度のスクロールで全員のリストが表示されます これ以上の人数になりますと部門単位に絞り込みで切り抜けます) Q.勤務内容が5種類ほどリスト形式で作成してありまして、その内容によって 開始時間・終了時間等を固定値化したかったのです。 A.勤務内容は勤務場所で決まるのですね、 勤務場所は社員によって固定する設計になっていますが、 もし日によって移動するなら勤務データに勤務場所の項目が必要になります 終了時刻にも規定値が必要のようですね、場所マスターに追加しておきましょう ※時刻と時間を使い分けましょう Q.最初ネットで スイッチ関数とかIIf関数等みてチャレンジしたのですがどうしようもなくここに相談させて頂きました。 A.IIFはクエリー内で用いる関数です。今回はこれは使いません BVA内では Ifです。 Private Sub 社員ID_Click() 勤務開始時刻 = Me.Parent!勤務開始時刻規定値 End Sub Q.作成してある物で言いますと、社員IDをクリックすると、 勤務開始時間が規定値になるのでしょうか? A.その通りですが 自分のコーディングが間違っていました Private Sub 社員ID_Exit() IF 勤務開始時刻 = "" Then 勤務開始時刻 = 勤務開始時刻規定値 勤務終了時刻 = 勤務終了時刻規定値 End Sub 勤務データに場所IDを設けた場合 Private Sub 場所ID_Exit() IF 勤務開始時刻 = "" Then 勤務開始時刻 = 勤務開始時刻規定値 勤務終了時刻 = 勤務終了時刻規定値 End IF End Sub ※Me.Parent! サブフォームのあるフォームの場合 サブフォームから主フォームのボックスを参照するときMe.Parent!を付けます 主フォームからサブフォームのボックスを参照することはできません 今回はいりませんね Q.勤務内容・開始時間・終了時間・を打ち込むと125/100で残業時間が計算されて出ます。 一人に一月分で130人の物が出来ていますが、 各人の現場により終了時間が違うため一人一人毎日打ち込んでいます。 A.125/100 一人に一月分で130人 理解できません 時間の概念ご存じと思いますが、念のため触れておきます 日付と時刻同一の時間軸(1900/1/1を1とするシリアル値と呼ぶ)で取り扱われています 秒、分、時、日、月、年と桁上がりがあります。 Q.そこで、勤務箇所(A現場)にすると開始時間(フィールド)が17:00と出るようにし、 B現場と選ぶと18:00等にしたかったのです。 エクセルのように条件付き表示みたいなものがあったので式を入れてみたのですが うまくいきませんでした。 A.コーディングの中に定数を用いるのは感心しません 会社の規定で開始時刻が変更されたら関わりあるプログラムの全て変更しなければなりません テーブルにフィールドを設定しておくとフィールドの値を変更するだけで済みます Q.更新後の処理にVBAで書くならば ? そのような方法がいいのかと素人考えで思いチャレンジしていますが、なかなかうまくいきません。 勤務内容後の更新にどう書けばいいのかお分かりになれば幸いです。 Private Sub 勤務内容_AfterUpdate() End Sub A.勤務場所と勤務内容とは異なるものですか ボックスのイベントはClick、Change、AfterUpdate、と色々ありますがExitがよいと思います Private Sub 勤務内容_Exit() 勤務開始時刻 = 勤務開始時刻規定値 勤務終了時刻 = 勤務終了時刻規定値 End Sub
補足
何度も何度も詳しくのご説明大変感謝致します。 色々な方法があることは理解できました。 Private Sub 勤務内容_Exit() 勤務開始時刻 = 勤務開始時刻規定値 勤務終了時刻 = 勤務終了時刻規定値 End Sub 上記の指示を打ち込むに当たり、時間の入れ方が・・・ Private Sub 勤務内容_Exit() 勤務開始時刻 = "17:00" 勤務終了時刻 = "19:00" End Sub ここに A現場がどう絡むのかが理解出来ていません。 毎日のように長文での解説本当に感謝致します。 文中にあるサブシートを使用しているか? はい 使用しています。 時間も一月分一人づつ計算して出るようにはしてあります。 日付テーブル・勤務箇所テーブルも作成しています。 しいて言うならば開始時間テーブルが作ってありません。
- chayamati
- ベストアンサー率41% (260/624)
今一つ補足願います Accessのヴァージョンは何ですか自分はAccess2010です --------------------------------------------------- 1.多分VBA(プログラム)を組み込む必要がありますが大丈夫ですね 大丈夫かと言われますと、大丈夫ではないとお答えするしかありません。 まだまだ、勉強中でマクロで組み上げているだけなのです。 ---------------------------------------------------- 大丈夫です。 EXSELでのVBAと変わりありません それに今回必要なのは次の5行だけです Private Sub 社員ID_Click() 勤務開始時刻 = Me.Parent!勤務開始時刻規定値 End Sub これはさておきテーブル定義から始めましょう テーブルの定義はテーブルデザインから始めます 1.場所マスタ ID:主キー オートナンバー型 場所名:テキスト テキスト型 IME入力モード オン 2.社員マスター ID:主キー オートナンバー型 社員名:テキスト テキスト型 IME入力モード オン IME変換モード 人名/地名 場所ID:数値型の長整数型 場所マスタをルックアップでコンボボックス型 ルックアップを設定するとデータ形式は数字ですが表示は場所名になります 3.勤務データ ID:主キー オートナンバー型 社員ID:数値型の長整数型 場所マスタをルックアップでコンボボックス型 勤務日:日付型/時刻型 勤務開始時刻:日付型/時刻型 項目名の:の右は設定すべきプロパティー値です この内それどれのIDは自動設定されるのでそれに ゆだねます その他は設定枠の右端クリックからプルダウンメニューから選択します 他の項目も既定値を設定することも出来ます。 例えば勤務日には[右端クリック] →[関数左の+]→[組み込み関数]→[日付/時刻] →[DATEをダブルクリック]→[OK]で =DATE()となり レコードを追加したとき入力した日が初期値表示になります。 同じく勤務日の書式にエクセルでお馴染みの ge.m.d、ge.mm.dd、ggg.m.e、ggge.m.e(aaa)が使えます 社員名、場所名は 同姓同名の問題は残りますがインデックスで重複なし 以上ですが何かコメント下さい、次へ進んでいい判断したら ・次回リレーションシップとクエリー作成 ・次々回フォーム作成に移ります
お礼
補足です 更新後の処理にVBAで書くならば ? そのような方法がいいのかと素人考えで思いチャレンジしていますが、なかなかうまくいきません。 勤務内容後の更新にどう書けばいいのかお分かりになれば幸いです。 Private Sub 勤務内容_AfterUpdate() End Sub この間がなんかんです。
補足
現在職場が2003ですので2003で作成しています。 ご丁寧にありがとうございます。 現在 テーブル・クエリ・レポート・フォームと作成は出来ています。 勤務内容が5種類ほどリスト形式で作成してありまして、その内容によって開始時間・終了時間等を固定値化したかったのです。 最初ネットで スイッチ関数とかIIf関数等みてチャレンジしたのですがどうしようもなくここに相談させて頂きました。 ご丁寧に回答誠にありがとうございます。 Private Sub 社員ID_Click() 勤務開始時刻 = Me.Parent!勤務開始時刻規定値 End Sub 作成してある物で言いますと、社員IDをクリックすると、勤務開始時間が規定値になるのでしょうか? 画像が見にくくて申し訳ありませんが、勤務内容・開始時間・終了時間・を打ち込むと125/100で残業時間が計算されて出ます。 一人に一月分で130人の物が出来ていますが、各人の現場により終了時間が違うため一人一人毎日打ち込んでいます。 そこで、勤務箇所(A現場)にすると開始時間(フィールド)が17:00と出るようにし、B現場と選ぶと18:00等にしたかったのです。 エクセルのように条件付き表示みたいなものがあったので式を入れてみたのですがうまくいきませんでした。 このような表記でお分かりになりますでしょうか?
- chayamati
- ベストアンサー率41% (260/624)
補足お願します 1.多分VBA(プログラム)を組み込む必要がありますが大丈夫ですね 2.開始時間は8:30が規定値で後で修正入力が必要ですね 3.勤務箇所は複数あるのですね 4.添付は判読不可能ですどこをみましょうか 蛇足ですが この添付は判読できません どのようにして作成されましたか FN+PRTSCで画面全体をコピーして JTrim(画像のレタッチ加工ソフト Free)で不要なところを削除しています。 PRTSCはファンクションキーの右寄りにあります。
お礼
画像が 再度うまく載せれません。申し訳ありません。 フォーム画面をプリントスクリーンで写した物ですが・・・。
補足
補足お願します 1.多分VBA(プログラム)を組み込む必要がありますが大丈夫ですね 大丈夫かと言われますと、大丈夫ではないとお答えするしかありません。 まだまだ、勉強中でマクロで組み上げているだけなのです。 2.開始時間は8:30が規定値で後で修正入力が必要ですね はい、時間が一定ではなく、稀に9:30 7:30と上書きすることもあると思います。 エクセルの条件付き書式みたいなイメージで作成できるのかと?夢を描いていました。 3.勤務箇所は複数あるのですね はい コンボで複数設定するようにはなっていますが、まず、一つできれば加工可能かなと思っていました。 4.添付は判読不可能ですどこをみましょうか 単純に勤務箇所を 現場 と入れると、開始時間が8:30 ってな表示が出るとありがたいです。
お礼
本日時間がありまして、文献等を紐解きまして目指す所ができました。 Private Sub 勤務内容_AfterUpdate() If(Me![勤務内容] = "現場A")Then Me![終了時間] = #7:00:00 PM# Else End If End Sub で、ちゃんと表示しました。 長いあいだ親切丁寧にありがとうございました。 また、悩んだら質問させて頂きます。 今回のご指導本当にありがとうございました。
補足
昨日今日と出張に出かけていて触れませんでした。 明日進めれれば勧めますが、連休で少し自宅で進めてみようと思います。 またあ不明点が出ましたら、ご指導お願いします。