问一个DBEdit问题

siaosa 2003-08-20 07:43:32
用DBEdit在修改一个字段时,如果用户输入的数据不符,如何恢复原来的数据?

我是用ADO连接数据表的,并且采用了缓存模式,且DBEdit1的Field是一对多关系中的主表中的关联字段。
试了以下几种方法都不行
我在OnExit中输入如下代码
if xxxxxxxxxxxxx then
begin
DBEdit1.SetFocus;
DBEdit1.Refresh; //让DBEdit1显示未修改前的数据,这样不行。
ShowMessage('输入的数据重复,请重新输入');
end;


改成
if XXXXX then
begin
DBEdit1.SetFocus;
DBEdit1.Text:=DBEdit1.Field.OldValue;
DBGridEh1.Refresh;
ShowMessage('您输入的数据重复');
end;
end;
执行这段代码报错:
Project Project1.exe raised exception class EDatabaseError with
message 'ADODataSet1:Dataset not in edit or insert mode'. Process
stopped. Use Step or Run to continue.

改成
if XXXXX then
begin
DBEdit1.SetFocus;
DBEdit1.DataSource.DataSet.Refresh;
DBEdit1.DataSource.DataSet.Edit;
ShowMessage('输入的数据错误,请重新输入');
end;
end;
执行这段代码报错:
Project Project1.exe raised exception class EDatabaseError with
message '缺少更新或刷新的键列信息。'Process stopped. Use Step or
Run to continue.


该怎么办呐?大侠们帮着来看看。
...全文
41 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
siaosa 2003-08-21
  • 打赏
  • 举报
回复
现在是可以恢复旧的数据,但却影响了主从表关系。当输入新的值后,从表跟着变化。用上面的代码恢复DBEdit1的值,从表却不变回来,变成DBEdit与从表不能够保持关联。
XXSingle 2003-08-21
  • 打赏
  • 举报
回复
用wellshddelphi(wellshd) (的方法:
f XXXXX then
begin
DBEdit1.SetFocus;
DBEdit1.text:=ADOquery.parambyname('字段名').asstring;
//直接去数据表中提取值;
ShowMessage('输入的数据错误,请重新输入');
end;
可以搞定,只是提取当前行的某个字段值,没有影响主从表关系。
你的主从表不能保持关联,肯定另有其它原因。
如果真的不行,就用个变量吧,在onenter事件中记录原始值,
输入不正时,再还原
siaosa 2003-08-21
  • 打赏
  • 举报
回复
用ayukowa(野狼)的方法,每次open后DBEdit只显示表中的第一笔数据,旧的数据全部丢失
用 wellshddelphi(wellshd)的方法,从表却不能够与主表保持关联。
wellshddelphi 2003-08-20
  • 打赏
  • 举报
回复
我赞成 ayukowa(野狼)做法;

不过你也可这样试试:
if XXXXX then
begin
DBEdit1.SetFocus;
DBEdit1.text:=ADOquery.parambyname('字段名').asstring;
//直接去数据表中提取值;
ShowMessage('输入的数据错误,请重新输入');
end;

Cipherliu 2003-08-20
  • 打赏
  • 举报
回复
up
ayukowa 2003-08-20
  • 打赏
  • 举报
回复
if xxxxxxxxxxxxx then
begin
DBEdit1.SetFocus;
adoquery1.close;
adoquery1.open; //这样试试。
ShowMessage('输入的数据重复,请重新输入');
end;
xiehua822 2003-08-20
  • 打赏
  • 举报
回复
你的EDIT位置不对啊,因在事件发生之前就EDIT吗
huojiehai 2003-08-20
  • 打赏
  • 举报
回复
用缓存提交啦

2,495

社区成员

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

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