Delphi 筛选ADOTable错误-“;无法将Null类型转换为OleStr类型;

Delphi 筛选ADOTable错误-“;无法将Null类型转换为OleStr类型;,delphi,tadotable,Delphi,Tadotable,我正在尝试筛选一个ADOTable,以查找字段“OwnerName”值与GUI组件编辑中的值匹配的记录。当输入一个不存在的名称时,会出现上述错误。当数据库中没有与过滤器匹配的名称时,我只希望dbgrid不显示任何内容,如何做到这一点?还是个傻瓜,有人能启发我吗 使用的代码: 如果tbl_owners['OwnerName']=null,那么的目的是什么?我试图测试它是否为null,但仍然得到异常错误,并且if没有异常。我需要有关如何正确实现此代码的帮助。请尝试使用VarToStr(tbl_own

我正在尝试筛选一个ADOTable,以查找字段“OwnerName”值与GUI组件编辑中的值匹配的记录。当输入一个不存在的名称时,会出现上述错误。当数据库中没有与过滤器匹配的名称时,我只希望dbgrid不显示任何内容,如何做到这一点?还是个傻瓜,有人能启发我吗

使用的代码:


如果tbl_owners['OwnerName']=null,那么
的目的是什么?我试图测试它是否为null,但仍然得到异常错误,并且if没有异常。我需要有关如何正确实现此代码的帮助。请尝试使用VarToStr(tbl_owners['OwnerName'])='then或varisnll(tbl_owners['OwnerName']),但为什么要测试当前记录的字段是否为空?@Olivier,我无法在
tbl_owners处将null类型转换为OleStr类型。筛选:=true
当我输入一个名称或
edt\u name\u过滤器时。text
ss的值。
procedure TOwners.edt_Name_FilterChange(Sender: TObject);
begin
  Filter;
end;
//-----------------------------------------------------------
procedure TOwners.Filter;
begin
  if edt_Name_Filter.text = '' then
  begin
    CarOwners.tbl_Owners.Filtered := false;
    exit;
  end;

  with CarOwners do
  begin
    tbl_Owners.Filtered := false;
    tbl_Owners.Filter := 'OwnerName LIKE ''' + '%' + edt_Name_Filter.text +
      '%' + '''';
  if tbl_owners['OwnerName'] = null then
  begin
    tbl_owners.filter := '';
  end;
    tbl_Owners.Filtered := true;
  end;
end;