我要改变数据库的编辑状态,但为何老出错!!请高手指点迷津!!!
1.我做的数据库程序中,Table1先前处于Table1.ReadOnly:=True;状态,我想用
Table1.Active:=False;
Table1.ReadOnly:=False;
Table1.Active:=False;
Table1.Active:=True;
Table1.Edit; 来将其转至编辑状态。
....在执行到 Table1.Edit;时弹出异常:exception Class EDBEngineError,"rec
ord locked by another user。...",结果状态没有得到改变,Edit没有成功,还是,Table1.State=dsBrowse。请问:这是什吗原因?如何解决?
2.再有,我想在DBGrid中进行纪录修改,但是发现除了第一行外纪录字段可以改变,唯有
第一行不可更改,还弹出异常。“record locked by another user。...”,请问这又是为什么?
3.如何在DBGrid中一个纪录被改变后,在转入下一个记录前提醒用户是否提交(post)修改,而不是系统不加提醒,非显式的执行 post 方法?
....
问题点数:25、回复次数:22Top
1 楼C_Sharp(www.borlan.net)回复于 2001-07-02 07:51:14 得分 10
1.你设置ReadOnly时,应该先Close,不知你是怎么做的。
2.可能还是跟第一条有关吧
3.在BeforePost中写代码Top
2 楼InsideDelphi(ID)回复于 2001-07-02 08:22:08 得分 0
可能由另外一个程序打开了表单。Top
3 楼C_Sharp(www.borlan.net)回复于 2001-07-02 08:48:24 得分 0
to InsideDelphi(ID)
这样的错误很常见,一般情况下是真的出错,而不是另外一个程序打开了表单。 Top
4 楼VictorG()回复于 2001-07-02 09:14:15 得分 10
beforescroll事件里提醒用户是否提交修改
procedure TForm1.Table1BeforeScroll(DataSet: TDataSet);
begin
if Table1.State in [dsInsert, dsEdit] then
//提醒用户是否提交修改
end;
Top
5 楼Apollo47(阿波罗)回复于 2001-07-02 09:36:40 得分 0
也许你正在修改表的字段,你把所有的其他的程序全关闭。
Top
6 楼machin(刷新一下)回复于 2001-07-02 09:55:07 得分 0
要确定该表只有一个application在修改它。
可能是有多个连接了。。Top
7 楼oysy(太阳之子)回复于 2001-07-02 09:58:30 得分 0
第一,是不是有其它用户在使用.
第二,是不是你同是在编程序,而源程序打开了数据库.Top
8 楼everydayniceday(大卫)回复于 2001-07-02 10:01:50 得分 0
我只有一个程序使用此数据表单,但这个程序中有两个窗体要用到此表单。但我认为这只是
在同一个程序内使用,没有问题吧?
再有,我的两个使用此表单的不同窗体并不同时出现,都是在一个被Close后,才调用
Application.CreateForm()生成另一个,窗体被Close前,需要显式的调用Table.Close 吗?
如果不显式的调用,Table处于什么状态?
Top
9 楼everydayniceday(大卫)回复于 2001-07-02 11:16:56 得分 0
有可以回答上面问题的吗?
为什么我在改变Table的状态后(Table.Edit),后来又莫名其妙的给变回原来
状态(Table.state=dsBrowse)?Top
10 楼everydayniceday(大卫)回复于 2001-07-02 11:40:39 得分 0
有可以回答上面问题的吗?Top
11 楼C_Sharp(www.borlan.net)回复于 2001-07-02 13:16:52 得分 5
如果你是Free,就不需要再调用了,如果只是Close,还需要显式调用。Top
12 楼everydayniceday(大卫)回复于 2001-07-02 13:17:21 得分 0
为什么我在改变Table的状态后(Table.Edit),后来又莫名其妙的给变回原来
状态(Table.state=dsBrowse)? Top
13 楼everydayniceday(大卫)回复于 2001-07-02 13:41:08 得分 0
“如果你是Free,就不需要再调用了,如果只是Close,还需要显式调用。 ”好像很有道理!
如果我只是Close,哪么Table处于什么状态?对同一程序的其他的窗体有什么影响?Top
14 楼everydayniceday(大卫)回复于 2001-07-02 14:22:12 得分 0
????Top
15 楼dhl2001(暗夜行路)回复于 2001-07-02 15:20:24 得分 0
ddddTop
16 楼everydayniceday(大卫)回复于 2001-07-02 15:58:23 得分 0
Table.Edit;方法使用起来问题很多,状态老变,害的我的程序在使用Table.state
判断的地方老不能按我想要的流程走。请问,Table.Edit;方法的正确使用方法?Top
17 楼everydayniceday(大卫)回复于 2001-07-03 09:48:22 得分 0
Table.Edit;方法使用起来问题很多,状态老变,害的我的程序在使用Table.state
判断的地方老不能按我想要的流程走。请问,Table.Edit;方法的正确使用方法? Top
18 楼everydayniceday(大卫)回复于 2001-07-03 09:52:36 得分 0
凡是Move,Next,Prior,Insert,Append等函数都改变了Table.State属性为dsBrowse. ”这句话对吗?
Table.Edit;方法使用起来问题很多,状态老变,害的我的程序在使用Table.state
判断的地方老不能按我想要的流程走。请问,Table.Edit;方法的正确使用方法?
这个问题如何解决?
Top
19 楼disonlee()回复于 2001-07-03 14:58:40 得分 0
我觉得你的问题太乱了,而且没有将你现在的源代码写清楚,干脆MAIL TO ME。
E-MAIL:ledison@21cn.com,定给你完满答复!Top
20 楼arrong(真的汉子)回复于 2001-07-04 15:08:20 得分 0
我觉得你的问题太乱了,而且没有将你现在的源代码写清楚,应当更清楚/Top
21 楼ylk_pop(文不达)回复于 2001-07-05 09:20:57 得分 0
一个最简单的方法:重新启动计算机。一步一步按照规范来做,你会发现什么问题都没有!Top
22 楼everydayniceday(大卫)回复于 2001-07-06 16:04:19 得分 0
我已经知道了。谢了各位Top




