获得了一个具有OnNewRecord事件的ADOQuery。
在程序上我尝试自动将数据添加到另一个表。如果取消,数据是在clientDataSet中需要和处理的几行。
在loc
OtherAdoQuery.insert;
我收到ADOQuery无法将null插入非空字段的错误。我在插入模式,但我从来没有要求DELPHI发布!我不知道为什么发布。
编辑:你能帮我找一个关于这个问题的提示吗?更多澄清:
at
ADOQuery.onNewRecord();
开始
CliendDataSet.insert; //这里发布ADOQueryPost的帖子。 ClientDataSet处于浏览状态的位置
端;
编辑:
这个bug没有意义!看看堆栈跟踪:
其中myFunc确实导致带有Insert的NewRecord。
答案 0 :(得分:2)
我对TAdoQuery不太熟悉,但我知道如何追踪这样的错误。首先,如果您尚未设置它,请进入项目选项并在“编译”选项卡下启用“使用调试DCU”,然后运行完整版本并运行它。当您在调试器中获得该异常报告时,请单击Break,您应该最终在TAdoQuery或其子对象的代码中。尝试检查调用堆栈。如果你查了几个电话,你可能会发现你所做的就是调用其他正在调用Post的东西。按照堆栈跟踪回到你的代码,你就会知道发生了什么,如果你稍微分析一下,你应该找到一些方法来防止这个问题。
话虽如此,让我快速猜测问题的原因:当您在数据集上调用Insert时,如果数据集已经处于附加模式,因为您之前调用了Insert或Append并且没有跟进使用Post,它会在设置新行之前调用Post自己进行处理。也许这就是发生在你身上的事情?
答案 1 :(得分:-1)
答案来自表格之间的联系。
ADOQuery.dataSource设置了ClientDataSet的DataSet。
这种疯狂的伤害,并没有德尔福的暗示。