求助:一个让很多人困惑的问题Dataset not in edit or insert mode
在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]);
楼主真心求助论坛里的各路大神分析解决此问题。
...全文
相关推荐
VB数据库源程序
使用数据控件新建数据库,对数据库进行添加,删除,显示记录操作。
delphi 连接数据库 delphi信息部分代码及控件选择
delphi 连接数据库 delphi信息部分代码及控件选择
ASP.NET某学院期末考试题
ASP.NET某学院期末考试题,只作为参考
DELPHI_表格控件DBGridEh.rar
DELPHI_表格控件DBGridEh史上最全使用资料,DELPHI_表格控件DBGridEh全属性设置详解___最全的属性设置说明。
Delphi中的ADOquery 用法
Delphi中的ADOquery 用法Delphi中的ADOquery 用法Delphi中的ADOquery 用法


数据库相关
