在有些工资管理软件里,动态设置工资是怎样实现的?就是从很都的条件中,用户根据需要选择出一些条件,
比如:用户自己设定一个计算工资条件:[如果][工龄]>=20[并且][工龄]<=30[那么][基本工资]=800[否则][基本工资]=600怎样转换成程序语句:
 if gl>=20 and gl<=30 then
   jbgz=800
 else jbgz=600;如果不转换成程序语句,他们是怎么实现这个功能的?
请各位高手说说实现方法,最好你给点程序,请发到[email protected]

解决方案 »

  1.   

    都是通过SQL来实现的,我做这个的。
      

  2.   

    to all:
       能不能具体说说你们的方法,最好给点大概的代码
      

  3.   

    楼主同志,是动态生成SQL,不是生成程序语句。简单地说,每个自定义项目就是一个字段,然后用SQL对这些字段进行各种运算。
      

  4.   

    adoquery1.sql.add(select jbgz from table_jbgz where gl>=:gl_1 ann gl<=:gl_2)
    adoquery1.parameters.parambyname('gl_1').asinteger:=strtoint(trim(edit1.text))
    adoquery1.parameters.parambyname('gl_2').asinteger:=strtoint(trim(edit2.text))
    adoquery1.open;
      

  5.   

    to sduzjw:
        上面只是随便的一个组合,要上象你这样,那就不知道要写多少个语句了!!
      

  6.   

    用一个SQL语句或者存储过程就可以搞定..
    程云的那个SQL中好像就有这些东西..你下一个..
    www.playicq.com上面应该就有..
    其实就是一大堆计算..
    如果一个条件为空的话就当做1来看..
      

  7.   

    to hansion3406:
       '程云的那个SQL中好像就有这些东西..你下一个..'  在那里?
      

  8.   

    根据用户动态定义公式计算东西的时候,只能通过相关的数据结构存储公式,然后再根据公式形成sql条件
      

  9.   

    这很简单的
    代码如下
    var
      sStr:String;
    if trim(edit1.text) <> '' then
      sStr := sStr +'gl > '''+value+'''';
    if trim(edit2.text) <> '' then
      sStr := sStr + 'jbgz >'''+value+'''';
    if ...
    这样你应该明白了吧,根本不需要组合的
    如果还不明白发信息给我