我这样写:
cnn.CursorLocation = adUseClient
cnn.Open "Provider=sqloledb;Data Source=ServerName;Network Library=DBMSSOCN;Initial Catalog=ABC;User ID=sa;Password=pw;"cnn.Execute "INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', '" + App.Path + "\Temp.mdb'; 'admin'; '', TableName) SELECT top 1 * From TableName order by autoid desc"报错:"OLE/DB provider returned message:磁盘或网络错误."

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/2699/2699700.xml?temp=.8299524
      

  2.   

    我常用用两个RECORDSET倒RS1连到SQL SERVER
    RS2连到ACCESSDo While Not RS.EOF        
            RS2.AddNew
            For i = 0 To RS.Fields.Count - 1
                RS2.Fields(i) = RS.Fields(i)
            Next
            RS2.Update
            DoEvents
            RS.MoveNext
    Loop其中加上判断条件什么的
      

  3.   

    cnn.Execute "INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', '" + App.Path + "\Temp.mdb'; 'admin'; '', TableName) SELECT top 1 * From TableName order by autoid desc"你的TEMP.MDB数据库不存在...
    所以,你要先建立该数据库才能正确导出.
      

  4.   

    数据库是肯定存在的,路径也没有错.
    会不会是vb不支持"OPENROWSET"呢?
      

  5.   

    我觉得MSTOP兄说的是不是这个意思呢,就是当前的cnn是连到SQLServer的连接,在它上面执行的SQL语句,是否系统理解为本地的路径呢,也就是说App.Path + "\Temp.mdb'所形成的路径,SQL执行时是到SQLServer所在的主机上寻找,当然没有了(不很确定是否这个原因,请高手指正)。
    这种从远端SQLServer到本地Access导数据我也很头疼,连接到SQLServer远程打开Access吧,Access路径找不到;连接到Access远程打开SQLServer吧,很多语句在Access上又执行不了。
      

  6.   

    看来只有像 vallan那样,一条一条老老实实地做了.
      

  7.   

    /*************导出到Access********************/
    insert into openrowset('Microsoft.Jet.OLEDB.4.0', 
       'x:\A.mdb';'admin';'',A表) select * from 数据库名..B表