超奇怪有关问题:数据集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 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
------解决方案--------------------