2015-01-29 3 views
0

У меня есть запрос, который имеет параметр, который не является частью столбцов результатов, как показано ниже.
Обычно он появляется, когда я выполняю запрос.Передача параметра для набора записей VBA

PARAMETERS SelectedDate DateTime; 
Select col1,col2, col3 from qry 
where col4 = [SelectedDate] 

Мне нужно создать набор записей VBA только для col1 & col2.
Может кто-нибудь, пожалуйста, сообщите, как я могу передать этот параметр? Возможно ли это?

ответ

1

Как я понимаю, вы хотите передать параметр из VBA в Access Query?

Если это так, вам необходимо создать модуль в VBA.

Это может быть так:

Public Str As String 

Public Function str_move() As String 
str_move = Str 
End Function 

Так Str ваша переменная в VBA. В вашем запросе вы можете теперь написать str_move() и, следовательно, получить это значение Str.

ВНИМАНИЕ: Имя модуля не может быть таким же, как имя функции. Назовите модуль m_MoveVariables

Не имеет значения. Имя модуля не используется в запросах.

Я надеюсь, что это сработает для вас.

+0

Имя модуля имеет значение, и код, который вы дали не будет работать, по крайней мере, не без изменений. – PaulFrancis

+0

Почему это не работает? Он работает здесь. Я скопировал его из своего собственного модуля ... Который я использую каждый день. –

+0

Мой комментарий был сфокусирован на имени модуля так же, как имя функции. – PaulFrancis

2

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

Dim db As DAO.Database 
Dim qdf As DAO.QueryDef 
Dim rs As DAO.Recordset 
Dim strSelect As String 

strSelect = "PARAMETERS SelectedDate DateTime;" & vbCrLf & _ 
    "Select col1,col2, col3 from qry" & vbCrLf & _ 
    "where col4 = [SelectedDate];" 
Debug.Print strSelect '<-- inspect this in Immediate window; Ctrl+g to go there 

Set db = CurrentDb 
Set qdf = db.CreateQueryDef(vbNullString, strSelect) 
qdf.Parameters("SelectedDate").Value = Date '<-- whatever Date/Time value you want here 
Set rs = qdf.OpenRecordset 
1

Можно даже просто использовать Recordset, без использования объекта QueryDef,

Dim rsObj As DAO.Recordset 

Set rsObj = CurrentDB.OpenRecordset("SELECT col1, col2 FROM qry WHERE col4 = " & _ 
            Format(Date(), "\#mm\/dd\/yyyy\#")) 

'Date() can be replace with any Date or Date Variable. 
Смежные вопросы