procedure TF_main.N14Click(Sender: TObject);
var
eclApp,workbook,range:variant;
sbtime:TDateTime;
v,Y5,Y10,Y15,Y50:string;//integer;
i,j:integer;
begin
     {。 。 。 。 。 。} 
      with Dataff do
      begin
        sqaddr_sql.close();
        sqaddr_sql.SQL.Clear;
        sqaddr_sql.SQL.Add('select oper.bh,oper.name,oper.wdbh,oper.jb,sign.sbtime from sign,oper where oper.jb=:jb and oper.bh=:bh and sign.oper=oper.bh');
        sqaddr_sql.Parameters.ParamByName('jb').value:=JB_user;
        sqaddr_sql.Parameters.ParamByName('bh').value:=BH_user;
        sqaddr_sql.Active:=true;
        sqaddr_sql.open;
        v:=trim(sqaddr_sql.fieldbyname('wdbh').asstring);
        sbtime:=sqaddr_sql.fieldbyname('sbtime').value;
      end;
      //上个班结转
      with dataff.kcsl_sql do
        begin
         close();
         SQL.Clear;
           SQL.text:='select sqaddr,guig,zpsl,kpsl from jbslb where sqaddr='+''''+v+''''+' group by sqaddr,guig,zpsl,kpsl';
         open;
         for i:=1 to dataff.kcsl_sql.RecordCount do
         begin
         dataff.kcsl_sql.RecNo:=i;//控制规格列表
         if trim(dataff.kcsl_sql.FieldByName('guig').AsString)='YSP-5' then
           begin
             eclapp.cells[4,2].font.size:=15;
             eclapp.cells[4,2]:=trim(dataff.kcsl_sql.FieldByName('zpsl').AsString);
             eclapp.cells[4,3].font.size:=15;
             eclapp.cells[4,3]:=trim(dataff.kcsl_sql.FieldByName('kpsl').AsString);
           end; 
          end;
         end;
      //本班销售数量
       with Dataff.gdb1_sql do
        begin
         begin
          close();
          SQL.Clear;
          SQL.Add('select guig,sum(shl) as sl6 from sqfy where wcdate>='+QuotedStr(datetostr(sbtime))+' and wcdate<=GETDATE() and sqaddr='+''''+v+''''+' group by guig');
          open;
         end;
          for i:=1 to gdb1_sql.RecordCount do
         begin
           gdb1_sql.RecNo:=i;
          if trim(gdb1_sql.FieldByName('guig').AsString)='YSP-5' then
             begin
               gdb1_sql.RecNo:=i;
               eclapp.cells[4,7].HorizontalAlignment:= xlCenter;
               eclapp.cells[4,7].font.size:=15;
               eclapp.cells[4,7]:=trim(gdb1_sql.FieldByName('sl6').AsString);
             end;         end;      
        end;
       //本班销售回单
        with Dataff.cust_sql do
        begin
         begin
          close();
          SQL.Clear;
          SQL.Add('select sqfy.guig,sum(sqfy.shl) as sll6 from cust,sqfy where cust.time_i>='+QuotedStr(datetostr(sbtime))+' and cust.time_i<=GETDATE() and cust.gqzh=sqfy.gqzh and cust.sqaddr='+''''+v+''''+' group by sqfy.guig');
          open;
         end;
          for i:=1 to cust_sql.RecordCount do
         begin
           cust_sql.RecNo:=i;
          if trim(cust_sql.FieldByName('guig').AsString)='YSP-5' then
             begin
               cust_sql.RecNo:=i;
               Y5:=trim(gdb1_sql.FieldByName('sll6').AsString);
               eclapp.cells[4,8].HorizontalAlignment:= xlCenter;
               eclapp.cells[4,8].font.size:=15;
               eclapp.cells[4,8]:=Format('=G4-%d',[Y5]);
             end;          end;      
        end;
      //本班移交
      with dataff.kcsl_sql do
             begin
              close();
              SQL.Clear;
                SQL.text:='select sqaddr,guig,zpsl,kpsl from slb where sqaddr='+''''+v+''''+' group by sqaddr,guig,zpsl,kpsl';
              open;
              for i:=1 to dataff.kcsl_sql.RecordCount do
              begin
              dataff.kcsl_sql.RecNo:=i;//控制规格列表
              if trim(dataff.kcsl_sql.FieldByName('guig').AsString)='YSP-5' then
                begin
                  eclapp.cells[4,9].font.size:=15;
                  eclapp.cells[4,9]:=trim(dataff.kcsl_sql.FieldByName('zpsl').AsString);
                  eclapp.cells[4,10].font.size:=15;
                  eclapp.cells[4,10]:=trim(dataff.kcsl_sql.FieldByName('kpsl').AsString);
                end;
              end; 
            end;             //保存上个班数据
             with dataff.jbslb_sql do
             begin
              begin
               Close();
                 SQL.Clear;
                 SQL.text:='select * from jbslb';
               open;
              end;
              if ((dataff.jbslb_sql.RecordCount<>0) and (HoursBetween(now(), sbtime)>10)) or (dataff.jbslb_sql.RecordCount=0) then
                begin
                 begin
                  Close();
                   SQL.Clear;
                   SQL.text:='delete from jbslb';
                  ExecSQL;
                 end;
                begin
                 Close();
                  SQL.Clear;
                  SQL.text:='insert into jbslb select sqaddr,guig,zpsl,kpsl,'+QuotedStr(datetostr(sbtime))+','+QuotedStr(DateTimeToStr(Now))+' from slb group by sqaddr,guig,zpsl,kpsl';
                 ExecSQL;
                end;
               end;
              end;
          {。 。 。 。 。 。}    
   end;
end;运行提示错误:..."Could not convert variant of type (null) into type (Double)"...找不出原因,大家帮分析一下,谢谢!!

解决方案 »

  1.   

    使用isnull(列名, 0)将null值转为0
      

  2.   

    你double类型数据为空。
    看你代码水知道你那个字段是double类型的?
    自己调试一下呗
      

  3.   

    你看看你那个变量是double型的,再检查赋给他的值是什么,null 不能转为double
      

  4.   

    大家看这种表示有问题吗?删除这个就没问题
    sbtime:TDateTime;sbtime:=sqaddr_sql.fieldbyname('sbtime').value;QuotedStr(datetimetostr(sbtime))SQL.Add('select * from cust where cust.time_i>='+QuotedStr(datetostr(sbtime));