首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

超奇怪有关问题:数据集append后提示Dataset not in edit or insert mode

2012-03-30 
超奇怪问题:数据集append后提示Dataset not in edit or insert mode超奇怪问题 一直运行很好,后来客户要求

超奇怪问题:数据集append后提示Dataset not in edit or insert mode
超奇怪问题 一直运行很好,后来客户要求添加点新功能,可是新功能与出问题的模块毫无关联

代码片段 如下
with DM.ADT_JMoney do
begin
  Append;
  if (DM.ADQ_Student.FieldByName('XOLDMARK').AsBoolean)and(N18.Checked) then
  FieldByName('XSN').AsString := DM.ADQ_Student.FieldByName('XOLDSN').AsString
  else
  FieldByName('XSN').AsString := DM.ADQ_Student.FieldByName('XSN').AsString;

当程序运行到两个赋值语句之一时就报错,错误很常见: Dataset not in edit or insert mode

我这里用的是SQLServer 2008, 客户用的是 2000,数据库是在2000上建立的,都会提示错误
要疯了,还请各位帮忙,在线等!!

[解决办法]
with DM.ADT_JMoney do
begin
Append;
if (DM.ADQ_Student.FieldByName('XOLDMARK').AsBoolean)and(N18.Checked) then
FieldByName('XSN').AsString := DM.ADQ_Student.FieldByName('XOLDSN').AsString
else
FieldByName('XSN').AsString := DM.ADQ_Student.FieldByName('XSN').AsString;

你这里加了WITH DO

如果FieldByName('XSN')在DM下面则正确的,
若在本窗体内则改成Self.Query.FieldByName('XSN').AsString
[解决办法]
设断点在Append位置,跟踪下去看看是不是有其它的代码,已经把DM.ADT_JMoney的状态(State)改变了

[解决办法]
先把WITH DO去掉吧,全部加上完整名称试试,有时WITH DO不注意确实会产生很多奇怪的问题
Append后加上if DM.ADQ_Student.state = dsBrowse then showmessage('看看');
FieldByName('XSN').AsString := DM.ADQ_Student.FieldByName('XOLDSN').AsString

[解决办法]

探讨
with do 去掉也不行
State也看了,Append后立马是dsBrowse

热点排行