Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


123 / 500 ページ ←次へ | 前へ→

【10827】Re:複数条件からのレコード抽出
回答  Gin_II  - 08/12/2(火) 17:14 -

引用なし
パスワード
   > 入力ミスを防ぐ意味でもリストかチェックボックスを使用して
>
> 1.階数 (1階or2階)
> 2.曜日 (平日or土日祝)
> 3.状況 (通常or物販)
> 4.時間帯(午前or午後など)

この条件を入力するコントロールでの設定が分からないということでしょうか?

それぞれのコントロールは、オプショングループを使えばいいと思います。
(リストボックスでも構いませんが。)

リストボックスであれば、

値集合タイプ:値リスト
値集合ソース:"平日";"土日祝"

などのように設定すれば、抽出条件でそのまま利用できますね。

オプショングループだと、値は、1,2,3 のようになりますので、

> 曜日 階数 用途 時間帯 金額
> 平日 1階 通常 午前  1000
> 平日 1階 通常 午後  1100
> 平日 1階 通常 夜間  1100
>       :

このテーブルで、

曜日 階数 用途 時間帯 金額
平日 1階 通常   1  1000
平日 1階 通常   2  1100
平日 1階 通常   3  1100
      :

のように管理しておけばいいと思います。
・ツリー全体表示

【10826】Re:複数条件からのレコード抽出
お礼  tori  - 08/12/2(火) 16:11 -

引用なし
パスワード
   ▼neptune さん:
>みなさんこんにちは
>
>横から失礼します。
>
>やりたい事のどこまで出来ていてどこが判らないのかをはっきりさせましょう。
>で、なければ、一々toriさんに不足情報を求めて作成、説明はできません。
>
>もし、全く判らないなら
>googleで「Access 入門」をキーワードに検索すると沢山ヒットしますから
>そこでAccessの使い方をもっと勉強した方がよろしいかと思います。
>Accessの使い方が判ってのAccess VBAですから。
>
>
>ちなみに、私も、これまでにtoriさんが提示された内容だけでは
>詳細がわからないので
>Gin_IIさん が書かれている
>>DLookup 関数を使ってもいいでしょうし、クエリで抽出条件を
>>設定してもいいと思います。
>以上のことは判りません。
>多分これはどなたが見ても同じと思います。


勉強不足状態で質問してしまい、ご迷惑をおかけしました。
googleなどで勉強したのち再度質問させていただきます。


Gin_IIさん ありがとうございました
・ツリー全体表示

【10825】Re:時間集計について
発言  まつ  - 08/12/2(火) 15:27 -

引用なし
パスワード
   >それと、新たにデータを入れたところ、確かに「月?」と聞かれる
>のですが、同時に「開始年月日」も聞かれてきます。
>適当なデータ入力したら、データは表示されませんでした・・・
>
>何か不具合があるのでしょうか?度々すみません。

すみません、私の入力ミスでした「開始年月日」の所を「開始月日」と
入力が間違ってました。
それは解決して、月を聞かれた時にその月を入力すると
「-12000000」とか(数字は適当)マイナスでデータが出てきてしまいます。

入力した関数の内容を理解していないので、ちょっと分からない状態です・・・
・ツリー全体表示

【10824】メール送信方法
質問  magmag  - 08/12/2(火) 15:25 -

引用なし
パスワード
   フォームに作成したボタンのイベントから、メールを送信したいのですが、
その方法を教えて頂けないでしょうか?

アドレス、タイトル、本文等は取得している状態です。
・ツリー全体表示

【10823】Re:時間集計について
発言  まつ  - 08/12/2(火) 15:19 -

引用なし
パスワード
   >年度ごとにテーブルを分けると言うことでしょうか。
>それは、しない方がいいと思います。
>テーブルを分けてしまうと、いろいろ面倒です。
>一つのテーブルにして、年度毎のデータが必用なときは、
>クエリで抽出するというのがデータベース設計の基本です。

年度毎にテーブルを分けると言う事ではなく、年度毎にアクセス本体を
その年用に作り直すって事です。
毎年同じアクセスでずっとデータを入れ続けてもいいのですが、年度で
完結するものであり、毎年新しいものにして保管しておくつもりで
管理するつもりです。

それと、新たにデータを入れたところ、確かに「月?」と聞かれる
のですが、同時に「開始年月日」も聞かれてきます。
適当なデータ入力したら、データは表示されませんでした・・・

何か不具合があるのでしょうか?度々すみません。
・ツリー全体表示

【10822】Re:複数条件からのレコード抽出
発言  neptune  - 08/12/2(火) 13:35 -

引用なし
パスワード
   みなさんこんにちは

横から失礼します。

やりたい事のどこまで出来ていてどこが判らないのかをはっきりさせましょう。
で、なければ、一々toriさんに不足情報を求めて作成、説明はできません。

