Отчет о доступе за 2010 год, частичное совпадение с введенными критериями поиска - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть отчет, который использует следующий запрос SQL:

SELECT AccountPerformanceAllHistory.AccountNumber, 
AccountMaster.AccountName AS Name, AccountCurrentModel.Model,    
AccountPerformanceAllHistory.MarketValue, 
AccountPerformanceAllHistory.Cash, ModelDetailAllHistory.Risk, 
AccountPerformanceAllHistory.QTD, AccountPerformanceAllHistory.YTD, 
AccountPerformanceAllHistory.[1Yr], AccountPerformanceAllHistory.[3Yr], 
AccountMaster.AccountAdvisor AS Advisor, 
AccountPerformanceAllHistory.PerformanceDate, 
AccountPerformanceAllHistory.Ticker
FROM ModelDetailAllHistory INNER JOIN ((AccountMaster INNER JOIN 
AccountPerformanceAllHistory ON AccountMaster.[AccountNumber] = 
AccountPerformanceAllHistory.[AccountNumber]) INNER JOIN 
AccountCurrentModel ON AccountMaster.[AccountNumber] = AccountCurrentModel. 
[AccountNumber]) ON ModelDetailAllHistory.[ModelName] = 
AccountCurrentModel.Model
GROUP BY AccountPerformanceAllHistory.AccountNumber, 
AccountMaster.AccountName, AccountCurrentModel.Model, 
AccountPerformanceAllHistory.MarketValue, 
AccountPerformanceAllHistory.Cash, ModelDetailAllHistory.Risk, 
AccountPerformanceAllHistory.QTD, AccountPerformanceAllHistory.YTD, 
AccountPerformanceAllHistory.[1Yr], AccountPerformanceAllHistory.[3Yr], 
AccountMaster.AccountAdvisor, AccountPerformanceAllHistory.PerformanceDate, 
AccountPerformanceAllHistory.Ticker
ORDER BY ModelDetailAllHistory.Risk, AccountPerformanceAllHistory.[1Yr] 
DESC;

Отчет запускается нажатием кнопки:

Private Sub Command3_Click()

Dim StrWhichMonth As String
Dim StrWhichClient As String
Dim CYear, CMonth As Variant
Dim StrSearch As String

StrWhichMonth = InputBox("Enter YYMM you want to report:")
CYear = "20" & Mid(StrWhichMonth, 1, 2)
CMonth = Mid(StrWhichMonth, 3, 2)
StrWhichMonth = DateSerial(CYear, CMonth + 1, 0)

StrWhichClient = InputBox("Enter Client name ('*' for all):")

StrSearch = "AccountPerformanceAllHistory.PerformanceDate = #" & StrWhichMonth _
    & "# AND AccountPerformanceAllHistory.Ticker = " & Chr(34) & "1" & Chr(34) & "" _
    & " AND AccountMaster.AccountName Like " & Chr(34) & StrWhichClient & Chr(34)

StrWhichMonth = "AccountPerformanceAllHistory.PerformanceDate = #" & StrWhichMonth _
    & "# AND AccountPerformanceAllHistory.Ticker = " & Chr(34) & "1" & Chr(34) & ""
DoCmd.SetWarnings False
'    DoCmd.OpenReport "RPTAccountPerformanceAllHistorySummary", acViewReport, , StrWhichMonth
DoCmd.OpenReport "RPTAccountPerformanceAllHistorySummary", acViewReport, , StrSearch
DoCmd.SetWarnings True
End Sub

Как вы можете сказать, я добавил поиск AccountName в коде нажатия кнопки. Старый код работает нормально.

Новый код со строкой StrSearch не работает. Когда запрос выполняется, он запрашивает «AccountMaster.AccountName» после двух запросов InputBox. Я знаю, что это означает, что что-то не так с StrSearch, но я не знаю, что не так. Я искал в Интернете, но не смог найти решение.

Любая помощь приветствуется.

ТИА

1 Ответ

0 голосов
/ 07 ноября 2018

Список полей в вашем исходном запросе включает этот ...

AccountMaster.AccountName AS Name

Поскольку вы создали псевдоним поля, набор результатов запроса не включает в себя поле с именем AccountMaster.AccountName, поэтому Access предполагает, что это должен быть параметр, и просит вас указать для него значение. Используйте псевдоним вместо исходного имени поля.

Изменить это ...

& " AND AccountMaster.AccountName Like " & Chr(34) & StrWhichClient & Chr(34)

к этому ...

& " AND [Name] Like " & Chr(34) & StrWhichClient & Chr(34)
...