vba mssql连接错误

时间:2017-06-14 09:52:08

标签: sql-server vba

我正在尝试使用Access连接sql。 我想要做的只是使用select语句从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

当我执行此代码时,我收到类似“[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]的错误请求过程'版本'失败,因为'Version'是一个表对象。'

我知道我需要在“strSQL = SELECT * FROM dbo.Version”之后添加一些内容,但我不确切知道如何填写。 你能帮帮我吗?

1 个答案:

答案 0 :(得分: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)

请试一试。