2010年访问报告,根据输入的搜索条件部分匹配

时间:2018-11-07 16:23:49

标签: ms-access ms-access-2010

我有一个使用以下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字符串的新代码不起作用。运行查询时,在两个InputBox提示后提示输入“ AccountMaster.AccountName”。我知道这意味着StrSearch出了点问题,但我不知道出了什么问题。我已经在网上搜索了,但找不到解决方法。

感谢您的帮助。

TIA

1 个答案:

答案 0 :(得分:0)

您的源查询中的字段列表包括此内容...

AccountMaster.AccountName AS Name

由于您为该字段加上别名,因此查询结果集不包含名为AccountMaster.AccountName的字段,因此Access假定它必须是一个参数,并要求您为其提供一个值。使用别名代替原始字段名称。

更改此...

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

对此...

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