我正在尝试使用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”之后添加一些内容,但我不确切知道如何填写。 你能帮帮我吗?
答案 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)
请试一试。