已解决部分问题,
我在数据窗口的rowfocuschanged事件用了个这个语句:
select getdate() into :ldt_sysdate from syscolumns;
导至保存数据窗口数据时第一次失败,也就是update() = 1 但sqlca.sqlcode = -1
sqlca.sqlerrtext 还是那句select returned mort than one row
但是我点第二次就可以保存成功了。
另外我把select getdate() into :ldt_sysdate from syscolumns;这句注释掉就什么问题都没有了
我的保存函数:
SQLCA.AutoCommit = false
IF adw_1.accepttext() = 1 THEN
// MessageBox("系统提示1",sqlca.sqlnrows)and SQLCA.SQLNRows > 0
IF adw_1.update(true,true) = 1 THEN
IF Sqlca.Sqlcode = 0 THEN
IF trim(as_msg1) = '' THEN
ELSE
COMMIT USING sqlca;
messagebox("系统提示",as_msg1,Information! ,OK!)
END IF
RETURN 1
ELSE
IF Trim(as_msg2) = '' THEN
ELSE
ROLLBACK USING sqlca;
MessageBox("系统提示1",as_msg2,Information! ,OK!)
END IF
RETURN -1
END IF
ELSE
ROLLBACK USING sqlca;
IF trim(as_msg2) = '' THEN
ELSE
messagebox("系统提示2",as_msg2,Information! ,OK!)
END IF
RETURN -1
END IF
END IF
RETURN -1
第一次点保存还是失败的,第二次是成功的。
再当adw_1.update(true,true)时,虽然保存成功,但修改的数据并未被保存。
而当改为adw_1.update(true,false)时,第一次点保存还是失败的,第二次是成功的。数据已被保存但第三次点击就报Row changed between retrieve and update.No changes made to database.这个错