Dim aaa As ADODB.Recordset
    Set aaa = New ADODB.Recordset
    aaa.Fields.Append "BH", adBSTR, 4
    aaa.Fields.Append "ZFX", adInteger
    aaa.Sort = "BH"
    aaa.Open正确的应该是怎么样的?

解决方案 »

  1.   

            .CursorType = adOpenStatic
            .LockType = adLockOptimistic
            .Open
      

  2.   

    改成:    Dim aaa As ADODB.Recordset
        Set aaa = New ADODB.Recordset
        aaa.Fields.Append "BH", adBSTR, 4
        aaa.Fields.Append "ZFX", adInteger
        aaa.Sort = "BH"
        aaa.CursorType = adOpenStatic
        aaa.LockType = adLockOptimistic
        aaa.Open
    运行还是出错:“数据提供程序或其他服务返回E_FAIL状态”
    没有 aaa.Sort = "BH" 就没事
      

  3.   

    adBSTR类型不支持sort,改用adWChar或其它支持的类型。  Dim aaa As ADODB.Recordset
      Set aaa = New ADODB.Recordset
      aaa.Fields.Append "BH", adWChar, 4
      aaa.Fields.Append "ZFX", adInteger
      aaa.Sort = "BH"
      aaa.Open
      

  4.   

    不过还是问题依旧运行出错:“数据提供程序或其他服务返回E_FAIL状态”
      

  5.   

    RecordSet.Sort 是对记录集中的数据进行排序,并不是用在查询 SQL 中的 ORDER BY。
    Sort 必须在 Open 之后才能使用。
      

  6.   

    感谢(VB老鸟)、(猴哥)!我终于做好了:)    Dim i As Integer
        Dim aaa As ADODB.Recordset
        Set aaa = New ADODB.Recordset
        
        With aaa
            .Fields.Append "BH", adChar, 4
            .Fields.Append "ZFX", adInteger
            .CursorType = adOpenKeyset
            .LockType = adLockPessimistic
            .Open
            
            For i = 1 To 10
                .AddNew
                .Fields("BH") = "000" & CStr(10 - i)
                .Fields("ZFX") = i
                .Update
            Next
            
        End With
        
        aaa.Sort = "BH"
        Set MSHFlexGrid1.DataSource = aaa
        aaa.Close