我在DataServer处理该问题的思路基本同Pipi,设置b,c字段的Default值为‘NULL’,
在ApplicationServer中,我在TDataSetProvider的OnGetData中进行数据解析,代码如下:
procedure TACPDM.DataSetProvider(Sender: TObject;
DataSet: TCustomClientDataSet);
begin
with DataSetdo
begin
while not eofdo
begin
if FieldByName('b').AsString=NULLSTR then
begin
Edit;
FieldByName('b').AsString:='';
end;
if FieldByName('c').AsString=NULLSTR then
begin
if State<>dsEdit then
Edit;
FieldByName('c').AsString:='';
end;
if State=dsEdit then
Post;
Next;
end;
end;
end;
该代码在用户有修改权限时工作正常,但如果用户只有只读权限时,上面代码的将
不能进入Edit模式而出错。
设置只读权限代码如下:
with DataSetProviderdo
begin
if not (poReadOnly in Options) then
Options:=Options+[poReadOnly];
end;
由于TCustomClientDataSet的ReadOnly参数为protected,故不能在解析前对其更改
为True,解析后改回False.
请教!!