with frmDM.ADOslt do
      begin
        close;
        sql.Clear;
        sql.Add('select max(OutDate)as OutDate from t_OutDetail');
        open;
      end;
      if frmDM.ADOslt.RecordCount>0 then
       parameters.ParamByName('@EndDate').Value :=frmDM.ADOslt.fieldbyname('OutDate').AsDateTime//出错的代码行
      else
        parameters.ParamByName('@EndDate').Value :=trunc(now)+1;上面的代码当t_OutDetail表中没有数据,查询出来的是Null,这时执行parameters.ParamByName('@EndDate').Value :=frmDM.ADOslt.fieldbyname('OutDate').AsDateTime会出错,显示'将数据类型转换为samlldatetime时出错'
判断条件得怎么写呢?

解决方案 »

  1.   

     我后来改成<>null判断了,这样写可以吗?
         if frmDM.ADOslt.FieldByName('OutDate').Value <>Null then
           parameters.ParamByName('@EndDate').Value :=frmDM.ADOslt.fieldbynam('OutDate').AsDateTime
          else
            parameters.ParamByName('@EndDate').Value :=trunc(now)+1;
      

  2.   

    怎么打开了记录集还要进行参数赋值??Select max(OutDate)...怎么会返回Null的呀??
    除非你OutDate这一列内容全都是空的...不过要判断,这样就行了:
     if frmDM.ADOslt.FieldByName('OutDate').isNull then
       showmessage('空资料')
      

  3.   

    fieldByName('xxx').isNull
    或者
    variants.varIsNull(fieldValues['xx'])