运行TableName.Open出错?原因有哪些?(50分)

  • 主题发起人 主题发起人 wangyuguo
  • 开始时间 开始时间
W

wangyuguo

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠:

我编程序时遇到一怪问题:TableName.Open之后弹出EAccessViolation错误

if TableName.State<> dsInActive then TableName.Close;
TableName.EmptyTable;
TableName.Open; // error on here!!!

请问引起此错误的原因通常有哪些?

急!!!!!!

 
首先各属性设置不正确会出错,databasename,tablename,tabletype等等。
----还是把前后相关原码贴出来吧,别让人猜。
 
paradox表,程序中有两个函数SET1,SET2

SET1,SET2中都有上述语句,为改表赋值,SET1中没问题
调用SET2时出错!

procedure SET1
begin
if TableName.State<> dsInActive then TableName.Close;
TableName.EmptyTable;
TableName.Open;
......
TableName.Append;
.....
TableName.Post;
end;

procedure SET2
begin
if TableName.State<> dsInActive then TableName.Close;
TableName.EmptyTable;
TableName.Open;
......
TableName.Append;
.....
TableName.Post;
end;

 
将table1.exclusive:=true了吗?????
 
我这样测试没有问题呀! 你在调用Set1后Set2前还有什么代码???

if TableName.State<> dsInActive then TableName.Close;
TableName.EmptyTable;
TableName.Open;
TableName.Append;
TableName.FieldByName('Test').AsInteger:=22;
TableName.Post;

if TableName.State<> dsInActive then TableName.Close;
TableName.EmptyTable;
TableName.Open;
TableName.Append;
TableName.FieldByName('Test').AsInteger:=22;
TableName.Post;
 
还有调用一个函数里面也清空Table,但没打开
if TableName.State<> dsInActive then TableName.Close;
TableName.EmptyTable;


 
或许错误使bde不好、操作系统不好、编译器不好(打了补丁吗)
 
首先感谢各位大侠:

原因找到了,因为我的Table中定义了一个Boolean字段,与DBCheckBox相连,又定义了DBCheckBox的Click事件,问题出在对表操作时自动调用Click事件,只好定义一个全局变量,在打开表时给变量赋值,不让执行Click事件,等表赋好之后再改变量值允许执行Click

方法笨了些,谁有好方法不吝赐教!
 
在对表操作时将DBCheckBox.OnClick:=nil;
等表赋好之后将DBCheckBox.Onclick:=YouClickEvent;//你的事件
 
后退
顶部