Получите доступ к запросу параметра VBA, используя 'IN' - PullRequest
0 голосов
/ 09 июля 2010

У меня есть запрос на создание таблицы, который используется для запуска отчета (из-за серии объединений и различных других сложных критериев - это должна быть таблица, или она дает сбой при слишком большом количестве запросов).

Теперь я должен иметь возможность фильтровать используемые данные (это суммирующие поля), используя 'IN' с выборками из списка.

Вот запрос, который я хочу, с [EWAList], являющимся выбранными элементами в списке, кто-нибудь может помочь?

SELECT C.Num, P.Name, E.Phase, C.Code, 
       Sum(C.Hours) AS Hours, Sum(C.Total) AS Total, 
       Sum(TotalForC.Total) AS ETotal, E.E_Date     
INTO CData
FROM (P INNER JOIN 
     (C INNER JOIN E ON C.EId=E.EId) 
                     ON P.Number=E.Num) 
        INNER JOIN TotalForC ON E.EId=TotalForC.EId    
WHERE (((C.DateCreated)>=[mydate])) 
And E.E_Date<>'0' 
And E.E_Date<>'' 
AND E.E_Number IN ([EWAList])    
GROUP BY C.Num, P.Name, E.Phase, C.Code, E.E_Date;

Любая помощь приветствуется!У меня нет идей на данный момент

Спасибо за подсказку по разрывам строки: -)

Спасибо!Christy

1 Ответ

2 голосов
/ 09 июля 2010

Вам нужно будет использовать VBA для построения запроса, чтобы получить список IN.Например:

Dim qdf As QueryDef

'' ListBox is the name of your listbox, the item you are looking for is
'' in column 0 (first column) and it is numeric

For Each itm In Me.ListBox.ItemsSelected
  EWAList = EWAList & "," & Me.ListBox.Column(0, itm)
Next

strSQL = "SELECT C.Num, P.Name, E.Phase, C.Code, " _
   & "Sum(C.Hours) AS Hours, Sum(C.Total) AS Total, " _
   & "Sum(TotalForC.Total) AS ETotal, E.E_Date " _
   & "INTO CData " _
   & "FROM (P INNER JOIN " _
   & "(C INNER JOIN E ON C.EId=E.EId) " _
   & "ON P.Number=E.Num) " _
   & "INNER JOIN TotalForC ON E.EId=TotalForC.EId " _
   & "WHERE (((C.DateCreated)>=[mydate])) " _
   & "And E.E_Date<>'0' " _
   & "And E.E_Date<>'' " _
   & "AND E.E_Number IN (" & Mid(EWAList,2) & ") " _
   & "GROUP BY C.Num, P.Name, E.Phase, C.Code, E.E_Date"

Set qdf = CurrentDB.QueryDefs("NameOfAnExistingQuery")
'' Permanentlt overwrite the sql of the query
qdf.SQL = strSQL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...