2014-06-17 129 views
8

背景:我在Access 2010用戶前端工作與Microsoft SQL Server 2008的後端。訪問中的表都鏈接到SQL服務器數據庫。我有一個存儲過程將新值(由參數提供)插入到表中。我已經經歷了很多例子,但我不太瞭解我是否真的接近或者完全不在。我之前問了一個類似的問題,得到了很好的結果,但是我有關於連接字符串的問題。這裏是問題/ anwser Calling Stored Procedure while passing parameters from Access Module in VBA調用存儲過程VBA

我不知道如何找到製作連接字符串所需的信息(例如:我不知道提供者/服務器名稱/服務器地址)。我發現在這裏說:「如果你已經有一個訪問鏈接表指向SQL Server數據庫,那麼你可以簡單地使用它.Connect字符串以DAO.QueryDef對象來執行存儲過程」問題 - Connection string for Access to call SQL Server stored procedure我試圖執行此代碼,但我不確定如何傳遞參數,所以我嘗試使用前面的示例。但我得到的錯誤「調用失敗」在行「設置RST = qdf.OpenRecordset(dbOpenSnapshot)」何況我傳遞參數的代碼可能是路要走。

Set qdf = CurrentDb.CreateQueryDef("") 
qdf.Connect = CurrentDb.TableDefs("tblInstrumentInterfaceLog").Connect 
qdf.sql = "EXEC dbo.upInsertToInstrumentInterfaceLog" 
qdf.ReturnsRecords = True 
Set rst = qdf.OpenRecordset(dbOpenSnapshot) 

qdf.Parameters.Append qdf.CreateParameter("@BatchID", adVarChar, adParamInput, 60, BatchID) 
qdf.Parameters.Append qdf.CreateParameter("@InstrumentName", adVarChar, adParamInput, 60, InstrumentName) 
qdf.Parameters.Append qdf.CreateParameter("@FileName", adVarChar, adParamInput, 60, FileName) 
qdf.Parameters.Append qdf.CreateParameter("@QueueId", adVarChar, adParamInput, 60, QuenueId) 

rst.Close 
Set rst = Nothing 
Set qdf = Nothing 

有人能告訴我什麼可能是我的代碼錯誤,爲什麼我得到這個錯誤?謝謝!

+0

這是一個標準的Access數據庫或Access數據項目嗎?即通過ODBC(標準數據庫)鏈接的表,還是將數據項目直接連接到SQL Server數據庫? –

+0

我不確定我沒有創建數據庫,我只是爲它編寫程序。有沒有辦法告訴? – VictoriaJay

+0

對於Access 2010不確定,但要看的東西......是表格鏈接表還是它們看起來像原生表?在「文件」菜單選項下,您是否有連接選項,其中設置了與數據庫的連接? –

回答

11

維多利亞,

您可以運行使用ADO存儲過程,像下面...

Set mobjConn = New ADODB.Connection 
mobjConn.Open "your connection string" 
Set mobjCmd = New ADODB.Command 
With mobjCmd 
    .ActiveConnection = Me.Connection 
    .CommandText = "your stored procedure" 
    .CommandType = adCmdStoredProc 
    .CommandTimeout = 0 
    .Parameters.Append .CreateParameter("your parameter name", adInteger, adParamInput, , your parameter value) 
    ' repeat as many times as you have parameters 

    .Execute 
End With 

爲了讓您的連接字符串,則可以使用線

Debug.Print CurrentDb.TableDefs("tblInstrumentInterfaceLog").Connect 

立即窗口,並應該顯示您可以使用的連接字符串。

你會嘗試,讓我知道,如果你有任何問題。

+1

連接字符串可能需要有所不同,因爲CurrentDB.TableDef默認對象使用DAO,而這種連接使用ADO。 http://www.connectionstrings.com是一個非常有用的資源,用於確定必要的變化。 –

+0

是的!這讓它工作,謝謝你的所有幫助! – VictoriaJay

+0

很高興我能幫到你。 –