我正在学习ADO分组显示的问题,我按帮助写了一段测试代码,但无法通过,运行时总是有错误信息“语法错误或访问冲突”,但我看不出有什么问题,请各位大侠赐教。以下我的写的测试代码。
Option Explicit
Dim vbmsg As Integer
Dim dbConnection As ADODB.Connection
Dim dbRecordset  As ADODB.RecordsetPrivate Sub ConnectDatabase()
    
    Set dbConnection = New ADODB.Connection
    dbConnection.ConnectionString = MDIForm1.varConnectSQL
    dbConnection.Provider = "MSDataShape"
    dbConnection.Open
    
    Set dbRecordset = New ADODB.Recordset
    dbRecordset.ActiveConnection = dbConnection
End SubPrivate Sub Form_Load()
    ConnectDatabase
End SubPrivate Sub Command1_Click()
    On Error GoTo ToExit '打开错误陷阱
    '------------------------------------------------
    If dbRecordset.State = 1 Then
       dbRecordset.Close
    End If
    
    dbRecordset.Source = "SHAPE {select * from project} " & _
            "APPEND ({select * from worktimetable2004 } AS WorkTime " & _
            "RELATE 协议编号 to 协议编号)  "
    dbRecordset.Open
    Set MSHFlexGrid1.DataSource = dbRecordset
            
    '------------------------------------------------
    Exit Sub
    '----------------
ToExit:
    vbmsg = MsgBox(Err.Description)
End Sub

解决方案 »

  1.   

    我的数据源使用 MS SQL 2K
      

  2.   

    '看一下这个.
    http://community.csdn.net/Expert/topic/3367/3367459.xml?temp=.2501947
      

  3.   

    http://www.zjol.com.cn/vbbible/software/program/vb/ccw/ado10.htm
      

  4.   

    找到错误原因了。访问MSDataShape服务为了访问MSDataShape服务程序,需要修改一下你的数据库联接字符串,由于MSDataShape是OLE DB服务程序的一部分,因此原先的数据库联接必须是OLE DB提供的连接,而无法使用ODBC提供的连接。
    原先的OLE DB数据库联接字符串如果为:
    ConnString = "Provider=SQLOLEDB;Data Source=myDBServer;Initial Catalog=TestDB"
    那么只需要在ConnString前面加上串字符"Provider=MSDataShape;Data "就可以了
    DSConnString = "Provider=MSDataShape;Data " & ConnString
    使用ADO Connection对象打开数据连接
    Conn.Open DSConnString
    就可以用Recordset读取层次记录集了。