• ベストアンサー

アクセス: フォーム上で計算した数字をテーブルに保存したい。

 こんばんは。また質問させてもらいます・・。 これがアクセスに関して、最後の質問になるようにしたいです!!  さて、フォームに入力したものは自動的にテーブルに保存されます。 しかし、フォーム上で計算したものは、テーブルに反映されていませんでした。 過去の質問にフォーム上計算したものは、テーブルに反映されないということがわかりました。 では、一体どうすればいいのでしょうか。  フォームのコントロールソースには =([QTY]*[COST]) 数量*値段を入れています。 どうすれば、テーブルに表示できるでしょうか。 ご教授お願いいたします。 過去の質問は、こちらを参考しました。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1002073

質問者が選んだベストアンサー

  • ベストアンサー
  • laputart
  • ベストアンサー率34% (288/843)
回答No.6

クエリーを覚えると便利です。 テーブル=オペレーターが入力したりする項目 クエリー=テーブルのデータプラスそれから計算出来るさまざまな項目 例えばQTYとCOSTはテーブルに 合計は 合計:[QTY]*[COST} というようにクエリーに追加すれば、テーブルに 合計という項目を持つ必要がありません。 テーブルの「合計」を削除しても差支えありません。 また入力日という項目をテーブルに持ち 後の整理の目的でクエリーには 年:Year([入力日]) 月:Month([入力日]) などとする事も可能です。 これで何年何月のデータだけを抽出したい場合でも クエリーの抽出条件に 2004 とか 8(月)とかを 入力するだけでOKです。 合計、平均、最大、最小なども.... データベースはクエリーにあるレコードをいちいち保存するのではなく、計算式だけを覚えていて、開くたびに 計算して表示してくれるだけなのです。

hamptoninn
質問者

お礼

お返事が遅くなって申し訳ありませんでした。 丁寧な回答ありがとうございました。 無事、出来ました!

その他の回答 (5)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.5

>Me![AMOUNT]=Me![AMOUNT] フォームのフィールド名を変更してください。テーブルのフィールド名と同じだとエラーになります。 フォームのフィールド名を例えばAMOUNT1にしてAMOUNT1のソースに=([QTY]*[COST]) を記述し Me![AMOUNT]=Me![AMOUNT1] で保存できます。 >金額とは? 例えば演算させるフィールド名が金額の場合

hamptoninn
質問者

お礼

お返事遅くなり申し訳ありませんでした。 なんとか、出来上がりました。 不具合が出ないよう、願うだけです。 ありがとうございました。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.4

どうしてもテーブルに反映したいのであれば フォームの閉じるボタンやレコードの保存ボタンに記述を追加すれば出来ます。 Me![テーブルのフィールド名] = Me![フォームのフィールド名] をイベントプロシジャに追加します。ボタンをクリックされたときにそのイベントと一緒にフィールドの値がテーブルに反映されます。 またはフォームのフィールドの変更時のイベントに Private Sub 金額_Change() テーブルのフィールド名 = ([QTY]*[COST]) End Sub フォームのフィールドのコントロールソースはテーブルのフィールドにしてください。 これでも出来るはずです。

hamptoninn
質問者

補足

アドバイスありがとうございました。 1つ目の Me![テーブルのフィールド名] = Me![フォームのフィールド名] をやってみましたが、エラーになりました。 Me![AMOUNT]=Me![AMOUNT] にしてみましたが、無理でした。 2つ目のPrivate Sub 金額_Change()についてですが 金額ってなんでしょう? これは、金額じゃなくても何でも良いんでしょうか? それとも決まっているのでしょうか? 私のアクセスは、英語版なので、日本語は読み込めないと思いますので、気になりました。 回答よろしくお願いします。

  • laputart
  • ベストアンサー率34% (288/843)
回答No.3