もし、全く判らないなら
googleで「Access 入門」をキーワードに検索すると沢山ヒットしますから
そこでAccessの使い方をもっと勉強した方がよろしいかと思います。
Accessの使い方が判ってのAccess VBAですから。


ちなみに、私も、これまでにtoriさんが提示された内容だけでは
詳細がわからないので
Gin_IIさん が書かれている
>DLookup 関数を使ってもいいでしょうし、クエリで抽出条件を
>設定してもいいと思います。
以上のことは判りません。
多分これはどなたが見ても同じと思います。
・ツリー全体表示

【10821】Re:複数条件からのレコード抽出
質問  tori  - 08/12/2(火) 13:09 -

引用なし
パスワード
   ▼Gin_II さん:
>> 上記のテーブルを作成した場合はDLOOKUP関数など
>> を利用するのでしょうか。
>
>DLookup 関数を使ってもいいでしょうし、クエリで抽出条件を
>設定してもいいと思います。
>
>
>> リストから選択する場合ですと、判別するのが時間帯
>> になるので見にくくなるような気がするのですが。
>
>こちらについては、意図がよくつかめませんけど ^^;
>
>選択肢として、
>
>午前
>午後
>夜間
>午前・午後
>午後・夜間
>全日
>
>とあると、分かりにくいということでしょうか?

説明不足で申し訳ありません。
入力ミスを防ぐ意味でもリストかチェックボックスを使用して

1.階数 (1階or2階)
2.曜日 (平日or土日祝)
3.状況 (通常or物販)
4.時間帯(午前or午後など)

これら4つの条件を満たす利用金額を表示させたいです。

よろしくお願いします
・ツリー全体表示

【10820】Re:複数条件からのレコード抽出
回答  Gin_II  - 08/12/2(火) 11:54 -

引用なし
パスワード
   > 上記のテーブルを作成した場合はDLOOKUP関数など
> を利用するのでしょうか。

DLookup 関数を使ってもいいでしょうし、クエリで抽出条件を
設定してもいいと思います。


> リストから選択する場合ですと、判別するのが時間帯
> になるので見にくくなるような気がするのですが。

こちらについては、意図がよくつかめませんけど ^^;

選択肢として、

午前
午後
夜間
午前・午後
午後・夜間
全日

とあると、分かりにくいということでしょうか?
・ツリー全体表示

【10819】Re:時間集計について
回答  hatena  - 08/12/2(火) 10:21 -

引用なし
パスワード
   >指摘にもありましたが、年度はあいまいにしてますが、2008年なら2008年だけ
>集計するようにしています。年度で1つのデータベースで管理するつもりです。

年度ごとにテーブルを分けると言うことでしょうか。
それは、しない方がいいと思います。
テーブルを分けてしまうと、いろいろ面倒です。
一つのテーブルにして、年度毎のデータが必用なときは、
クエリで抽出するというのがデータベース設計の基本です。

>式(Sum(Sum(DateDiff("n",
>IIf([開始年月日]<DateSerial(Year(Date()),[月?],1),
>   DateSerial(Year(Date()),[月?],1),[開始年月日]+[開始時間]),
>IIf([終了年月日]>=DateSerial(Year(Date()),[月?]+1,1),
>   DateSerial(Year(Date()),[月?]+1,1),[終了年月日]+[終了時間])))))
>で集計関数を使用することは出来ませんと、出てしまいます...

すみません。式に間違いがありました。Sumが余分でした。

※1 に設定する式
DateDiff("n",
IIf([開始年月日]<DateSerial(Year(Date()),[月?],1),
   DateSerial(Year(Date()),[月?],1),[開始年月日]+[開始時間]),
IIf([終了年月日]>=DateSerial(Year(Date()),[月?]+1,1),
   DateSerial(Year(Date()),[月?]+1,1),[終了年月日]+[終了時間]))
・ツリー全体表示

【10818】Re:時間集計について
発言  まつ  - 08/12/2(火) 9:50 -

引用なし
パスワード
   >このクエリを開くと [月?] とパラメータを聞いてくるので
>月を入力して、指定した月の合計が出てるか確認してください。
>
>うまくいきましたら、[月?] の部分を、[Forms]![メニュー画面]![抽出月]
>に書き直してください。

こんにちは。
指摘にもありましたが、年度はあいまいにしてますが、2008年なら2008年だけ
集計するようにしています。年度で1つのデータベースで管理するつもりです。

で、この関数を入力してビューを開くと

式(Sum(Sum(DateDiff("n",
IIf([開始年月日]<DateSerial(Year(Date()),[月?],1),
   DateSerial(Year(Date()),[月?],1),[開始年月日]+[開始時間]),
IIf([終了年月日]>=DateSerial(Year(Date()),[月?]+1,1),
   DateSerial(Year(Date()),[月?]+1,1),[終了年月日]+[終了時間])))))
