我第一次在DataWindow上调用Update
时返回1(成功),SQLCA.SQLNRows
为1.当我在同一屏幕上进行第二次更新而不在其间关闭时,{{1 }}返回1,Update
为0.任何建议为什么会发生这种情况?
答案 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语句跟踪工具或数据库跟踪工具。