是啊!
{j := 0;
k := EmpEduDataSet.RecNo;
if EmpEduDataSet.IsEmpty then exit ;
EmpEduDataSet.First;
for i:= 0 to (EmpEduDataSet.RecordCount -1) do
begin
if EmpEduDataSet.FieldByName('TopEducation').AsString = 'True' then
begin
j := j + 1;
end;
EmpEduDataSet.Next;
end;
if j = 0 then
begin
jsDialogs.ShowWarning('请选择一个最高学历', '');
EmpEduDataSet.Edit;
EmpEduDataSet.RecNo := K;
end;
if J = 1 then
begin
EmpEduDataSet.Edit;
EmpEduDataSet.Post;
EmpEduDataSet.RecNo := K;
end;
if j >= 2 then
begin
jsDialogs.ShowWarning('只能选择一个最高学历', '');
EmpEduDataSet.RecNo := K;
EmpEduDataSet.Edit;
EmpEduDataSet.FieldByName('TopEducation').AsString := 'False';
EmpEduDataSet.Post
end; }
我写了些代码!但是在新增时候,k := EmpEduDataSet.RecNo行不通啊!
为什么要k := EmpEduDataSet.RecNo这样?
你直接循环一下数据集不久行了么?
if EmpEduDataSet.IsEmpty then exit ;
EmpEduDataSet.First;
for i:= 0 to (EmpEduDataSet.RecordCount -1) do
begin
if EmpEduDataSet.FieldByName('TopEducation').AsString = 'True' then
begin
j := j + 1;
end;
EmpEduDataSet.Next;
end;
就这一段,然后判断J的值
atiger 大哥,问的我都无语了,可以按照你的思路给我个参考吗?谢谢啊!哈哈!
我写的这个是在BizActnConsts.ActionDataSetSave时候做检查,把数据Post 到本地,判断依据是整个数据集里'最高学历'这个字段,所有数据集数据,只有一个'True',则向后台提交,否则报错!
我用存储过程能实现这个操作。
if (Select count(*) From Emp_Edu where EmpGuid = @EmpGuid and EmpID = @EmpID and TopEdu = 'True') <> 1 then
begin //“只允许有一个最高学历”
@ErrorID = -10;
@ErrorMsg = '只允许有一个最高学历';
......
end;