【问题标题】:Add an item from a query to a form将查询中的项目添加到表单
【发布时间】:2011-11-23 22:26:00
【问题描述】:

我正在使用 Access 2010。

我正在设计一个数据库来帮助跟踪社区计划的参与者。

我有一个名为 ParticipantMaster 的表,其中包括 ParticipantID, FirstName, LastName, Address, Phone 等字段,以及在此表上构建的输入表单。

我有一组收集出勤数据的表格/表格(通过级别显示他们是否参加了部分、半场或全部课程)...与我的问题相关的字段包括 ParticipantID(来自 Participant Master) , WorkshopID, Level.

根据出席数据,我创建了一个名为 Attendance_FullorHalf 的查询,用于计算每个参与者参加了多少次半或全场会议。字段包括ParticipantIDCountStatusFirstNameLastName。此查询工作正常。

与出席不同,我有一个名为Interviews 的表格和表格,用于记录我每次呼叫参与者时的记录。他们只有在出席次数 > 2 后才有资格参加面试。

我希望在面试记录表上显示出勤人数,以便我可以在那里查看他们是否符合面试条件。

可能是一个显示类似

内容的文本框
SELECT CountStatus from Attendance_FullorHalf 
WHERE ParticipantID (from Attendance_FullorHalf query) = ParticipantID (of the record I'm on in the interview form)

我知道这可能不是我需要的那种陈述——我只是为了帮助解释我的问题而写的。

因此,如果我在面试表格中,输入 ID 为 20-563 的参与者的信息,我希望它在该表格上显示 20-563 号参与者参加了多少次会议。

希望我的问题很清楚——非常感谢!!

【问题讨论】:

    标签: sql database ms-access


    【解决方案1】:

    当然,您可以在 oncurrent event 表单中编写一个查询,提取该参与者 ID 的出席人数,然后使用查询结果更新文本框。

    我错过了什么吗?

    根据下面的评论进行编辑:

    在采访记录表单上创建一个文本框

    为表单创建一个 onCurrent 事件并选择代码生成器 你应该有一个如下所示的窗口

    Private Sub Form_Current()
    
    End Sub
    

    为此,您需要编写代码...这样的内容应该为您提供工作的起点

    Private Sub Form_Current()
        Dim rs as DAO.Recordset 'recordset object to hold the results of the sql query
        set rs = CurrentDB.OpenRecordset("INSERT YOUR SQL HERE")
        If rs.RecordCount > 0 Then 'we have a value for this participant
            txtBox.Text = rs![FIELDNAME] 'update the textboxes text value
        Else
            txtBox.Text = "0" 'else no value means 0
        End If
        set rs = nothing ' clean up the recordset after we've finished with it
    End Sub
    

    现在上面的内容非常粗糙和肮脏,但原理相当合理。打开记录集,对其运行 SQL,如果记录集现在有结果,则使用这些结果更新文本框。

    希望对您有所帮助

    【讨论】:

    • 不,我不认为你缺少任何东西......我认为你得到了我想要做的事情。我只是不确定在哪里或如何实际做到这一点。我在哪里输入该查询以及如何让它显示在该表单上?在当前事件中,我可以选择通过宏/表达式/代码生成器来构建事件。我没有看到用 SQL 编写的地方(这是我最了解的)。我不确定如何使用这些构建器以及如何让它们显示在文本框中。
    • 我已经更新了我的答案,希望能给你一个不错的起点
    • 谢谢——我自己也做了一些调查并想出了这个,这似乎有效:我创建了一个文本框并使用了这个表达式生成器=DLookUp("CountOfStatus","Attendance_FullorHalf","[ParticipantID] = Form![ParticipantID]") ...... ......
    • 好吧..如果它有效,那么不要修复它!就我个人而言,我正在努力将一些较旧的 access 2003 应用程序升级到 2010 atm 并且各种 DCount/DLookup 功能是工作生活的祸根!但这是另一个帖子的问题/咆哮;)
    猜你喜欢
    • 2022-10-12
    • 2016-04-04
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多