下面这段代码:为什么新增权限时第一次保存后,数据库里面没有,第二次就好了
procedure TfBaseUserInfo.SaveForm;
var
ln,lncheck:integer;
formno:String;
begin
if DsMaster.DataSet.IsEmpty then exit;
If DsMaster.DataSet.State=dsInsert then exit;
Screen.Cursor:=crhourglass;
//TADOQuery(DsDetail.DataSet).LockType:=ltBatchOptimistic;
try
for ln:=0 to pgform.PageCount-1 do
for lnCheck:=0 to pgform.Pages[ln].ControlCount-1 do
begin
formno:=Tcheckbox(pgform.Pages[ln].Controls[lnCheck]).Name;
formno:=copy(formno,4,length(formno));
//修改用户用户权限
if DsDetail.DataSet.Active=false then dsDetail.DataSet.Open;
dsDetail.DataSet.Last;
if (not DsDetail.DataSet.IsEmpty)
and
(DsDetail.DataSet.Locate('userno;funcno;formno',VarArrayOf([DsMaster.DataSet.FieldByName('userno').Value,funcno,formno]),[]))
then
begin
dsDetail.DataSet.Edit;
dsDetail.DataSet.FieldByName('operator').AsBoolean:=Tcheckbox(pgform.Pages[ln].Controls[lnCheck]).Checked
end else
begin
//给用户新分配权限
DsDetail.DataSet.Append;
DsDetail.DataSet.FieldByName('userno').Assign(DsMaster.DataSet.FieldByname('userno'));
DsDetail.DataSet.FieldByName('funcno').AsString:=funcno;
DsDetail.DataSet.FieldByName('formno').AsString:=formno;
DsDetail.DataSet.FieldByName('operator').AsBoolean:=Tcheckbox(pgform.Pages[ln].Controls[lnCheck]).Checked;
end; end; TADOQuery(DsDetail.DataSet).UpdateBatch(arAll);
MessageDlg('权限授予成功',mtInformation,[mbOk],0);
except
TADOQuery(DsDetail.DataSet).CancelBatch(arAll);
MessageDlg('权限授予失败',mtInformation,[mbOk],0); end; Screen.Cursor:=crDefault;
end;
procedure TfBaseUserInfo.SaveForm;
var
ln,lncheck:integer;
formno:String;
begin
if DsMaster.DataSet.IsEmpty then exit;
If DsMaster.DataSet.State=dsInsert then exit;
Screen.Cursor:=crhourglass;
//TADOQuery(DsDetail.DataSet).LockType:=ltBatchOptimistic;
try
for ln:=0 to pgform.PageCount-1 do
for lnCheck:=0 to pgform.Pages[ln].ControlCount-1 do
begin
formno:=Tcheckbox(pgform.Pages[ln].Controls[lnCheck]).Name;
formno:=copy(formno,4,length(formno));
//修改用户用户权限
if DsDetail.DataSet.Active=false then dsDetail.DataSet.Open;
dsDetail.DataSet.Last;
if (not DsDetail.DataSet.IsEmpty)
and
(DsDetail.DataSet.Locate('userno;funcno;formno',VarArrayOf([DsMaster.DataSet.FieldByName('userno').Value,funcno,formno]),[]))
then
begin
dsDetail.DataSet.Edit;
dsDetail.DataSet.FieldByName('operator').AsBoolean:=Tcheckbox(pgform.Pages[ln].Controls[lnCheck]).Checked
end else
begin
//给用户新分配权限
DsDetail.DataSet.Append;
DsDetail.DataSet.FieldByName('userno').Assign(DsMaster.DataSet.FieldByname('userno'));
DsDetail.DataSet.FieldByName('funcno').AsString:=funcno;
DsDetail.DataSet.FieldByName('formno').AsString:=formno;
DsDetail.DataSet.FieldByName('operator').AsBoolean:=Tcheckbox(pgform.Pages[ln].Controls[lnCheck]).Checked;
end; end; TADOQuery(DsDetail.DataSet).UpdateBatch(arAll);
MessageDlg('权限授予成功',mtInformation,[mbOk],0);
except
TADOQuery(DsDetail.DataSet).CancelBatch(arAll);
MessageDlg('权限授予失败',mtInformation,[mbOk],0); end; Screen.Cursor:=crDefault;
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货