で集計関数を使用することは出来ませんと、出てしまいます...
この関数の意味が分からないのでちょっと調べてみます。
・ツリー全体表示

【10817】Re:複数条件からのレコード抽出
質問  tori  - 08/12/2(火) 8:32 -

引用なし
パスワード
   ▼Gin_II さん:
>> 各項目ですが
>> 曜日 = 平日or土日祝
>> 階数 = 1階or2階
>> 用途 = 通常or物販
>> 時間帯= 午前or午後or夜間or午前・午後or午後・夜間or全日
>> になります。
>>
>> どのようなVBAの記述をすればよろしいでしょうか
>
>テーブル構成次第では、ほぼVBAなしでもできそうな気がしますけど。
>上記のパターンをすべて網羅したテーブルを作成しておけば。
>
>曜日 階数 用途 時間帯 金額
>平日 1階 通常 午前  1000
>平日 1階 通常 午後  1100
>平日 1階 通常 夜間  1100
>      :
>
>のように。


アドバイスありがとうございます。
上記のテーブルを作成した場合はDLOOKUP関数など
を利用するのでしょうか。
リストから選択する場合ですと、判別するのが時間帯
になるので見にくくなるような気がするのですが。
よきアドバイスをお願いします
・ツリー全体表示

【10816】Re:複数条件からのレコード抽出
回答  Gin_II E-MAIL  - 08/12/2(火) 0:13 -

引用なし
パスワード
   > 各項目ですが
> 曜日 = 平日or土日祝
> 階数 = 1階or2階
> 用途 = 通常or物販
> 時間帯= 午前or午後or夜間or午前・午後or午後・夜間or全日
> になります。
>
> どのようなVBAの記述をすればよろしいでしょうか

テーブル構成次第では、ほぼVBAなしでもできそうな気がしますけど。
上記のパターンをすべて網羅したテーブルを作成しておけば。

曜日 階数 用途 時間帯 金額
平日 1階 通常 午前  1000
平日 1階 通常 午後  1100
平日 1階 通常 夜間  1100
      :

のように。
・ツリー全体表示

【10815】複数条件からのレコード抽出
質問  tori  - 08/12/1(月) 18:18 -

引用なし
パスワード
   Access初心者です。よろしくお願いします
現在、会議室の貸出台帳を作製しております。
入力ミスがないように、曜日・階数・用途・時間帯をそれぞれ
リストから入力上記の4つの条件に合致した利用金額を出すように
したいです。

各項目ですが
曜日 = 平日or土日祝
階数 = 1階or2階
用途 = 通常or物販
時間帯= 午前or午後or夜間or午前・午後or午後・夜間or全日
になります。

どのようなVBAの記述をすればよろしいでしょうか
アドバイスよろしくお願いします
・ツリー全体表示

【10814】Re:時間集計について
回答  hatena  - 08/11/30(日) 23:50 -

引用なし
パスワード
   > ここまでは良いのですが、これを月間での生産時間を算出しなくてはならなくなり
> クエリで[開始年月日]の抽出条件を
> Like "*/" & [Forms]![メニュー画面]![抽出月] & "/*"
> とし、フォームのメニュー画面の抽出月のコンボボックスから1〜12の
> どれかを選択するとその月のデータを抽出し、データで求めた分を合計
> するようにしています。

抽出条件が
Like "*/" & [Forms]![メニュー画面]![抽出月] & "/*"
ということは複数年度を含むと言うことでしょうか。
抽出付きが11の場合は、2008年11月,2007年11月, ・・・
すべて含む集計を出したいということですか。
それはあまりないと思いますので今年度の指定月ということで
回答しますね。違ってましたらご指摘下さい。


テーブルより集計クエリを作成して、下記のように設計します。

フィールド ロットNo   生産時間: ※1   開始年月日  終了時間
集計    グループ化  合計       Where 条件  Where 条件
抽出条件                  ※2      ※3

※1 に設定する式
Sum(DateDiff("n",
IIf([開始年月日]<DateSerial(Year(Date()),[月?],1),
   DateSerial(Year(Date()),[月?],1),[開始年月日]+[開始時間]),
IIf([終了年月日]>=DateSerial(Year(Date()),[月?]+1,1),
   DateSerial(Year(Date()),[月?]+1,1),[終了年月日]+[終了時間])))

※2 に設定する式
<DateSerial(Year(Date()),[月?]+1,1)

※3 に設定する式
>=DateSerial(Year(Date()),[月?],1)

このクエリを開くと [月?] とパラメータを聞いてくるので
月を入力して、指定した月の合計が出てるか確認してください。

