プロが教える店舗&オフィスのセキュリティ対策術

初めて質問させていただきます。よろしくお願いします。

下記のような3フィールドのテーブルを使って、クエリで演算結果を表示したいのですが、
文字列を式として認識させる方法がわかりません。
教えていただけますでしょうか。

a,b,siki
----------------
1,2,=[a]*100+[b]
1,2,=[b]-3
1,2,=[a]-700

質問者からの補足コメント

  • うまく説明できずすみません。

    ID,a,b,sikiという4つのフィールドを持つテーブルを元に
    下記のような結果となるクエリを作りたいのです。
    数式を簡単に変更できるようにテーブルに保存しようと考えています。

    テーブル
    ID  a  b  siki
    1   1  2  [a]*100+[b]
    2   2  2  [b]-3
    3   2  4  [a]-700

    クエリ実行結果
    ID  kekka
    1   102
    2    -1
    3    -698

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/05/24 14:32

A 回答 (3件)

あまりこういう事はやらないと思うのですが、やってできない事もないので・・・


まず、標準モジュールに以下を記述しておきます

Public Function myCalc(vSrc, ParamArray vA()) As Variant
  Dim sS As String
  Dim i As Long

  myCalc = Null
  If (VarType(vSrc) <> vbString) Then Exit Function
  sS = vSrc
  For i = LBound(vA) To UBound(vA) Step 2
    sS = Replace(sS, vA(i), Nz(vA(i + 1), 0))
  Next
  On Error Resume Next
  myCalc = Eval(sS)
End Function

上記関数をクエリから呼び出し利用します。

補足にあったテーブル名を ★★ と仮定します
クエリのSQLビューに以下を記述し、表示してみてどうなりますか

SELECT ID, myCalc(siki, "[a]", a, "[b]", b) AS kekka FROM ★★;


※ myCalc の  "[a]", a, "[b]", b 部分は、
sikiに記述している置換え文字列, その値 順のペアで何個でも記述できます。
また、a、b の順は問いません
    • good
    • 0
この回答へのお礼

標準モジュール部分は全く理解できていないまま使わせていただきました。
結果、思っていた通りのことが実現できそうです。

感謝します。ありがとうございました。

お礼日時:2015/05/27 14:22

#1です。


テーブルの中に式を保存する、ということですが、アクセスはデータベースであり、表計算ソフト
であるエクセルとは異なりますのでそのようなことはできないと思います。

テーブルはテーブルとして保存しておき、必要な処理(や計算)をクエリでやるという仕組みでは
ないかと。
あくまでテーブルはデータを格納しておくだけのもの、
で、計算などが必要ならばその都度クエリで求める、という形だと思います。

お書きのことをやろうとするならば、強いて言うなら以下。

テーブル
ID  a  b
1   1   2
2   2   2
3   2   4

で、クエリを作るときのフィールドとして、

ID   kekka:IIF([ID]=1,[a]*100+[b],IIF([ID]=2,[b]-3,[a]-700))

とするのではないかと思います。
(実用的ではないけど無理やり作ってみました)

詳しい方の回答が付くとよいですね。
    • good
    • 0

ご質問の意図と合っているか分かりませんが、



siki:[a]*100+[b]

コロンの前に表示したいフィールド名
コロンの後ろに式
この回答への補足あり
    • good
    • 0

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

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


このQ&Aを見た人がよく見るQ&A