• ベストアンサー

Accessで計算式を挿入

テーブルで、A・B・Cのフィールドがあります。 C=A/(B/100)^2 という式があります。 この場合、更新クエリを使ってCのフィールドに値を入れるしかないのでしょうか。 もともとあるテーブルを元にフォームを作成しました。 このフォームを使って、AとBを入力すれば自動的にCに値が入る、という事をイメージしていたのですが行き詰っています。 式ビルダは使用してみたのですが、データが反映されません。 元のテーブルCフィールドには式はなく、ただ数値があるだけです…。 どんな作業が足りないのでしょうか。 もしくは別な方法がよいのでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

クエリで新フィールドに計算式を入れて、C=A/(B/100)^2のフィールドを作ります その後「クエリのテーブル化」をすれば何のことはないのでは。 ただクエリで済むものをテーブル化は普通はしません。 やり方は、クエリのデザインの画面で、メニュのクエリーテーブルの作成-テーブル名を指定-OKー実行ー確認に答える、でよいのでは。

white_lily01
質問者

お礼

回答ありがとうございました。 こんな機能があったとは…。シンプルにできるのですね。 とても参考になりました!! 助かりました。

その他の回答 (4)

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

通常は演算結果をテーブルに保存する必要は他の方がいうように必要ありません。しかしテーブルに保存したいというのであれば >フォームを使って、AとBを入力すれば自動的にCに値が入る 簡単にやるには そのフォームの演算結果が表示されるテキストボックスをCではなくべつの名前にします。例えばC1 C1に演算する式をいれます。AとBに入力するとC1に演算結果が表示されるようにしておきます。 フォームにレコードの保存ボタンを作り下記を追加します。 Me![C] = Me![C1] これでテーブルのCというフィールドにC1の値を保存できます。 保存ボタン(例Cmd1)を作ると下記のイベントが書かれます。そのイベントに1行追加でOKです。 Private Sub Cmd1_Click() On Error GoTo Err_Cmd1_Click   Me![C] = Me![C1] 'この部分を追加 DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 Exit_Cmd1_Click: Exit Sub Err_Cmd1_Click: MsgBox Err.Description Resume Exit_Cmd1_Click End Sub これで保存できます。フォーム上のTextBoxをCではなくC1にするのはMe![C] = Me![C]ではエラーが出てしまうので別の名前C1にしておきC1をCに保存させるようにしてエラーを回避するためです。 フォームを閉じるボタンを作っても同様に記述すれば出来ます。

white_lily01
質問者

お礼

回答ありがとうございました。 フォームに入力した数値をテーブルに保存することができました。 とても参考になりました!先に進めそうです。

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

基本的には、計算で求めることができるものは、テーブルに持つ必要がありません。 必要なときに、クエリ等で計算させればいいので。 どうしても、お望みのことを実現したいのなら、マクロなりVBAなりを 使う必要があります。 マクロなら、値の代入アクション。 VBAなら代入式を使ってください。

white_lily01
質問者

お礼

回答ありがとうございました。 マクロやVBAが使えるといろいろ方法が出てきますね。 今はまだ理解できていないのですが、少しずつ勉強していこうと思います。

  • TAK_999
  • ベストアンサー率43% (42/96)
回答No.2

テーブルはAとBのみとして、新規にクエリーを作成してはいかがですか? 新規作成するクエリーで、AとBはそのまま表示し、Cという項目名で、A/(B/100)^2の計算結果を表示させます。 こうすれば、既に作成済みのフォームでもデータテーブル名を変更するだけで済みます。 テーブルは値を格納する器ですから、動的に値が変化するような計算式の定義は無理ではないかと思います。

white_lily01
質問者

お礼

回答ありがとうございました。 クエリーでも作成してみました。 テーブルやクエリーの役割についてもまだまだ勉強不足です。 参考書片手にがんばろうと思います~。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

フォームで良いならフィールドA及びBの更新後イベントに C=A/(B/100)^2 を設定すれば変更できます。

white_lily01
質問者

お礼

回答ありがとうございます。 更新後イベントというと、イベントプロシージャを利用するのでしょうか。 用語すらよくわかっていない状況で申し訳ありません…。 ヘルプ読みながら進めてみます。

white_lily01
質問者

補足

プロパティのデータ、コントロールソースに式を入れたら、行いたい作業は進めることができました! まだまだ知識が足りないのでいろいろ調べてみます。 ありがとうございました。

関連するQ&A

専門家に質問してみよう