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

时间:2010-10-15 14:06:19

标签: ms-access forms ms-access-2007 ms-access-2003

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

2 个答案:

答案 0 :(得分:3)

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

  1. 使用表单中的unbound text box作为搜索输入字段。这将允许用户将一些文本输入到框中并按Enter键,或者如果您选择执行某种搜索,则单击一些相关的“GO”按钮。
  2. 将此文本框控件的`OnChange`属性设置为您设计用于处理此事件的宏或方法的名称(如果您改为设置按钮,则单击事件属性)检查文本框值;和b)处理它;通常允许用户按下输入或单击按钮来执行此操作)。您也可以从某个按钮单击事件中调用“inputbox”来弹出提示,以允许用户输入要搜索的产品值。
  3. 在您的处理脚本中,使用DLookup()将该用户提供的值用于您的product表,以获得一些有意义的产品价值,然后您可以将其放在表单的任何位置。
  4. 此外,虽然我不熟悉您的特定设置,但似乎您应该丢弃您的Excel文件并使用直接用户连接MS Access输入表单。您可能会发现直接处理用户输入更容易,而不是通过oustide文件间接处理。这样,您就可以更好地控制用户输入验证和用户反馈,而不用担心Excel客户对这些电子表格的感觉。

答案 1 :(得分:0)

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

此外,它听起来并不像是在考虑主键。

听起来也不像是“关系”。

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

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

所以我们有:

Invoices -->  InvoiceItems
Products -->  InvoiceItems

现在您需要在表单中实现此功能。

匹配表及其关系,创建InvoiceForm并创建InvoiceItemsSubForm。 InvoiceItemsSubForm用于保存许多项目,是一种连续的形式。

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

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

如果我误解了你的问题,我很抱歉。如果我没有误解你的问题,你需要学习很多......