一个问题,有关(dbgrid) (50分)

  • 主题发起人 主题发起人 monkyy
  • 开始时间 开始时间
M

monkyy

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟做的是个3层的系统,在dbgrid中编辑某个值后由于这个字段为主键,所以不能有重复,我在编写保存按钮时应该如何控制?在数据尚未传送到相应数据库中时该如何控制。请各位大哥指教,谢谢!
 
这个不需要控制
这违返了数据库的约束自然不然保存到数据库中它也会抛出相应的异常
 
保存是出错,你可在posterror事件中处理。
Action:=daAbort;
Application.MessageBox('编号重复!','提示',mb_ok+mb_iconError);
 
看看我的保存吧
procedure TFrmkp.n_saveClick(Sender: TObject);
var
ErrorCount:integer;
s_hint:string;
begin
if isinsert then
begin
{ DM.clientdatasetxsdtb.Filter := 'xsdid=' + '''' + dbedit1.Text + '''';
DM.clientdatasetxsdtb.filtered := true;
// DM.clientdatasetxsdtb.IndexFieldNames := 'chid';
}
DM.clientdatasetxsdtb2.Close;
DM.clientdatasetxsdtb2.CommandText:='';
DM.clientdatasetxsdtb2.CommandText :='select * from xsdtb where xsdid='+''''+dbedit1.Text +'''';
DM.clientdatasetxsdtb2.Open ;
if DM.clientdatasetxsdtb2.RecordCount <> 0 then
begin
s_hint := '销售发票号重复';
application.MessageBox(pchar(s_hint), '远程销售系统', mb_iconinformation + mb_defbutton1);
exit;
end;
end;


DM.ClientDataSetxsdzb.First;
DM.ClientDataSetxsdtb.Post;
DM.ClientDataSetxsdtb.ApplyUpdates(-1);
ErrorCount:=dm.ClientDataSetxsdtb.ApplyUpdates(-1);
if ErrorCount>0 then
showmessage(format('提交时产生%d条错误!',[ErrorCount]));
button_valid;
dbedit1.Enabled :=false;
//因为不许变发票号,所以当编辑发票时,发票号框变为不可。保存后变为可。现在变为不可。
end;
 
如果有重复,在数据库中会出错,只要判断这个数据提交后是否出错就行了!
 
谢谢各位大哥指教!
 
后退
顶部