2013-08-13 6 views
0

Следующий код вызывает ошибку при попытке запустить его, я полагаю, что мне удалось фактически подключиться к базе данных, и я выбрал ячейку так, чтобы не было уверенности чего не хватает.Ошибка синтаксиса VBA (отсутствующий оператор) в выражении запроса 'PopID ='

ОШИБКА:

Syntax error (missing operator) in query expression 'PopID ='.

В идеале я хотел бы иметь возможность перечислить четыре клетки, которые входят в четыре колонки доступа, добавляя каждый раз, когда макрос выбежала

Const TARGET_DB = "testdb.accdb" 

Sub AlterOneRecord() 'not working yet 

    Dim cnn As ADODB.Connection 
    Dim rst As ADODB.Recordset 
    Dim fld As ADODB.Field 
    Dim MyConn 
    Dim lngRow As Long 
    Dim lngID As String 
    Dim j As Long 
    Dim sSQL As String 

        'determine the ID of the current record and define the SQL statement 
        lngRow = ActiveCell.Row 
        lngID = Cells(lngRow, 1).Value 

    sSQL = "SELECT * FROM tblPopulation WHERE PopID = " & lngID 

    Set cnn = New ADODB.Connection 
    MyConn = ThisWorkbook.path & Application.PathSeparator & TARGET_DB 

    With cnn 
    .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" 
    .Open MyConn 
    End With 

    Set rst = New ADODB.Recordset 
    rst.CursorLocation = adUseServer 
    rst.Open Source:=sSQL, _ 
      ActiveConnection:=cnn, _ 
      CursorType:=adOpenKeyset, _ 
      LockType:=adLockOptimistic 

    'Load contents of modified record from Excel to Access. 
    'do not load the ID again. 
    For j = 2 To 7 
     rst(Cells(1, j).Value) = Cells(lngRow, j).Value 
    Next j 
    rst.Update 

    ' Close the connection 
    rst.Close 
    cnn.Close 
    Set rst = Nothing 
    Set cnn = Nothing 
End Sub 

я нахожу это странным с ними оба являются продуктами M $, что это недостаточно хорошо документировано или действительно очень легко выполнить. Возможно, я собираюсь сделать это неправильно.

Как я могу заставить его содержать ячейки A1 и B2, например?

ответ

2

Вы должны процитировать строки

sSQL = "SELECT * FROM tblPopulation WHERE PopID = '" & lngID & "'" 
+0

«никакого значения приведены для более одного параметра» ошибка показывает сейчас – user2341069

+2

Выглядит как ваш 'lngID' не содержит никакого значения. –

+0

Как я могу заставить его содержать ячейки A1 и B2, например? – user2341069

Смежные вопросы