2017-06-22 44 views
0

這是我的代碼,我想從Excel中的另一張工作表中創建一個更新下拉列表,但該錯誤不會分散我的編碼,我想如何解決它?爲什麼我的vba編碼輸出是這樣的?

Microsoft ODBC Excel Driver; Too few parameters. Expected 1.

微軟ODBC Excel驅動程序;參數太少。預計1

此指令發生錯誤:

rs.Open strSQL, Cnn, adOpenKeyset, adLockOptimistic 

這裏的周邊代碼:

Option Explicit 
Public Cnn As New ADODB.Connection 
Public Rs As New ADODB.Recordset 
Public StrSQL As String 

Public Sub OpenDB() 
    If Cnn.State = adStateOpen Then Cnn.Close 
    Cnn.ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & _ 
    ActiveWorkbook.Path & Application.PathSeparator & ActiveWorkbook.Name 
Cnn.Open 
End Sub 

Public Sub CloseRS() 
    If Rs.State = adStateOpen Then Rs.Close 
    Rs.CursorLocation = adUseClient 
End Sub 

Private Sub CommandButton4_Click() 
strSQL = "Select Distinct [Equipment] From [mechanical$] Order by [Equipment]" 
    CloseRS 
    OpenDB 
    ComboBox1.Clear 

    rs.Open strSQL, Cnn, adOpenKeyset, adLockOptimistic '<<< ERROR HERE 
    If rs.RecordCount > 0 Then 
     Do While Not rs.EOF 
      ComboBox1.AddItem rs.Fields(0) 
      rs.MoveNext 
     Loop 
    Else 
     MsgBox "I was not able to find any unique Products.", vbCritical + vbOKOnly 
     Exit Function 
    End If 

    '---------------------------- 
    strSQL = "Select Distinct [SWEC] From [mechanical$] Order by [SWEC]" 
    CloseRS 
    OpenDB 
    ComboBox2.Clear 

    rs.Open strSQL, Cnn, adOpenKeyset, adLockOptimistic 
    If rs.RecordCount > 0 Then 
     Do While Not rs.EOF 
      ComboBox2.AddItem rs.Fields(0) 
      rs.MoveNext 
     Loop 
    Else 
     MsgBox "I was not able to find any unique Region(s).", vbCritical + vbOKOnly 
     Exit Function 
    End If 
    '---------------------- 
    strSQL = "Select Distinct [Principal Name] From [mechanical$] Order by [Principal Name]" 
    CloseRS 
    OpenDB 
    ComboBox3.Clear 

    rs.Open strSQL, Cnn, adOpenKeyset, adLockOptimistic 
    If rs.RecordCount > 0 Then 
     Do While Not rs.EOF 
      ComboBox3.AddItem rs.Fields(0) 
      rs.MoveNext 
     Loop 
    Else 
     MsgBox "I was not able to find any unique Customer Type(s).", vbCritical + vbOKOnly 
     Exit Function 
    End If 
End Function 

我在這裏的輸出頁search form 我的數據庫databse

+1

你說你得到一個錯誤,但你沒有告訴我們錯誤是什麼。 – Dai

+0

rs.Open strSQL,Cnn,adOpenKeyset,adLockOptimistic - 這行錯誤 - 它彈出一條消息,寫入「運行時錯誤'424'對象需要 –

+0

同一行上的另一個錯誤是運行時錯誤'-2147217904( 80040e10)':[Microsoft] [ODBC Excel Driver]太少參數。預計1 –

回答

0

我認爲代碼會是這樣的。

Option Explicit 
Public Cnn As New ADODB.Connection 
Public Rs As New ADODB.Recordset 
Public StrSQL As String 

Public Sub OpenDB() 
    If Cnn.State = adStateOpen Then Cnn.Close 
    Cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
      "Data Source=" & ThisWorkbook.FullName & ";" & _ 
      "Extended Properties=Excel 12.0;" 

Cnn.Open 
End Sub 

Public Sub CloseRS() 
    If Rs.State = adStateOpen Then Rs.Close 
    Rs.CursorLocation = adUseClient 
End Sub 
+0

我已經添加cnn命令,但它仍然不能正常工作 –

+0

rs.RecordCount不算什麼! –

+0

你是什麼意思? –