既に解説があるように、アクセスの場合はテーブルは出来るだけ節約して、他のフィールドの値を利用した 計算結果はクエリーに設定するようにする方が ファイルサイズの節約にもなり便利です。 クエリーの作り方 クエリー→新規作成→指定のテーブルを選択→ 全部選択のボタンを押す→クエリーの名前を決める クエリーのデザインを開く 列を追加(あるいは空白の列に フィールド名:([QTY]*[COST]) 数量*値段 としてヴューを見てください。これで新しくフィールド名が表示されると思います。 ここまでの作業で不具合があれば連絡してください。

hamptoninn
質問者

補足

丁寧な解説ありがとうございました。 言われたとおりすれば、出来ました! しかし、私が言い忘れていたことがあります。 「=([QTY]*[COST]) 」これを、「合計」というフィールドに表示したいのです。 でも、新しいフィールドが出来てしまって、そちらに保存となってしまいます。 私が望んでいることは無理でしょうか? >計算結果はクエリーに設定するようにする方が ファイルサイズの節約にもなり便利です。 なるほど。ちっとも知りませんでした。 先ほど、一通り注文票に入力してみたところ、クエリにも情報が保存されていました。 全ての情報も、テーブルよりクエリで保存した方が、いいのでしょうか。 もう少しだけお願いします。

回答No.2

テーブルにデータがあるかのように使いたいのであれば、クエリを作成して、数量×値段のフィールドを追加すれば問題ありません。

hamptoninn
質問者

補足

回答ありがとうございました。 やってみたところ、できましたが、同じ名前のフィールドに保存したいのです。 フォーム:合計(数量×値段の答えが表在される所) テーブル:合計 テーブルの合計に保存したいのですが、できませんでした。

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.1

> フォーム上で計算したものは、テーブルに反映されていませんでした。 > そもそも、テーブルに持たせる必要がないです。 のとおりなんですが (^^ゞ 何か、テーブルに持たせたい理由があるのでしょうか?

hamptoninn
質問者

補足

こんにちは。 いつもありがとうございます。 >何か、テーブルに持たせたい理由があるのでしょうか? 最終的には、アクセスからエクセルへ情報を飛ばし、エクセルで情報を管理したいようです。 そのときに、コマンドボタンでエクセルにインポートのボタンを作りましたが、合計金額は、エクセルに反映されていませんでした。 よって、せめてテーブルにはすべての情報を保存したいと思ったからです。 無駄でしょうか・・・?

関連するQ&A

  • アクセス2000フォームからテーブルへ計算結果映し出す方法

    テーブルのフォームは 単価 数量 合計の順です 合計フォームに[単価]*[数量]入れたいのですが フォーム内では計算不可能!と過去ログ読んで勉強しました。 フォームでデザイン>合計のテキストで プロパディ>コントロルソースで =[単価]*[数量]と 書き込み 操作すると フォームの合計欄には=[単価]*[数量]の答えがでてきます。 喜んで テーブル開けると合計フォームは「空欄」のまま・・・ ここで 質問ですが フォームで合計欄には=[単価]*[数量] と 設定しても テーブルには 合計は 反映されないのでしょうか? もし 反映できる式?がありましたら ご教授下さい。 あと フォーム内 テキストボックス 非連結を連結に するには どうしたらよいのでしょうか? お願い します。

  • ACCESS2000 フォームとテーブル

    カテゴリを間違っていたので再度ご質問致します。 ACCESSのフォームなんですけど、 フォームとサブフォームがあり、サブフォームの数量の合計をフォームの合計に表示するように出来たのですが、 表示ではなく、テーブルに保存される形にしたいのですが・・。 テーブル T_(1) (1)No. (2)企業名 (3)合計 フォームのレコードソースは、T_(1)です。 今のやり方では、フォームで見ると表示されてますが、 テーブルの合計には保存されてません。 どうすればよいでしょうか? 今は、コントロールソースに、=[サブフォーム名].![テキスト名] にしています。

  • ACCESSのテーブルとフォーム

    大変失礼ですが、いきなり質問です。よろしくお願いします。 テーブルに「受注データ」 フォームに「入力画面」というのを作ってあります。 そのフォームの一部に「商品金額」・「送料」・「消費税」・「合計金額」というテキストボックスがあります。それぞれのコントロールソースには単純にテーブルのデータを使うようにしてありますが・・・・・・「合計金額」のコントロールソースに「商品金額」・「送料」・「消費税」の合計を計算してくださいというような設定をしてしまったら、フォーム上ではしっかり計算をして表示してくれたのですが、テーブルの「合計金額」の列は空白になってしまいます。 テーブルの列が空白ではなく、フォームで表示されたその数値をテーブルの列に戻す?返す?という事を設定するにはどうしたら宜しいのでしょうか?是非ご教示下さいます様お願い申し上げます。ちなみにACCESS2000を使用しています。なぜかVBAの画面でヘルプを開こうとするとインストールされていないみたいで開かないんです。(←これ、余談です。すみません。)

  • アクセスのフォーム

    アクセスでウィザードを利用して入力フォームを作りました。 当初はテーブルにあるデータがフォームにも反映されていたのですが、いろいろといじっているうちに、フォームのデータが消えてしまいました。コントロールソースをいじってみたのですが、直りませんでした。 フォームにも、テーブルのデータを反映させるためにはどこを直したらよいか教えて下さい。よろしくお願いします。

  • Access2007 フォームでの計算結果をテーブルに反映させるには?

    ビスタでAccess2007を使っています あるテーブルにA~Dまでのフィールドが設定されています。 フォームでフィールドA.Bは手入力して C.Dには計算式を設定して計算結果を表示させていますがテーブルに反映されません。 (フォームにはきちんど式通りの答えが表示されますがテーブルのフィールドC.Dは空っぽです。) 例 A・・・10,000 B・・・0.1 C・・・1,000(計算式 A*B) D・・・9,000(計算式 A-C) フォーム上で行った計算結果をテーブルに入力反映させるにはどうすればよいでしょうか? テーブルやフォームの作り方が悪いのか? 計算式の設定が悪いのか? なぜテーブルに反映しないのか理由がわかりません。 そもそもフォーム上での計算はテーブルには反映しないのか? だとすれば反映させるにはどうすればよいのでしょうか? テーブルのフィールドに計算式を設定することは出来るのでしょうか? 出来るとすればその方法は? 疑問だらけでどうすれば求める結果が得られるのかさっぱり解りません。 当方Access2007は初心者も同然ですのでわかりやすく解説して戴ければ幸いです。 よろしくご教授ください。

  • Access97フォームで計算したものをテーブルに入力したい

    Access97で受注管理のデータベースを設計中です。 フォームのテキストボックス[税込金額]のコントロールソースに =Int([税抜金額]*[消費税率]*0.01+[税抜金額]) という式を入れました。 はたと気がついたら、基になるテーブルの[税込金額]には当然 (コントロールソースじゃなくなってしまったから)そこで 計算された値は更新されません。 テーブルにその値を更新したいのですが、そのためにはどのように すればよろしいでしょうか? 基になるテーブルに[税抜金額][消費税率][税込金額]という項目が あります。で、フォームを使用して入力時に税抜き金額を入力し、 消費税率を入力すると税込金額が小数点切り捨てで自動で入力される という風に組めればフォームの中で計算できなくてもフォームで値が 表示されればかまいません。 要領を得ない質問でスミマセン。お手数ですが教えてください。

  • アクセスでフォームに入力した計算式がテーブルに反映する方法

    アクセス2000テーブルからフォームをつくり、このファームに計算式を定義しました。このフォームに入力する分には計算式が機能するのですが、テーブルには計算結果が反映しません(数値が0になってしまいます)。 どうしたらテーブルに反映できるのでしょうか。

  • アクセスでの、フォームとテーブルの連動の方法を教えてください

    初歩の初歩だと思うのですが、教えてください。 アクセスで、テーブルのフィールドと全く同じ内容でフォームを作りました。(受講生情報の管理) その中で「性別番号」と「性別」があり、(「性別番号」と「性別」は、別にテーブルを作っています)フォーム上では「性別番号」に番号(男なら1、女なら2)を入力すると「性別」に自動で値が入るように設定できたのですが、テーブルに反映されません。(フォームの「性別」のプロパティのコントロールソースに”DLOOKUP~”を入力しました) テーブル上にも同じように反映させるには、どうすればよいのでしょうか。 同様の質問と思われるものを参考にいろいろとやってみたのですが、どうもうまくいかなくって・・・ よろしくお願いします。

  • アクセス2002の年齢表示の方法について

    先ほど質問させていただきまして参考になるご回答をいただきましたが、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1001826 さらに質問させていただきます。 フォームの中で年齢を計算するためには どのような手順で操作を行えばよろしいのでしょうか? 何度やってもうまくテーブル等に反映されません。 計算式のいれるところが違うのか、 それとも根本的に間違っているのかがわかりません。 デザインビューのタブに直接式を入力したり、 プロパティの「規定値」や「入力規則」に式を入力したりしましたが だめでした。 どうぞよろしくお願いします。

  • フォームの計算がテーブルに反映するには?

    Windows2000/ACCESS2000を使用してます。 フォームで自動的に合計や消費税が計算されるように設定しましたが、保存されたテーブルを見てみると合計や消費税は空白になっていて計算された値が入力されてませんでした。 フォームでの計算式は以下のように設定しました。 合計のフィールドを選んで、プロパティを開きその中のデータタブのコントロールソースに式ビルダーで、 =A+B と設定しました。フォーム上では計算されるの ですが・・・ どのようにしたらテーブルに計算された値が表示されるのでしょうか? 宜しくお願いします。

専門家に質問してみよう