Powerbuilder - Datawindow更新后SQLNRows为0

时间:2009-01-08 07:16:51

标签: powerbuilder datawindow

我第一次在DataWindow上调用Update时返回1(成功),SQLCA.SQLNRows为1.当我在同一屏幕上进行第二次更新而不在其间关闭时,{{1 }}返回1,Update为0.任何建议为什么会发生这种情况?

3 个答案:

答案 0 :(得分:3)

您的问题似乎涉及到几个方面。

首先,正如John Paul所提到的,即使没有更新行,Update()也会返回1。 “无所事事”没有具体的回报值。

其次,正如帮助文件中所提到的,SQLNRows的值依赖于DBMS,因此在不知道所涉及的DBMS的情况下很难对其中填充的值进行评论。但是,无论如何,由于DataWindow发出一系列仅针对一行的INSERT,UPDATE和DELETE,如果填充了这个值,无论有多少SQL语句,我都不会指望它会超过一个DataWindow问题。发出的最后一个SQL语句受影响的行数应始终为一。

如果您在Update()之前尝试查找受DataWindow Update()影响的行数,请检查 ModifiedCount()+ DeletedCount()的值。

祝你好运,

特里。

答案 1 :(得分:2)

自从我使用PB以来已经很长时间了,但是.Update()的返回值不仅仅是DB成功执行命令(即UPDATE)的指示器吗?如果这是正确的,那么即使行值实际上没有变化,它也会在成功时返回1。 SqlNRows是更改行数的实际指标。

答案 2 :(得分:0)

更新的答案: 您可以在Update事件中获得UpdateEnd的结果。在那种情况下,您有rowsinserted, rowsupdated,rowsdeleted

原始答案: 如果您正在使用PFC,告诉您正在发生什么的好方法是使用SQL Spy服务。在非PFC应用程序中,您可以在DataWindow的beep(1)事件中放置像sqlpreview这样的无操作行,在该行上设置断点,并使用调试器来查看正在发生的事情。您还可以使用连接到数据库一书中的连接疑难解答中所述的SQL语句跟踪工具或数据库跟踪工具。