Delphi 快速报告变量中的赋值

Delphi 快速报告变量中的赋值,delphi,delphi-xe2,fastreport,Delphi,Delphi Xe2,Fastreport,嗨,我是德尔福的新手,我正在为新雇用的员工创建报告。我正在使用Fast Report、Delphi XE2和Firebird数据库 我在为变量的值编写条件时遇到问题。 我希望变量的值被处理为一个值,例如“如果EDU_COLL_备注字段值为空,则高中毕业”。和大学毕业生,如果它有价值的话。。就像我一样 if dmapp.sqtrans.parambyname('EDU_COLL_REMARK').IsNull then dmapp.frxReport1.Variables['edu

嗨,我是德尔福的新手,我正在为新雇用的员工创建报告。我正在使用Fast Report、Delphi XE2和Firebird数据库

我在为变量的值编写条件时遇到问题。 我希望变量的值被处理为一个值,例如“如果EDU_COLL_备注字段值为空,则高中毕业”。和
大学毕业生
,如果它有价值的话。。就像我一样

if dmapp.sqtrans.parambyname('EDU_COLL_REMARK').IsNull then
        dmapp.frxReport1.Variables['edu'] := QuotedStr('HIGH SCHOOL GRADUATE');
else
   dmapp.frxReport1.Variables['edu'] := QuotedStr('COLLEGE GRADUATE');
但它不起作用。它返回一个

错误SQTrans:未找到参数EDU\u COLL\u备注

怎么了?请帮帮我

这是我的全部代码:

dmApp.sqTRANS.SQL.Clear;
   dmApp.sqtrans.SQL.Add('Select s.SKILLS_NAME, c.CUST_NAME, e.FULL_NAME, e.REFER_1NAME, e.HIRE_DATE, e.AGE, e.HEIGHT_FEET, e.HEIGHT_INCH, e.EDU_COLL_REMARK, e.TEST_1TITLE, e.SEC_EXPERIENCE_YEARS, e.CELL_NO, e.ADDRESS_LINE FROM EMPLOYEE e INNER JOIN CUSTOMER c ' +
                        'on e.CUST_NO=c.CUST_NO ' +
                        'FULL JOIN SKILLSTABLE s on e.SKILLS_NO=s.SKILLS_NO ' +
                        'WHERE EXTRACT(MONTH FROM HIRE_DATE) = :M_HIRE_DATE ' +
                        'AND EXTRACT(YEAR FROM HIRE_DATE) = :Y_HIRE_DATE ' +
                        'order by HIRE_DATE DESC');
    dmApp.sqTRANS.ParamByName('M_HIRE_DATE').AsString := FormatDateTime('MM', dpdate.Date);
    dmApp.sqTRANS.ParamByName('Y_HIRE_DATE').AsString := FormatDateTime('yyyy', dpdate.Date);
     if dmapp.sqtrans.parambyname('EDU_COLL_REMARK').IsNull then
        dmapp.frxReport1.Variables['edu'] := QuotedStr('HIGH SCHOOL GRADUATE');
else
dmapp.frxReport1.Variables['edu'] := QuotedStr('COLLEGE GRADUATE');
    dmApp.sqTRANS.ExecSQL();

    dmApp.frxDBDataset1.DataSet := dmApp.sqTRANS;
    dmApp.frxReport1.LoadFromFile('c:\vitech3\NewlyHired.fr3');
    dmapp.frxReport1.variables['COMPANYNAME'] := QuotedStr(Globals.GetCompanyName);
    dmapp.frxReport1.variables['COMPANYADD'] := QuotedStr(Globals.GetCompanyAddr + ' Cubao, Quezon City');
    dmapp.frxReport1.variables['CAPTION'] := QuotedStr('Newly Hired Report for ' + FormatDateTime('MMMM', dpdate.date) + ' ' + FormatDateTime('yyyy', dpdate.date));

    dmApp.frxReport1.ShowReport();

EDU\u COLL\u MARK
不是查询的“参数”;参数是以“:”为前缀的项目

但是,从查询中返回所需的值。请看一看
案例。。当Firebird文档中出现
时。这将向您展示如何从查询中返回条件值

SELECT
 CASE EDU_COLL_MARK
   WHEN NULL THEN 'HIGH SCHOOL GRADUATE'
   ELSE 'COLLEGE GRADUATE'
 END AS EDU
FROM ...
--------------或许

SELECT
 CASE COALESCE(EDU_COLL_MARK, '')
   WHEN '' THEN 'HIGH SCHOOL GRADUATE'
   ELSE 'COLLEGE GRADUATE'
 END AS EDU
FROM ...

谢谢,先生,但是我发现了一个新的错误,它说:Dbexpress驱动程序不支持TDBXtypes.UNKNOWN数据类型。供应商错误消息。未知ISC错误0。这是什么意思?哦!你已经改变了答案。我会再试一次。嗨,先生,我运行了你的代码,它只显示大学毕业生。即使是另一个为null的雇员,也会返回相同的值。如果没有一些示例数据,我无法再为您提供任何帮助。只是为了更容易地查看发生了什么,您可以尝试返回变量EDU_COLL_MARK,然后返回CASE语句的结果。这可能会告诉你你得到了什么,这样你就可以找出问题所在。