语句:frxReport1.Variables['l1']:=edit1.Text;
通过窗体上的文本框输入数据,给报表中的变量l1付值,从而显示在报表中,
但是当输入数字时可以,输入字符或汉字时,引发异常。不知道什么原因,如何解决,
请指点,在线等。万分感谢!!!

解决方案 »

  1.   

    汗,这就是喜欢用系统自动转换的后果……
    你具体是什么东西就要指定是什么类型的,最好是明确的传入数据……
    MS的东西喜欢用VARIANT型的变量,如果不加以指定就会产生类似的后果(你这个不是MS的东西,但据你的写法来看,也是利用VARIANT变量产生的后果)
      

  2.   

    TO:seekuface(seekuface)
    不好意思,您讲的“你具体是什么东西就要指定是什么类型的,最好是明确的传入数据……”,是不是说指定报表中变量的类型?那又如何指定呢,我一直没找到,请指教
      

  3.   

    就是你需要传入的类型总有一个具体类型吧?
    将这个类型值明确的指定,然后再按这种类型传入即可……
    BORLAND关于数据库的一般都有AsString,AsInteger之类的东西,用这个转换一下,尽量不要使用系统转换或是VARIANT型的变量(效率又低又容易出错)……
      

  4.   

    TO:seekuface(seekuface)
    看来fastreport中,变量默认是数值类型的。但我又不知道怎样在fastreport中设置变量的类型。
    直接用下面的语句仍然报错
    frxReport1.Variables['l1'].AsString:=l1.Text;
      

  5.   

    你看看其PARAMS[x].后面有没有东西?一般在PARAMS或类似的东西里都有设置变量类型的……
      

  6.   

    用这个试试 frxReport1.Script.Variables['l1']:=edit1.Text;
      

  7.   

    最好是先检查edit1.text是的值是不是数值,如果不是就给它赋默认值
    frxReport1.Variables['l1'] := StrToIntDef(edit1.text, 0);