access数据库表AA
---------------------------------------------------------------------------------
ID----aa1----aa2----aa3----aa4----aa5----     计算方法           ----计算结果
 1---- 1 ---- 1 ---- 1 ---- 1 ---- 1 ---- aa1+aa2+aa3+aa4-aa5    ----     4
 2---- 1 ---- 2 ---- 3 ---- 4 ---- 5 ---- aa5-aa1+aa2+aa3-aa4    ----     5
 3---- 1 ---- 5 ---- 6 ---- 2 ---- 3 ---- aa1*aa2*aa3*aa4-aa5    ----     57
 4---- 1 ---- 2 ---- 3 ---- 4 ---- 5 ---- (aa4-aa2)+(aa2+aa3)-aa4----     3--------------------------------------------------------------------------------
ID为自动编号,aa1-aa5为数字,通过存储在数据库里的计算方法,计算出计算结果用delphi如何实现?
如果计算方法是固定的倒是可以实现 ,但这种变动的计算方法,不知道如何实现 ,请各大师指点下如果是固定的我是这样写的SELECT aa1,aa2,aa3,aa4,aa5,aa1+aa2+aa3+aa4-aa5 as 计算结果 FROM AA有没有办法可以直接提取里面的值作为计算select里的计算方法?如:SELECT aa1,aa2,aa3,aa4,aa5,函数(计算方法)as 计算结果 FROM AA这个函数可以提取对应的行的计算方法,如第一行,就出来
SELECT aa1,aa2,aa3,aa4,aa5,aa1+aa2+aa3+aa4-aa5 as 计算结果 FROM AA而第二行就会自动变成 
SELECT aa1,aa2,aa3,aa4,aa5,aa5-aa1+aa2+aa3-aa4 as 计算结果 FROM AA以些类推谢谢各位,不胜感激!!

解决方案 »

  1.   

    还是写存储过程吧,如果是access,那就自己代码实现吧
      

  2.   


    我是用delphi,但就是不知道如何实现,如果用循环,太大了,几千条数据,以后还会不断增加,我怕执行起来,速度 会超级的慢,因为还有其它的数据要调用和读写数据表
      

  3.   

    你可以直接打开记录集。 得到  第一行,然后用REPLACE来替换 [计算方法] 字符串中的 aa1, aa2,aa3,aa4,aa5  形成一个代数式。比如 3---- 1 ---- 5 ---- 6 ---- 2 ---- 3 ---- aa1*aa2*aa3*aa4-aa5取到  aa1*aa2*aa3*aa4-aa5, 然后用 replace (" aa1*aa2*aa3*aa4-aa5", "aa1","1" ...
    则可以行到字符串式 1*5*6*2-3之后再调用一次查询 select 1*5*6*2-3 就得以结果了。
      

  4.   

    建议采用3楼的方法。
    我也有过类似的需求,我的计算公式字段比楼主的还要复杂,还要接收外部参数呢,也是用了替换的方式,最终实现的。SQLSERVER要方便一些。
      

  5.   

    而且替换过来也是字符串类型的,无法计算,要用select的话,我测试过,只能显示一条,不能全部显示