在Button的click事件中加如下代码,清空ClientDataSet2。
if not ClientDataSet2.Active then
ClientDataSet2.Active := true;
ClientDataSet2.EmptyDataSet; 在后续的一个循环中实现如下代码,用以向ClientDataSet2中添加数据记录。
with ClientDataSet2 do
begin
if not Active then Active := True;
Append;
FieldByName('NUMBER').asstring := '5'; //执行到这一句就报错:Dataset not in edit or insert mode。删除该句,则在下句中报此错误。
FieldByName('LINENO').asstring := '432';
FieldByName('BUSNO').asstring := '213';
FieldByName('STATION').asstring := '43';
FieldByName('STATIONNAME').asstring := '33';
FieldByName('AVERAGESPEED').asstring := '23';
Post;
end;//下面是测试跟踪代码,附在Append之后,在Append上下断点。跟踪发现CanModify为true,ReadOnly为false。但是奇怪的是State始终是dsBrowse。
if CanModify
and(not ReadOnly) then
showmessage('Can');
case State of
dsInactive: showmessage('');
dsBrowse: showmessage('');
dsEdit: showmessage('');
dsInsert: showmessage('');
dsSetKey: showmessage('');
dsCalcFields: showmessage('');
dsFilter: showmessage('');
dsNewValue: showmessage('');
dsOldValue: showmessage('');
dsCurValue: showmessage('');
dsBlockRead: showmessage('');
dsInternalCalc: showmessage('');
dsOpening: showmessage('');
end;
//最后这个也没闹明白,采用下面的办法解决了。将Append(包含Append)和Post(包含Post)之间的代码用下面的代码替代。
x:='5';
y:='432';
z:='213';
w:='43';
q:='33';
h:='23';
AppendRecord([x,y,z,w,q,h]);
楼主真心求助论坛里的各路大神分析解决此问题。
if not ClientDataSet2.Active then
ClientDataSet2.Active := true;
ClientDataSet2.EmptyDataSet; 在后续的一个循环中实现如下代码,用以向ClientDataSet2中添加数据记录。
with ClientDataSet2 do
begin
if not Active then Active := True;
Append;
FieldByName('NUMBER').asstring := '5'; //执行到这一句就报错:Dataset not in edit or insert mode。删除该句,则在下句中报此错误。
FieldByName('LINENO').asstring := '432';
FieldByName('BUSNO').asstring := '213';
FieldByName('STATION').asstring := '43';
FieldByName('STATIONNAME').asstring := '33';
FieldByName('AVERAGESPEED').asstring := '23';
Post;
end;//下面是测试跟踪代码,附在Append之后,在Append上下断点。跟踪发现CanModify为true,ReadOnly为false。但是奇怪的是State始终是dsBrowse。
if CanModify
and(not ReadOnly) then
showmessage('Can');
case State of
dsInactive: showmessage('');
dsBrowse: showmessage('');
dsEdit: showmessage('');
dsInsert: showmessage('');
dsSetKey: showmessage('');
dsCalcFields: showmessage('');
dsFilter: showmessage('');
dsNewValue: showmessage('');
dsOldValue: showmessage('');
dsCurValue: showmessage('');
dsBlockRead: showmessage('');
dsInternalCalc: showmessage('');
dsOpening: showmessage('');
end;
//最后这个也没闹明白,采用下面的办法解决了。将Append(包含Append)和Post(包含Post)之间的代码用下面的代码替代。
x:='5';
y:='432';
z:='213';
w:='43';
q:='33';
h:='23';
AppendRecord([x,y,z,w,q,h]);
楼主真心求助论坛里的各路大神分析解决此问题。
begin
Append;是不是Append和其他方向相同?
即Compiler不认为是ClientDataSet2.Append?
直接写ClientDataSet2.Append试试。
同理,也有可能FieldByName不对应ClientDataSet2。
用ClientDataSet2.FieldByName试试