【问题标题】:combobox data from 2 related tables Ms Access来自 2 个相关表 Ms Access 的组合框数据
【发布时间】:2015-11-14 00:17:26
【问题描述】:

我有 2 个表:Salesagent 和 Client,它们通过 id 关联,每个销售代理都有太多具有相同 id 的客户,

我想添加组合框来显示销售代理,然后添加另一个组合框来显示该销售代理的客户

combosale 还可以..

comboclient,仅选择1'st salesagent时显示客户表的1'st field(只有一个不是全部)

当我选择另一个销售代理时它显示什么都没有,即使它有与之相关的客户

:(

我用过: Me.combmoclient = DLookup("[cname]", "[client]", "[salesagent]= '" & Me.Combosale & "'")

【问题讨论】:

    标签: ms-access combobox vba ms-access-2010


    【解决方案1】:

    不要使用 Dlookup,它只会返回符合您条件的第一个值,而您确实需要该销售代理的整个客户集。相反,您应该使用 combosale 字段的 AfterUpdate() 事件来执行以下操作:

    Private Sub Combosale_AfterUpdate()
    Me.comboclient.RowSource = "SELECT cname FROM client WHERE id  = " & Me.Combosale.Column(1) & ";"
    End Sub
    

    一般来说,纯 SQL 查询比 Dlookup、Dsum 等函数快得多。如果您远离它们并将 SQL 代码写入您的 Access VBA,您将拥有一个更加稳定的应用程序。

    【讨论】:

    • comboclient 现在拥有所有销售代理的客户名称,而不是我在 combosale 中选择的客户名称,
    • 我试过 Me.Text35 = Me.Combosale.Column(1) Me.comboclient.RowSource = "SELECT cname FROM client WHERE id = '" & Me.Text37 & "';" ...但仍然无法正常工作:(
    • 如果这对您有帮助,您可以接受答案吗?
    【解决方案2】:

    这个 vba 解决了这个问题 :)

    Private Sub Combosale_AfterUpdate()
    Me.comboclient.RowSource = "SELECT cname FROM client WHERE id  = " & Me.Combosale.Column(1) & ";"
    End Sub
    

    感谢您的帮助太多了!!

    【讨论】:

    • 真的,您应该接受我发布的答案,而不是重新发布相同的代码并接受您自己的答案。没有人以这种方式获得任何代表。
    • 谢谢!迟到总比不到好。 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    相关资源
    最近更新 更多