|
我向大家请教一个问题
代码如下:
'------------------------------------------------
'本过程用于响应TreeView单击Node事件
'------------------------------------------------
Private Sub tvwRegion_NodeClick(ByVal Node As Object)
Dim strSQLWhere As String
If left(Node.Key, 4) = "root" Then
strSQLWhere = "RegionID = '" & Mid(Node.Key, 5) & "'"
Else
strSQLWhere = "CustomerID = '" & Mid(Node.Key, 7) & "'"
End If
Me.Filter = strSQLWhere
Me.FilterOn = True
Debug.Print Me.Recordset.RecordCount [B]'注:返回的记录集记录数量与后不一致,其值为1[/B]
If Me.RecordCount=1 Then
Common_Toolbar.InitalizeScrollButtons Toolbar1, False
Else
Common_Toolbar.InitalizeScrollButtons Toolbar1, True
End If
Debug.Print Me.Recordset.RecordCount [B]'注:返回的记录集记录数量与后不一致, 其值为记录集中实际的记录数量[/B]
End Sub
以上代码中的判断句无法起到作用,我只好采取了另一办法(见后)来补尝
以下是我的看法:
如果在第一个debug方法前设置断点,调试执行,其值为记录集中记录数量
我对这种看法是--可能是语句执行太快,由于利用了过滤器,JET引擎查询速度较语句慢,再者由于记录集类型是动态集,JET为了优化,快速将记录显示出来,是一条一条返回记录的,而不是象快照全部读取后再返回的.
[B]以上不知分析对不对,请高手指教.不知有没有更好的方法来补尝以上BUG.[/B]
折中办法如下:
'------------------------------------------------
'本过程用于响应单击Node事件
'------------------------------------------------
Private Sub tvwRegion_NodeClick(ByVal Node As Object)
Dim strSQLWhere As String
If left(Node.Key, 4) = "root" Then '通过节点关键字前缀判断其节点的层,而获得条件
strSQLWhere = "RegionID = '" & Mid(Node.Key, 5) & "'"
Else
strSQLWhere = "CustomerID = '" & Mid(Node.Key, 7) & "'"
End If
Me.Filter = strSQLWhere
Me.FilterOn = True
Me.Recordset.MoveNext
'本来可用RecordCount来判断记录是否为单条,但即使记录为多条也返回数量为1,可能是太快(或是利用了了过滤器,查询速度比较慢)没法只好想了这个办法利用MoveNext方法来使系统识别
If Me.Recordset.EOF Then
Common_Toolbar.InitalizeScrollButtons Toolbar1, False
Else
Me.Recordset.MovePrevious
Common_Toolbar.InitalizeScrollButtons Toolbar1, True
End If
End Sub
[此贴子已经被作者于2004-2-18 19:38:55编辑过]
|
|