2017-06-14 87 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服務器 –