プロが教えるわが家の防犯対策術!

テーブルで、A・B・Cのフィールドがあります。
C=A/(B/100)^2
という式があります。

この場合、更新クエリを使ってCのフィールドに値を入れるしかないのでしょうか。

もともとあるテーブルを元にフォームを作成しました。
このフォームを使って、AとBを入力すれば自動的にCに値が入る、という事をイメージしていたのですが行き詰っています。
式ビルダは使用してみたのですが、データが反映されません。
元のテーブルCフィールドには式はなく、ただ数値があるだけです…。

どんな作業が足りないのでしょうか。
もしくは別な方法がよいのでしょうか。
よろしくお願いします。

A 回答 (5件)

クエリで新フィールドに計算式を入れて、C=A/(B/100)^2のフィールドを作ります


その後「クエリのテーブル化」をすれば何のことはないのでは。
ただクエリで済むものをテーブル化は普通はしません。
やり方は、クエリのデザインの画面で、メニュのクエリーテーブルの作成-テーブル名を指定-OKー実行ー確認に答える、でよいのでは。
    • good
    • 3
この回答へのお礼

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

お礼日時:2005/06/21 21:20

通常は演算結果をテーブルに保存する必要は他の方がいうように必要ありません。

しかしテーブルに保存したいというのであれば

>フォームを使って、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に保存させるようにしてエラーを回避するためです。
フォームを閉じるボタンを作っても同様に記述すれば出来ます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/06/21 21:09

基本的には、計算で求めることができるものは、テーブルに持つ必要がありません。



必要なときに、クエリ等で計算させればいいので。

どうしても、お望みのことを実現したいのなら、マクロなりVBAなりを
使う必要があります。

マクロなら、値の代入アクション。
VBAなら代入式を使ってください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/06/21 14:37

テーブルはAとBのみとして、新規にクエリーを作成してはいかがですか?


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

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

お礼日時:2005/06/21 14:33

フォームで良いならフィールドA及びBの更新後イベントに


C=A/(B/100)^2
を設定すれば変更できます。

この回答への補足

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

補足日時:2005/06/21 11:54
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/06/21 10:55

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

このQ&Aを見た人はこんなQ&Aも見ています