うまくいきましたら、[月?] の部分を、[Forms]![メニュー画面]![抽出月]
に書き直してください。
・ツリー全体表示

【10813】Re:時間集計について
お礼  まつ  - 08/11/28(金) 18:49 -

引用なし
パスワード
   >([開始年月日]+[開始時間]) < (cdate("2008/09/01") + cdate("00:01"))
>and
>([終了年月日]+[終了時間]) > (cdate("2008/09/01") + cdate("00:01"))
>が成立する場合
>[開始年月日]+[開始時間]と[終了年月日]+[終了時間] が連続しているなら
>その期間の中に2008/09/01 00:01 は含まれます。
>(べた書き未検証なので間違ってたら勘弁ね)
>
>クエリのデザインで出来ませんかね?

なるほど・・・
もちろん上記のデータは日付型での記入になっています。
日付型で入力されていると数値変換できるのですね、知りませんでした。
数値変換できるのならば、普通にIIf分を使って月をまたいでいるデータか
どうかを確認できるわけですね、参考になりました。

一度やり方を考えてみて、クエリの方で作ってみます。
ありがとうございました。
・ツリー全体表示

【10812】Re:時間集計について
回答  neptune  - 08/11/28(金) 13:10 -

引用なし
パスワード
   ▼まつ さん:
こんにちは


>例えば入力されているデータが
>   [開始年月日]データが、2008/08/30
>   [開始時間]データが、12:00
>   [終了年月日]データが、2008/09/02
>   [終了時間]データが、12:00
>が入力されていた場合に
>2008/09/01 と 00:01 が入ってるという判断はどうしたら良いのでしょうか?
本当に↑のようなデータがDBの各フィールドに入っているとして話します。
これが表示はこうです。というだけの話なら下記の説明は根本的に違ってきます。
データ型は先に書いたように日付型の話です。

日付型データはdouble型の数値ですから足し算が出来ます。
「2008/08/30」は39690 、12:00は0.5です。

従って、
[開始年月日]+[開始時間]という演算は成立します。
([開始年月日]+[開始時間]) < (cdate("2008/09/01") + cdate("00:01"))
and
([終了年月日]+[終了時間]) > (cdate("2008/09/01") + cdate("00:01"))
が成立する場合
[開始年月日]+[開始時間]と[終了年月日]+[終了時間] が連続しているなら
その期間の中に2008/09/01 00:01 は含まれます。
(べた書き未検証なので間違ってたら勘弁ね)

クエリのデザインで出来ませんかね?
・ツリー全体表示

【10811】Re:ログイン画面について
発言  neptune  - 08/11/28(金) 13:07 -

引用なし
パスワード
   ▼波 さん:
こんにちは

先に書いたように
>これまでの情報では判りません。
です。基本的に
>1件だけでも出来たなら、それの繰り返しと思うんですが?
なので、私にはお手上げです。

波 さん実行しているソースが何をしているかを理解するともっと
具体的に質問できてアドバイスも受け易いと思うんですが。
5W1H的な質問の仕方がもっともアドバイスを受けやすいですよ。

ごめんなさい。私ではお役に立てそうもないです。
他の識者のアドバイスをお待ちください。
・ツリー全体表示

【10809】Re:時間集計について
質問  まつ  - 08/11/28(金) 12:30 -

引用なし
パスワード
   >(開始年月日 + 開始時間)の中に各月の始まりの日の0:01が入っているか
>(終了年月日 + 終了時間)の中に各月の終わりの日の23:59が入っているか
>を判断してはどうでしょう?

こんにちは。
例えば入力されているデータが
   [開始年月日]データが、2008/08/30
   [開始時間]データが、12:00
   [終了年月日]データが、2008/09/02
   [終了時間]データが、12:00
が入力されていた場合に
2008/09/01 と 00:01 が入ってるという判断はどうしたら良いのでしょうか?
・ツリー全体表示

【10808】Re:ログイン画面について
発言    - 08/11/28(金) 10:32 -

引用なし
パスワード
   ▼neptune さん:
>2007以前のAccessならnorthwindってサンプルDBがOfficeに付属していますが、
>これを良く見たら、大概解決しますから、一度ご覧になっては如何?

行ってみましたが、どこを参照したらいいか、ちょっと私には難しいようです。
・ツリー全体表示

【10807】Re:ログイン画面について
発言  neptune  - 08/11/27(木) 22:26 -

引用なし
パスワード
   ▼波 さん:

>自動入力されていくにはどうしたらいいでしょうか?
これまでの情報では判りません。
1件だけでも出来たなら、それの繰り返しと思うんですが?

2007以前のAccessならnorthwindってサンプルDBがOfficeに付属していますが、
これを良く見たら、大概解決しますから、一度ご覧になっては如何?
・ツリー全体表示

123 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1082858
(SS)C-BOARD v3.8 is Free