アプリ版:「スタンプのみでお礼する」機能のリリースについて

ACCESS2010初心者です。

フォームで日付を入力して、
その日の合計仕入金額を表示させたいのですが、
何をどうしたらいいのかが分かりません・・。

一応、合計仕入金額を出すクエリはできています。


勉強をしながら作成していて、
本当に初心者で申し訳ないですが・・ご回答頂けると幸いです。

よろしくお願い致します。

「ACCESS フォームで日付を入力して金」の質問画像

A 回答 (6件)

同じフォーム上に検索キーと検索結果を表示するには


VBAが必要です。
従って今回は【メニュー】フォーム上には日付のみとし
結果はクエリー【集計】で表示することにします

情報の不足部分を補足してお答えします。
1.日付を指定するフォーム名を【メニュー】
2.日付のボックス名を[日付]
3.仕入金額のテーブルを【仕入履歴】
4.これには、[仕入日][仕入金額]のフィールドが含まれている

以下の【】内はマウス操作だけで作業が進みます。
【集計】クエリーの作成
1.【作成】⇒【クエリウィザード】⇒【選択クエリウィザード】
 ⇒【OK】⇒【仕入履歴】⇒【仕入日】⇒【仕入金額】
 ⇒【仕入日】⇒【>】⇒【仕入金額】⇒【>】⇒【次へ】
 ⇒【集計する】⇒【集計のオプション】⇒【仕入金額合計】
 ⇒【次へ】⇒【完了】
以上で、出来た【仕入履歴クエリ】を開くと
日付毎に集計された、一覧表になります。
次に、この一覧からフォームに入力された日付に絞り込みます。
2.【仕入履歴クエリを右クリック】⇒【デザインビュー】
 ⇒【仕入日の抽出条件行で右クリック】⇒【ビルト】
 ⇒【アクセスのファイル名の左端の+】
 ⇒【フォームの左端+】⇒【すべてのフォームの左端+】⇒【メニュー】
 ⇒【日付をダブルクリック】

次にメニューフォーム上に【仕入履歴クエリを開くボタンを】を配置します。
【メニューを右クリック】⇒【デザインビュー】
 ⇒【ボタン】⇒【配置位置】⇒【その他】⇒【クエリの実行】⇒【次へ】
 ⇒【次へ】⇒【完了】

以上で完成ですが、日付ボックスの書式を日付にすると、
実行時マウスポインタを近づけるとカレンダアイコンが表示され、
カレンダ入力になります。
 【メニューを右クリック】⇒【デザインビュー】
 【日付ボックス】⇒【書式タグ】⇒【書式欄の右端の▼日付】⇒【日付】
 
 
「ACCESS フォームで日付を入力して金」の回答画像6
    • good
    • 0

極力 VBA 無しで考えています。


お手数ですが、以下の様にしてください。

空のデータベースを選択し、ファイル名は適当につけます。
新規テーブル画面は閉じます。
リボンの外部データタブからAccessを選択。
インポートのファイル名は右の「参照(R)」から選択。
(下の選択肢は、現在のデータベースに・・・を選択)
ファイルの選択ウィンドウで今までのファイルを選択。
OKで次に進みます。
インポートウィザードに従って
テーブル・クエリまではすべて選択。
フォーム・レポート・モジュールは何も選択しません。

これでインポートが終了しますので
フォームを新規作成して前回回答#2を見つつ試してください。
「ACCESS フォームで日付を入力して金」の回答画像5
    • good
    • 0

うまくできない・・


では何もわかりません。
どうやって、どうなったか詳しく状況を説明してください。

てーぶる・・うんぬんはそちらの実際の名前が不明だったので
仮にという意味ですので以降は実際の名前でやり取りしましょう。
差しさわりがあるようであれば変更しても構いません。

テーブル名= △
フィールド名=△、データ型=△
以下フィールド名とデータ型の列挙

△を埋めてください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
申し訳ないです。

テーブル名= てーぶる
フィールド名=仕入金額 データ型=通貨型
フィールド名=日付   データ型=日付/時刻型


