ADOQuery4.Close;
ADOQuery4.SQL.Clear;
ADOQuery4.SQL.Add('select max(s0+s1+s2) as ST from jp_yxm inner join JP_DHFXJL on jp_yxm.wid=JP_DHFXJL.wid where js<=:YXJS and js>=:YXJSB and jp_yxm.wid=:LogName');
ADOQuery4.Parameters.ParamByName('YXJS').Value:=yxjs;
ADOQuery4.Parameters.ParamByName('YXJSB').value:=yxjsb;
ADOQuery4.Parameters.ParamByName('LogName').Value:=LogName;
ADOQuery4.Open;
ss:=ADOquery4.fieldbyname('ST').AsFloat; //求出ST的值经过测试,如果在sql语句中直接对YXJS,YXJSB,LogName赋值,则ADOquery4.fieldbyname('ST').AsFloat可以取到值。
但按照上面的语句,ADOquery4.fieldbyname('ST').AsFloat取到的值为空,为什么呢
感觉好像是sql中的yxjs,yxjsb,LogName变量没有被赋值
ADOQuery4.SQL.Clear;
ADOQuery4.SQL.Add('select max(s0+s1+s2) as ST from jp_yxm inner join JP_DHFXJL on jp_yxm.wid=JP_DHFXJL.wid where js<=:YXJS and js>=:YXJSB and jp_yxm.wid=:LogName');
ADOQuery4.Parameters.ParamByName('YXJS').Value:=yxjs;
ADOQuery4.Parameters.ParamByName('YXJSB').value:=yxjsb;
ADOQuery4.Parameters.ParamByName('LogName').Value:=LogName;
ADOQuery4.Open;
ss:=ADOquery4.fieldbyname('ST').AsFloat; //求出ST的值经过测试,如果在sql语句中直接对YXJS,YXJSB,LogName赋值,则ADOquery4.fieldbyname('ST').AsFloat可以取到值。
但按照上面的语句,ADOquery4.fieldbyname('ST').AsFloat取到的值为空,为什么呢
感觉好像是sql中的yxjs,yxjsb,LogName变量没有被赋值
或者试一下:
ADOQuery4.Parameters.ParamValues['YXJS']:=yxjs;
ADOQuery4.Parameters.ParamValues['YXJSB']:=yxjsb;
ADOQuery4.Parameters.ParamValues['LogName']:=LogName;
简单说就是只要S0、S1、S2中的某条记录中的任意一个为空,那么ST就得到空值要解决可以用以下方法max(s0+s1+s2) as ST
--->>>
max(ISNULL(s0,0)+ISNULL(s1,0)+ISNULL(s2,0)) as ST