【发布时间】:2020-10-21 16:37:15
【问题描述】:
我一直在尝试创建一个包含来自 3 个表的信息的表单。在此表单上,我希望有一个过滤器组合框,以便用户可以选择一个成员类型,它会将列表过滤到具有该成员类型的成员。
我们数据库中的成员可以有不止一种类型。为此,我创建了一个 memberTable:
会员ID 名称 名字 等等
成员类型表:
会员类型ID 成员类型名称
和一个连接表 membermembertype:
会员ID 成员类型ID
我尝试使用许多不同的查询设置我的表单:
SELECT qryMemberType.MemberID, qryMemberType.FName, qryMemberType.SName,
qryMemberType.MemberTypeName, qryMemberType.MemberTypeID FROM qryMemberType;
SELECT [member].[MemberID] AS [member_MemberID], [member].[FName], [member].[SName],
[membertype].[MemberTypeID] AS [membertype_MemberTypeID], [membertype].[MemberTypeName],
[membermembertype].[MemberID] AS [membermembertype_MemberID], [membermembertype].[MemberTypeID]
SELECT [member].[MemberID] AS [member_MemberID], [member].[FName], [member].[SName],
[membermembertype].[MemberID] AS [membermembertype_MemberID],
[membermembertype].[MemberTypeID] AS [membermembertype_MemberTypeID],
[membertype].[MemberTypeID] AS [membertype_MemberTypeID]
我试图过滤的组合框的 VBA 是:
Dim myMember As String
myMember = "SELECT ... FROM ... WHERE ([MemberTypeID] = " & Me.cboMemberType & ");"
Me.frmFilterTestSub.Form.RecordSource = myMember
Me.frmFilterTestSub.Form.Requery
我为组合框的 VBA 中的 SELECT 语句尝试了多种不同的语法,包括:
"Select * from membermembertype where ([MemberTypeID] = " & Me.cboMemberType & ")"
"SELECT member.MemberID AS member_memberID, member.FName, member.SName,
membertype.MemberTypeID AS membertype_MemberTypeID, membertype.MemberTypeName,
membermembertype.MemberID AS membermembertype_MemberID,
membermembertype.MemberTypeID AS membermembertype_MemberTypeID
FROM member
LEFT JOIN (membertype
RIGHT JOIN membermembertype ON membertype.[MemberTypeID] = membermembertype.[MemberTypeID])
ON member.[MemberID] = membermembertype.[MemberID]
WHERE ([MemberTypeID] = " & Me.cboMemberType & ")"
"SELECT member.*,
(membermembertype.MemberID AS mmt_MemberID),
(membermembertype.MemberTypeID AS mmt_MemberTypeID),
membertype.MemberTypeName
FROM (member
LEFT JOIN membermembertype ON mmt_MemberID = (member.MemberID AS m_MemberID))
RIGHT JOIN membertype ON mmt_MemberTypeID=(membertype.MemberTypeID AS mt_MemberTypeID)
WHERE ([MemberTypeID] = " & Me.cboMemberType & ");"
我很确定第一个示例返回了最接近的结果,列表返回了每个所选成员类型的正确记录数,但是字段中填充了 #Name?错误值,这就是为什么我试图用多种不同的方法来加入表格。其他 SELECT STATEMENTS 正在返回 SQL 语法错误。
任何建议将不胜感激!
【问题讨论】: