奇怪,捕捉不到!

华昌001 2005-02-27 04:57:35
try

if not dm.table.Active then dm.table.Open;
dm.table.Filter:='确认时间<''2002-1-1''';
dm.table.Filtered:=true;
label1.Caption:='满足条件的记录数: '+inttostr(dm.table.RecordCount);

except

showmessage('过滤条件错误!');
exit;

end;

上代码中,当表的过滤条件不合法时,程序崩溃,
except段捕捉不到异常,为什么???

如何判断过滤条件的合法性,有什么好的方法?请求帮助!!!
...全文
117 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
madyak 2005-02-27
  • 打赏
  • 举报
回复
在IDE中,出现异常时,默认设置,会先提示系统原始异常信息,然后才是自定义的提示信息.
madyak 2005-02-27
  • 打赏
  • 举报
回复
DELPHI中的ADODB单元有一些BUG,
function TCustomADODataSet.LocateRecord(const KeyFields: string;
const KeyValues: OleVariant; Options: TLocateOptions;
SyncCursor: Boolean): Boolean;
var
Fields: TList;
Buffer: PChar;
I, FieldCount: Integer;
Partial: Boolean;
SortList, FieldExpr, LocateFilter: string;
begin



except
Result := False;
//加上下面这句raise
raise;
end;
end;

重新编译再看看,应该是这的问题
华昌001 2005-02-27
  • 打赏
  • 举报
回复
为什么在IDE中不行,能给点提示吗?
华昌001 2005-02-27
  • 打赏
  • 举报
回复
我用ADO,有什么关系吗?
madyak 2005-02-27
  • 打赏
  • 举报
回复
你是用ADO还是BDE?
cyp207 2005-02-27
  • 打赏
  • 举报
回复
我用你的代码,能正常扑获错误啊,有提示过滤条件不合法
你不要在delphi的环境下运行,这样确实会先提示一次系统报的错误,你直接双击运行那个编译好的程序运行。就会出现你写的提示,进入except代码段了
chinaliu123 2005-02-27
  • 打赏
  • 举报
回复
可以单步运行一下,看看在什么地方跳出的.
XXSingle 2005-02-27
  • 打赏
  • 举报
回复
一般 在dm.table.Filter:='确认时间<''2002-1-1''';之前都要
dm.table.Filtered:=False;

否则第二次过滤将会出错,其它的不解
华昌001 2005-02-27
  • 打赏
  • 举报
回复
自己顶一下
华昌001 2005-02-27
  • 打赏
  • 举报
回复
也不行啊!没有showmessage('过滤条件错误!');

有没有更好的方法判断过滤条件的合法性。
madyak 2005-02-27
  • 打赏
  • 举报
回复
不要在IDE中运行,真接运行EXE看看怎么样?

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