VB6记录集和SQL计数

VB6记录集和SQL计数,vb6,Vb6,我注意到,当我开始运行下面的程序时,数据库表select reference from datetable中的记录数突然增加,即使没有添加新记录。请注意,我通过在SQL Studio Manager中运行查询(即从datetable中选择引用),确定行数增加。当程序停止时;记录的数量下降到原来的水平。这是代码。为什么会发生这种情况?虽然引用是唯一的,但表中没有主键 rs.Open "select reference,value1,datefield from datetable where fi

我注意到,当我开始运行下面的程序时,数据库表select reference from datetable中的记录数突然增加,即使没有添加新记录。请注意,我通过在SQL Studio Manager中运行查询(即从datetable中选择引用),确定行数增加。当程序停止时;记录的数量下降到原来的水平。这是代码。为什么会发生这种情况?虽然引用是唯一的,但表中没有主键

rs.Open "select reference,value1,datefield from datetable where field1 = 'value1' " & _     
                "order by reference", objAuditCon.ActiveCon, adOpenStatic, adLockPessimistic  
Do While Not rs.EOF
     intReadCount = intReadCount + 1
     DoEvents
     If Not IsNull(rs("value1")) Then
         testArray = Split(rs("value1"), ",") 
        rs2.Open "SELECT Date FROM TBL_TestTable WHERE Record_URN = '" & testArray(1) & "'", objSystemCon.ActiveCon, adOpenStatic, adLockReadOnly
         If rs2.EOF Then
          End If
         If Not rs2.EOF Then
             rs("DateField") = Format$(rs2("Date"), "dd mmm yy h:mm:ss")
             rs.Update
             intWriteCount = intWriteCount + 1
         End If
     rs2.Close
     Else
         End If
  rs.MoveNext
 Loop
 rs.Close 

这有点混乱,但是如果您根据表中的行数引用intReadCount给出的总数,那么看起来您没有正确地清除该值。在过程开始时,您可能希望在开始之前将intReadCount设置回0,然后您应该会得到常量结果


更新:请参阅下面的评论

这不是你在上问的同一个问题吗?你应该重写这个问题,去掉关于在没有主键的表上运行记录集更新的风险的部分,并关注表记录计数部分,你可能会得到更好的答案。Shane,谢谢。我已经这样做了。C-Pounr大师,我再也看不到原来的问题了。当我点击链接时,我得到一个错误。是的,这是同一个问题,但措辞可能略有不同。马特,不,我不是指intReadCount。我登录到SQLStudio管理器,并在查询窗口中输入查询并执行。程序运行时,select reference from datetable返回更多行。之后,当我从datetable运行select引用时,它会恢复到原始计数。这可能是因为没有主键吗?字段“reference”是唯一的。@w0051977这与PK的存在无关,我建议转储增加的查询,然后将其与最终查询进行比较,以突出显示哪些是额外的行,因为没有PK,我建议对查询进行排序,以便您可以对这些行进行排序。Matt,当我添加一个PK时它不会发生,所以它必须是没有PK的事实。我尝试了您的建议:从datetable中选择引用,其中引用不在从datetablebackup中选择引用中。datetablebackup是在我运行程序之前进行的。运行查询时没有返回任何行。谢谢。@w0051977我不会太担心它,很可能是程序中的一个小故障,或者它可能有其他未知的用途。