我在做一个数据库(用的是Access)程序时碰到一个问题:我在form2中有一个计算列的值,需要在form7的report中显示出来,可又不是直接显示,当值为负时,取绝对值显示,当值为正时,不显示。我在写程序时,已经将Unit2写到了Unit7的Uses语句中来,但在QrExpr中Expression的Data Field中看不到选项,我该怎么解决这个问题?这个计算列的值需要在Unit7中重新计算一次吗?还是保存到表中去?请给我一个好方法!

解决方案 »

  1.   

    你在form7(unit7)的状态下,点击file,然后在菜单里点击use unit,然后把unit2引如即可!!
    给分把
      

  2.   

    其实你可以不用计算字段。
    直接在sql里控制
     select (case field1 where field1<0 then field else field end) as field1 from table;
      

  3.   

    直接把你的表达式或者字段名写进Expression中,如果有数据模块要写模块名。试试吧!!
      

  4.   

    To My_first(海浪):
      我没有太明白你的意思,该计算字段已经有了,只是在报表中无法显示的问题,你写的SQL句子,似乎和显示没什么关系,我写Delphi不太久,请教!
      

  5.   

    To jianke5555(剑客):
      直接写试过了,没有用,不能识别。用Data Moduel一样没用。各位自己用一个简单例子试一下吧,关键是Data Field选项里找不到该计算字段呀
      

  6.   

    是这个样子的。只有在当前form里,计算字段才可以有。在其它模块就找不到该计算字段。
      

  7.   

    看来只有重新计算了...有其它方法吗?help me~
      

  8.   

    其它也有办法的。你在报表的form 定义
    public
    s:integer; //定义一个变量。 用于存放你要放的值。你是想每一条记录都有一个计算字值,还是最后合计
      

  9.   

    兄弟,我前几天也碰到过这种问题,QrExpr中Expression的Data Field只显示报表上控件的字段,你虽然引用了前一个unit,但还是不会显示的。我也是初学者,所以再编程方面我没有更好的办法,就告诉你一个笨法吧,用group分组显示数据,再报表中加入你用到的控件,最好通过唯一标识的索引控制分组显示每一个数据,使报表中的数据都对应它上面控件的显示字段,然后在QrExpr中Expression写入表达式,这样就差不多了。祝成功。
      

  10.   

    //设置一个DataModal,将结果写入公有的Query1中
    With dm.query1 do
    begin
    close;
    sql.clear;
    //将Form2中的计算值直接写入语句中
    if StrToInt(Edit1.Text) < 0 then
      sql.add(' Select SumMoney = -1 * ' + Edit1.Text )
    else
      sql.add(' Select SumMoney = '');
    sql.add(' Field2 ,Field3  From Table ');
    open;
    end;在Form7中引用DataModal
    并在报表中直接使用显示SumMoney字段就可以了
      

  11.   

    To: My_first(海浪)
      是每一条记录都有一个计算字段值谢谢各位,我需要试一下,如果方法成功就结贴送分
      

  12.   

    To: Devidzhang(e_风)
    不知道你说的小问题是什么样的
    你上Msn与我联系吧
    [email protected]
    我白天都在线写程序