2017-06-14 91 views
0

我想连接sql与Access。 我想要做的只是使用select语句从mssql获取数据。 这是代码。vba mssql连接错误

Sub ConnectSQLServer() 

Dim cmd As ADODB.Command 
Dim conn As ADODB.Connection 
Dim rs As ADODB.Recordset 
Dim strConn As String 
Dim par As ADODB.Parameter 
Dim strSQL As String 


strConn = "DRIVER=SQL Server;SERVER=CHU-AS-0004;DATABASE=RTC_LaplaceD_DEV;Trusted_Connection=Yes;" 

Set conn = New ADODB.Connection 
conn.Open strConn 

Set cmd = New ADODB.Command 
cmd.CommandText = "dbo.Version" 
cmd.CommandType = adCmdStoredProc 
cmd.ActiveConnection = conn 

strSQL = "SELECT * FROM dbo.Version" 


cmd.Execute 
conn.Close 

Set conn = Nothing 
Set cmd = Nothing 
End Sub 

当我执行这个代码,我得到这样的错误“[微软] [ODBC SQL Server驱动程序] [SQL服务器]对于过程的请求‘版本’失败,因为‘版本’是表对象“。

我知道我需要经过“STRSQL = SELECT * FROM dbo.Version”添加的东西,但我不知道如何填写。 能否请你帮我这个?

回答

1

它看起来像您正在执行dbo.Version作为SP或SQL命令这是错误的

你应该STRSQL对象,而不是执行命令,以便修改后的代码会是这个样子:。

strSQL = "SELECT * FROM dbo.Version" 

Set cmd = New ADODB.Command 
cmd.CommandText = strSQL 
cmd.CommandType = adCmdStoredProc 
cmd.ActiveConnection = conn 

编辑1

我复制了同样的问题在MS Excel中通过使用下面的代码来读取MS SQL Server数据和它的工作对我来说:

'Declare variables' 
    Set objMyConn = New ADODB.Connection 
    Set objMyRecordset = New ADODB.Recordset 
    Dim strSQL As String 

'Open Connection' 
    objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=HARSH-SHARMA\SQLEXPRESS;Initial Catalog=db1;User ID=sa;Password=pass001;" 
    objMyConn.Open 

'Set and Excecute SQL Command' 
    strSQL = "select * from Subject" 

'Open Recordset' 
    Set objMyRecordset.ActiveConnection = objMyConn 
    objMyRecordset.Open strSQL 

'Copy Data to Excel' 
    ActiveSheet.Range("A1").CopyFromRecordset (objMyRecordset) 

请试试这个。

+0

非常感谢!但是,当我修复该代码时,出现以下错误...:[Microsoft] [ODBC SQL Server Driver]语法错误或访问冲突。你也知道如何解决这个错误吗? –

+0

您是否将Access/Excel(VB6)连接到MS SQL Server? –

+0

是的,连接Access和mssql服务器 –