2016-02-19 60 views
0

我想在excel 2010中的SQL查詢中引用userform數據。當我的表單提交操作運行以下代碼時,出現一個或多個參數未在SQL查詢中提供的錯誤。在excel vba sql語句中引用userform數據?

Private Sub SubmitButton_Click() 

    Dim Connection As ADODB.Connection 
    Dim ConnectionString As String 
    ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source=I:\DB.xlsx; Extended Properties=""Excel 12.0 Xml; HDR=YES"";" 

    Dim SQL As String 

'Transfer information 
SQL = "INSERT INTO [Tests$]" & _ 
"(PartNo, RootCause, CorrectiveAction, AssignedTo, Verification, Comments, DateOpened, DateClosed, " & _ 
"Status, Purpose, ProdDate, ShipDate, TestDate, SampleDate, CusName, Facility, Result, Wire, StartingDia, " & _ 
"WireType, IncomingDia, FailMode, RootCauseDetail)" & _ 
"VALUES" & _ 
"([Forms][frmTesting]![PartNo], [Forms][frmTesting]![RCause], [Forms][frmTesting]![Corrective], " & _ 
"[Forms][frmTesting]![Assigned], [Forms][frmTesting]![Verification], [Forms][frmTesting]![Comments], " & _ 
"[Forms][frmTesting]![OpenDate], [Forms][frmTesting]![CloseDate], [Forms][frmTesting]![Status], " & _ 
"[Forms][frmTesting]![Purpose], [Forms][frmTesting]![ProdDate], [Forms][frmTesting]![ShipDate], " & _ 
"[Forms][frmTesting]![TestDate], [Forms][frmTesting]![SampleDate], [Forms][frmTesting]![Customer], [Forms][frmTesting]![Facility], " & _ 
"[Forms][frmTesting]![Result], [Forms][frmTesting]![Wire], [Forms][frmTesting]![StartingDia], " & _ 
"[Forms][frmTesting]![WireType], [Forms][frmTesting]![IncomingDia], [Forms][frmTesting]![FailMode], [Forms][frmTesting]![RCDetail])" 

    Set Connection = New ADODB.Connection 
    Call Connection.Open(ConnectionString) 

    Call Connection.Execute(SQL, , CommandTypeEnum.adCmdText Or ExecuteOptionEnum.adExecuteNoRecords) 
    Connection.Close 
    Set Connection = Nothing 


End Sub 

我對SQL查詢使用正確的表單對象引用語法嗎? Excel和Access與如何引用表單數據有區別嗎?

+0

Typo:This [Forms] [frmTesting]![PartNo]實際上是[Forms]![frmTesting]![Partno]用於塊中的所有表單引用。 – Sam

+0

您可以[編輯]您的帖子來解決這個問題,而不是固定在評論中;-) –

回答

0

萬一任何觀衆跑過同一個問題並感興趣。我發現最簡單的解決方案是SQL =「INSERT INTO [Tests $](PartNo)Values(''& frmTesting.PartNo &'')」