VB6记录集和SQL计数
我注意到,当我开始运行下面的程序时,数据库表select reference from datetable中的记录数突然增加,即使没有添加新记录。请注意,我通过在SQL Studio Manager中运行查询(即从datetable中选择引用),确定行数增加。当程序停止时;记录的数量下降到原来的水平。这是代码。为什么会发生这种情况?虽然引用是唯一的,但表中没有主键VB6记录集和SQL计数,vb6,Vb6,我注意到,当我开始运行下面的程序时,数据库表select reference from datetable中的记录数突然增加,即使没有添加新记录。请注意,我通过在SQL Studio Manager中运行查询(即从datetable中选择引用),确定行数增加。当程序停止时;记录的数量下降到原来的水平。这是代码。为什么会发生这种情况?虽然引用是唯一的,但表中没有主键 rs.Open "select reference,value1,datefield from datetable where fi
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我不会太担心它,很可能是程序中的一个小故障,或者它可能有其他未知的用途。