用户在TDBEdit里更改内容的时候,如果DataSet的State,不是dsEdit,dsInsert会报错,请问怎么捕捉这个错误!?

256m 2002-12-14 03:56:16
用户在TDBEdit里更改内容的时候,如果DataSet的State,不是dsEdit,dsInsert会报错,请问怎么捕捉这个错误!?

一个变通的方法是在录入窗口打开、数据集提交之后就dataset.edit,但总觉得不爽!
另一个方法是Field,SetText时,强行DataSet.edit,这样对录入窗口上的TDBComboBox、TDBCheckBox等没有用!

请问各位是怎样解决这个问题的!谢谢!
...全文
168 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
256m 2002-12-15
  • 打赏
  • 举报
回复
zybegin(talaha):这种方法我从来没有用过,能不能详细点?
zybegin 2002-12-14
  • 打赏
  • 举报
回复
首先在你的单元中(TDataSetCreaker=class(TDataSet))可以用TDataSetCreaker(对象)这样对你的数据集做任何修改。
256m 2002-12-14
  • 打赏
  • 举报
回复
SilveryFox(一天一点爱恋......) :说过了,不行!
SilveryFox 2002-12-14
  • 打赏
  • 举报
回复
在dbeditchange()
begin
if table1.state not in [dsedit,dsinsert] then
table1.edit
end;;
256m 2002-12-14
  • 打赏
  • 举报
回复
如果主表进入编辑状态,还后把主表的连接字段的值改了怎么办?
mrfanghansheng 2002-12-14
  • 打赏
  • 举报
回复
怎么解决主从表的问题?!你是说关联查询修改?
256m 2002-12-14
  • 打赏
  • 举报
回复
lws0472: 我也想到这个,也不行,在提示dataset not in edit,insert state时,不会去Post!
256m 2002-12-14
  • 打赏
  • 举报
回复
请各位,继续关注,mrfanghansheng(***Rocket***) 的方法还是可以,但是怎么解决主从表的问题?!
lws0472 2002-12-14
  • 打赏
  • 举报
回复
将lywbj(lywbj)的代码写在BeforePost中。
256m 2002-12-14
  • 打赏
  • 举报
回复
根本不行。
首先数据集要进入了Edit状态,才会触发BeforeEdit事件!
256m 2002-12-14
  • 打赏
  • 举报
回复
先试试!谢谢。
lywbj 2002-12-14
  • 打赏
  • 举报
回复
在TDBedit关联的数据集对象的BeforeEdit事件中加入如下代码
procedure TForm1.ADOTable1BeforeEdit(DataSet: TDataSet);
begin
if not (DataSet.State in[DSedit, Dsinsert]) then
DataSet.Edit;
end;
mrfanghansheng 2002-12-14
  • 打赏
  • 举报
回复
我们一般有个按钮或菜单是“编辑”,然后在其中得事件中写代码设置dataset.edit。

或者是在DataSet的afteredit事件中写代码

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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