2

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?

4

3 回答 3

3

您的问题似乎涉及到几件事。

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

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

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

祝你好运,

特里。

于 2009-01-09T15:39:23.077 回答
2

我已经很久没有使用 PB 了,但 .Update() 的返回值不只是数据库成功执行命令(即 UPDATE)的指标吗?如果这是正确的,那么它会在成功时返回 1,即使行值实际上并没有改变。SqlNRows 是更改行数的实际指标。

于 2009-01-08T14:39:09.540 回答
0

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

原始答案:判断您使用 PFC 时发生的情况的一个好方法是使用 SQL Spy 服务。在非 PFC 应用程序中,您可以像beep(1)在 DataWindow 的sqlpreview事件中那样放置一个无操作的行,在该行上设置一个断点,然后使用调试器来观察正在发生的事情。您还可以使用 SQL 语句跟踪工具或数据库跟踪工具,如连接到数据库一书中的连接故障排除中所述。

于 2010-03-11T15:58:23.417 回答