The first time I call Update
on my DataWindow it returns 1 (success) and SQLCA.SQLNRows
is 1. When I do a second update on the same screen without closing it in between, Update
returns 1 and SQLCA.SQLNRows
is 0. Any suggestions why this is happening?
3 回答
您的问题似乎涉及到几件事。
首先,正如 John Paul 所提到的,即使没有更新行,Update() 也会返回 1。“无事可做”没有具体的返回值。
其次,正如帮助文件中提到的,SQLNRows 的值是依赖于 DBMS 的,因此在不知道所涉及的 DBMS 的情况下很难评论那里填写的值。但是,不管怎样,由于 DataWindow 发出一系列仅针对一行的 INSERT、UPDATE 和 DELETE,如果填充此值,我不希望它超过一个,无论有多少 SQL 语句数据窗口问题。发出的最后一条 SQL 语句受影响的行数应始终为 1。
如果您尝试查找受 DataWindow Update() 影响的行数,请在 Update() 之前检查ModifiedCount() + DeletedCount()的值。
祝你好运,
特里。
我已经很久没有使用 PB 了,但 .Update() 的返回值不只是数据库成功执行命令(即 UPDATE)的指标吗?如果这是正确的,那么它会在成功时返回 1,即使行值实际上并没有改变。SqlNRows 是更改行数的实际指标。
更新答案:您可以Update
在UpdateEnd
事件中获得结果。在那种情况下,你有rowsinserted, rowsupdated,
和rowsdeleted
。
原始答案:判断您使用 PFC 时发生的情况的一个好方法是使用 SQL Spy 服务。在非 PFC 应用程序中,您可以像beep(1)
在 DataWindow 的sqlpreview
事件中那样放置一个无操作的行,在该行上设置一个断点,然后使用调试器来观察正在发生的事情。您还可以使用 SQL 语句跟踪工具或数据库跟踪工具,如连接到数据库一书中的连接故障排除中所述。