问一个DBEdit问题
用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.
该怎么办呐?大侠们帮着来看看。