2017-02-07 3 views
1

Я получил ошибку en при открытии моей формы в доступе.
Этот код должен быть выполнен с событием OnOpen для этой формы. Но я получаю сообщение об ошибке в моем скрипте.ACCESS2013 - Ошибка времени выполнения '3061'. Слишком мало параметров. Ожидаемый 1

Dim ThisDB As DAO.Database 
    Set ThisDB = CurrentDb 
    Dim d As DAO.Recordset 
    Dim q As String 
    q = "SELECT [tbl-apartner].[EMail] FROM [tbl-apartner] WHERE [tbl-apartner].[SID] = " & sid2 'sql query 
    Set d = ThisDB.OpenRecordset(q, dbOpenDynaset) 
    Dim Result As String 
    Result = "" 
    If d.EOF = False Or d.BOF = False Then 'if-else clause 
     d.MoveFirst 
     Do While Not d.EOF 
      If Result <> "" Then Result = Result & "; " 
      Result = Result & d!EMail 
      d.MoveNext 
      Loop 
     End If 
    d.Close 

Неисправная линия:

Set d = ThisDB.OpenRecordset(q, dbOpenDynaset) 
+1

сделать 'Debug.Print q' перед OpenRecordset. Я предполагаю, что ваш 'sid2' равен NULL –

+0

. Я сделал' MsgBox q', а sid2 не был NULL. вывод 'MsgBox q'is' SELECT [tbl-apartner]. [EMail] FROM [tbl-apartner] WHERE [tbl-apartner]. [SID] = AKP' – rel0aded0ne

ответ

1

Я решил проблему.

Линия

q = "SELECT [tbl-apartner].[EMail] FROM [tbl-apartner] WHERE [tbl-apartner].[SID] = " & sid2

не было правильным.

q = "SELECT [tbl-apartner].[EMail] FROM [tbl-apartner] WHERE [tbl-apartner].[SID] = " & "'" & sid2 & "'" 

Разница заключается в том: = " & "'" & sid2 & "'"

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