用服务器端光标当然得不到recordcount,而且服务器端光标适用范围很小,大部分时候使用服务器端光标会导致性能损失。

解决方案 »

  1.   

    呵,缺省的是服务器端的,而且对于另外一个有pk登表我是可以正常操作的
    对于这样一个没有pk的表就失败,加一个autoid又可以
    很奇怪。
      

  2.   

    这个问题前几天我给别人回答过了。
    楼上的几位说的比较对。ado为了提高速度,有意这么做的。如果需要recordcount值
    应该是用
    Rs1.MoveLast
    RSCount=Rs1.AbsolutePosition 
    这个值是肯定正确的。无论什么游标。
      

  3.   

    对于有pk的数据库,因为在服务器上建了索引,所以只要检索系统的最大pk ID就可以了,数据库传回这样一个值就可以,并没有真正统计总行数。
      

  4.   

    谢谢 sssoft(恒谦) 
    不过现在问题是这样让我困惑
    对这样的Recordset操作, 它的RecordCount保持为0,梆定的datagrid也没有数据显示,然而似乎实质上还是提交到后台数据库了的..
    对于有pk的数据库,不一定是indentity的呀,但是就可以让datagrid梆定一起显示执行..如果我要让客户端的datagrid跟着一起刷新的话,除了用客户端游标和服务器表都加pk的话, 还有什么解决办法么. 再次谢谢,让我开了新的思路..
      

  5.   

    对,不要使用客户端游标。有pk的数据库作为pk的列必须是唯一的而且不可缺少。
    最好使用MsflexGrid 不要使用绑定。前两天回答过这问题,一万行数据添入2-5秒钟。你应该首先设置.Redraw=false 添数据的时候就不会闪了,visible=false看不见就更快了
    .AllowBigSelection = True,.FillStyle=flexFillRepeat允许块选择,选中的区域一次性全部改变底色.这是专业级的代码,一万行数据只要两秒钟。赛杨500的机器。    With tgrid
            For cell9 = 1 To 18
            tgrid.ColWidth(cell9) = 1300
            Next
            .Clear
            .Redraw = False
            .Visible = False
            .SelectionMode = flexSelectionFree
            .AllowBigSelection = True
            .FillStyle = flexFillRepeat
            Set .DataSource = recMain
            .Row = 1
            .Col = 1
            .RowSel = .FixedRows - 1
            .ColSel = .Cols - 1
            .CellFontBold = True
            .ColSel = .FixedCols - 1
            .RowSel = .Rows - 1
            .CellBackColor = &HFF9E57
            .CellFontBold = True
            .FillStyle = flexFillSingle
            .AllowBigSelection = False
            .Redraw = True
            .Visible = True
            Set .DataSource = Nothing
        End With