访问表单,从另一个表中搜索记录并插入当前表单中的字段

Posted

技术标签:

【中文标题】访问表单,从另一个表中搜索记录并插入当前表单中的字段【英文标题】:Access form, search for a record from another table and insert into field in current form 【发布时间】:2010-10-15 14:06:19 【问题描述】:

我有一个存储发票的表格和一个基于该表格的表格,看起来像发票,以便您可以搜索以前的发票。目前我正在用 excel 创建发票,然后将数据作为新记录导出到 Invoice 表中。我想知道是否有一种方法可以从我的发票表单创建发票。我有一张我们携带的用于发票的所有产品和价格的表格。 有没有办法在发票表单上放置一个搜索按钮,以便在产品表中搜索记录或“产品”并将其插入新发票的字段中? 我已经查看了一些代码来连接到产品表并将其插入发票表单的字段中,但是我该如何搜索呢? 有什么想法或想法吗?任何帮助将不胜感激!

【问题讨论】:

通常的方法是使用库存项目的下拉列表,如以下屏幕截图所示:dfenton.com/DFA/examples/InvoiceDetail.png。这就是你要找的东西吗? 【参考方案1】:

通过 VBA 和控制事件来处理通常是最佳选择:

    在表单中使用unbound text box 作为搜索输入字段。这将允许用户在一个框中输入一些文本并按 Enter,或者如果您选择执行某种搜索,则可以单击一些相关的“GO”按钮。 将此文本框控件的`OnChange` 属性设置为您设计用于处理此事件的宏或方法的名称(或单击事件属性,如果您已将按钮设置为a)检查文本框值; b) 处理它;通常允许用户按下回车键或单击按钮来执行此操作)。您也可以简单地从某个按钮单击事件中调用“输入框”来弹出提示,让用户输入要搜索的产品值。 在您的处理脚本中,使用 DLookup() 将用户提供的值用于您的产品表,以获取一些有意义的产品值,然后您可以将其放置在表单的任何位置。

此外,虽然我不熟悉您的特定设置,但您似乎应该放弃您的 excel 文件并使用直接与用户交互的 MS Access 输入表单。您可能会发现直接处理用户输入总是比通过 oustide 文件间接处理更容易。这样一来,您就可以更好地控制用户输入验证和用户反馈,而不用担心 Excel 客户端在这些电子表格中的感觉。

【讨论】:

“无限文本字段”?你的意思是“未绑定的文本框”吗? 是的,只是对命名约定很懒惰。【参考方案2】:

不确定这是正确的设计。您一次只为一种产品开具发票吗?

此外,听起来您好像不是在考虑主键。

这听起来也不像是您在“关系”地思考。

让我澄清一下。在大多数开票系统中,通常有一个 Invoices 表,然后是一个 InvoiceItems 表。发票项目和发票之间的关系是一张发票与(可能但不一定)许多项目。

然后您就有了 Products 表。 Products 和 InvoiceItems 之间的关系是一个产品对多个 InvoiceItems。即,您可以将给定的产品销售给许多不同的客户。

所以我们有:

Invoices -->  InvoiceItems
Products -->  InvoiceItems

现在您需要在表单中实现这一点。

匹配您的表及其关系,您创建一个 InvoiceForm 并创建一个 InvoiceItemsSubForm。 InvoiceItemsSubForm 是一个连续的表单,用于容纳许多项目。

在 InvoiceItemsSubForm 中,您将有一个获取产品主键的字段(以及其他字段,例如日期、购买的产品数量等)。

要搜索您的产品,您可以使用一个包含 ProductId 和 ProductName 字段的组合框。这个组合框有两个用途:它允许您搜索您的产品,它允许您在 InvoiceItem 记录中输入您想要的产品。

如果我误解了您的问题,我深表歉意。如果我没有误解你的问题,你还有很多东西要学……

【讨论】:

不,你没有误解我的问题。我想我没有清楚地解释自己。我会为你解释整个情况。首先,我有一个主产品表,其中包含我们携带的所有不同品牌的产品以及我们购买产品的价格。在产品表中,根据我们购买产品的价格和客户购买的数量,我有不同的价格水平。我们也有一些个别的客户查询 b/c 我们对某些产品进行了一些休息。因此,将价格与产品联系起来很难为 b/c 开具发票,一个产品可能有多个价格。 以及拥有许多不同产品的客户。这描述了数据库的产品定价部分。接下来我有一个发票方面。最初我是这样设置发票的;我将两个表导入到 Excel 文件中,客户和产品。然后我设置了发票的格式。我使用组合框将导入表中的信息获取到发票中。发票完成后,我创建了一个宏来将发票中的信息写入存储发票副本的表中。然后我创建了一个表单来加载存储的发票,以便我可以查找发票或制作 更改。然后我开始思考。有没有办法可以使用发票表单从产品表中搜索产品并将数据插入发票上的一行。这样我就不必通过excel了。我必须在 excel 中做的方式是在发票上的每一行都有一个组合框,我相信我也必须在这里这样做。我宁愿不使用组合框 b/c 我们有近 2000 种产品,并且试图在具有这么多产品的组合框中找到一种产品是一件很痛苦的事。现在这更有意义了吗? Lars,你一次问了太多问题。分解问题。现在你已经失去了我,我需要一个小时才能弄清楚你的应用程序在做什么。人们为此付钱给我。我总是愿意就具体问题提供帮助,但不会试图找出您的整个应用程序出了什么问题。 我刚才所说的一切都已经完成并且正在发挥作用。我想要的只是一种搜索产品并将其插入我的发票表单的方法

以上是关于访问表单,从另一个表中搜索记录并插入当前表单中的字段的主要内容,如果未能解决你的问题,请参考以下文章

如何将自动填充的表单记录(从另一条记录创建)添加到访问表中?

从表单中的字段取值到其他表中的新记录

在访问中使用表单添加新记录时如何在表单字段中保留公式

通过表单事件过程中的函数填充访问文本框

Laravel 从一个表单中插入多条记录

将表单框中的值插入表格的最后一条记录