class function Dal.GetAccList(conn: TAdoConnection): TList;
var
 DbAcc:TDbAccount;
 rsAcc:_Recordset;
 AccLst:TList;
begin
  AccLst:=TList.Create;
  rsAcc:=conn.Execute('select * from SYS_DBACCOUNTS',cmdText);
  while not rsAcc.EOF do
  begin
          DbAcc:=TDbAccount.Create;
          DbAcc.SysDbAccountID := rsAcc.Fields['SYS_DBACCOUNTSID'].Value;
          DbAcc.DbName := rsAcc.Fields.Item['DBNAME'].Value;          if rsAcc.Fields['SQLVERSION'].Value<>null then
          begin
            DbAcc.SqlVersion := rsAcc.Fields['SQLVERSION'].Value;
          end;       
         if  rsAcc.Fields['ISCURRENTACC'].Value = NULL then 
         begin
          DbAcc.IsCurrentAcc:=rsAcc.Fields['ISCURRENTACC'].Value;
         end
          AccLst.Add(dbAcc);
          rsAcc.MoveNext;
  end;
  Result:=AccLst;
end;如果数据库中所有记录的字段为空,就不报错,不然就会出错现在我的看法是,那个值因为是一个变体,如果数据库中本身为空了,反回NULL,NULL可以与NULL进得逻辑运算,如果有值,返回的是一个整数,进行逻辑运算就报错了,请问怎么解决这个问题

解决方案 »

  1.   

    if rsAcc.Fields['ISCURRENTACC'].Value = EmptyParam then这样试试.
      

  2.   


    if VarIsEmptyParam(rsAcc.Fields['ISCURRENTACC'].Value) then
      

  3.   

    字段值是Variant類型,你判斷NULL用這個函數試試:
    if VarIsNull(rsAcc.Fields['ISCURRENTACC'].Value) then
    ....
      

  4.   

    if adoquery1.fieldbyname('字段名').isNull then ...
      

  5.   

    if adoquery1.fieldbyname('字段名').isNull then ...
    正解