クエリ名= てすと★
------------------------------------------
SELECT Sum([てーぶる].仕入金額) AS 仕入金額の合計
FROM てーぶる
GROUP BY [てーぶる].日付
HAVING ((([てーぶる].日付)=[Forms]![在庫調達チーム]![日付選択]));
------------------------------------------


仕入金額のコントロールソースに、
=iif(isnull([日付選択]),0,nz(DSum("仕入金額","てーぶる","日付=#" & [日付選択] & "#"),0))
を入力するとエラーが以下のように表示されます。

------------------------------------------
この関数をコンパイルするときにエラーが発生しました。

Visual Basic モジュールに構文エラーがあります。
コードをチェックし、再コンパイルしてください。
------------------------------------------


何度もすみませんが、よろしくお願い致します。

お礼日時:2014/02/20 16:22

#1です。



表示ボタンを右クリックし、
コードビルダーで開くと、「表示ボタン」をクリックしたときに発生するイベント
(表示ボタン_Click)
が表示されます。

この中に先のコードをコピーすれば、

表示ボタンがクリックされたときに、コードが実行されます。
    • good
    • 0
この回答へのお礼

ありがとうございます。

コードを追加すると、
------------------------------------------
指定した式の構文が正しくありません。

たとえば、演算子がないときにオペランドを指定しています。
------------------------------------------

とエラーがでてしまいます・・・。

お礼日時:2014/02/20 14:31

大元のテーブル名を「てーぶる」、


「てーぶる」の合計したいフィールド名を「仕入金額」、
合計条件に使用したいフィールド名を「日付」とした場合。

上のコントロール名を日付から日付選択にします。
名前変更はプロパティの「その他」タブにあります。
コントロールの書式を、yyyy/m/d とします。
(日付選択カレンダーがフォームビューで表示されるようになります)

下のコントロール(名前は仕入金額?)のコントロールソースを
データタブから
=iif(isnull([日付選択]),0,nz(DSum("仕入金額","てーぶる","日付=#" & [日付選択] & "#"),0))
にしてください。

フォームビューに切り替えて、
日付選択欄に手入力か、右に出ている日付選択カレンダーから日付を選択し
Enter キーを押すと合計金額が現れます。

なお、日付選択が未入力、該当の日付でデータが無い場合は、ゼロ を表示するようにしています。
これで求められない場合は、合計仕入金額を出すクエリのSQL文を提示してください。
(SQL文はクエリのデザインビュー上で右クリックから切り替えられます)
「ACCESS フォームで日付を入力して金」の回答画像2
    • good
    • 0
この回答へのお礼

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

私が何か間違っているか不備があるかで、
うまくできませんでした。

何度も申し訳ないです・・。


クエリのSQL文は以下です。

SELECT Sum([てーぶる].仕入金額) AS 仕入金額の合計
FROM てーぶる
GROUP BY [てーぶる].日付
HAVING ((([てーぶる].日付)="Forms]![在庫調達チーム]![日付選択]"));

お礼日時:2014/02/20 12:00

合計仕入れ金額を算出するクエリをデザインモードで開いて、



仕入日付の抽出条件欄で、右クリック→ビルド
mdb(accdb)→Forms→読み込まれたフォーム→該当フォーム(Form1かな?)で、
日付のコントロール(txt日付)をダブルクリック

上枠に、テキストボックス(txt日付)が表示されるので、そのままOK。

これで、入力した日付で抽出可能なクエリが完成

そのクエリは、テーブル作成クエリですか?


テーブル作成クエリなら、クエリ実行でテーブルが出来ているので、そのテーブルのフィールドを表示すればよい。

----
表示ボタン_Clickに


Docmd.Setwarning false
DoCmd.OpenQuery "クエリ"
Docmd.SetWarning true

txt仕入額 = Dsum("仕入額","作成されたテーブル名")

---

流れはこんな感じですが、いかがでしょうか。
    • good
    • 0
この回答へのお礼

分かりやすい回答ありがとうございます。
とても助かります。

質問なのですが、

以下の文は何処に入力したらいいのでしょうか?

Docmd.Setwarning false
DoCmd.OpenQuery "クエリ"
Docmd.SetWarning true

txt仕入額 = Dsum("仕入額","作成されたテーブル名")

お礼日時:2014/02/19 17:01

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