2011-11-30 74 views
1

我正在研究一个小的小项目,目前只是一个大型项目的测试,但我碰到了一个块,我找不到解决方案。从表中选择数据并自动填充字段

我有一个表中的项目列表,他们包含的信息,如项目名称和价格。我有另一张销售表。我有一个表格可以让你选择一个项目名称,然而,我希望表格的其余部分自动填充项目表中的信息。

当项目名称字段被更改时,我可以使消息框出现,但是,通过搜索,我无法找到一种方法来搜索项目表中的字段值,然后读取价格值,然后将价格值插入此表单中的字段。

一表 “的项目”: ITEMNAME:文本 价格:通货

二表 “销售”: ITEMNAME:文本 价格:通货 日期:时间/日期

我希望我有如果没有,我会很好地解释自己,只是问,我会尽力澄清。

+0

你可以发布你的两个表的表定义吗?这将帮助我们帮助你:) –

+0

更新了我的原始帖子。我的目标是有一个表格和一个显示其项目名称的项目表的下拉列表,选择一个项目名称将填写项目名称和价格在一些领域,所以价格可以稍后改变。谢谢:) –

回答

0

将事件过程(代码构建器)添加到下拉框的onchange事件中。在设计视图中右键单击下拉菜单并选择属性。然后在属性窗口中的事件选项卡上单击更改行上的,然后单击'...'按钮。

在此事件的代码中,您需要查询数据库(使用下拉框的索引或ID字段)将项目详细信息拖到记录集中。查询看起来somethign像

"SELECT * FROM Items WHERE ItemID = " & dropdownboxname.value 

那里有很多的如何做到这一点的网站

,那么你可以在记录的必填字段更新形式的各种文本框的例子。再次那里有很多这样的例子在网络上

编辑:在回应评论下面

你需要做的线沿线的somethign ...

Dim rsItems AS DAO.Recordset 
Set rsItems = CurrentDB.OpenRecordset("SELECT * FROM Items WHERE ItemID = " & dropdownboxname.value) 
If not rsItems.EOF Then 
    textbox1.text = rsItems![fieldname1] 
    textbox2.text = rsItems![fieldname2] 
end if 
Set rsItems = nothing 

让我知道如果多数民众赞成任何帮助;-)

+0

现在调查记录集。如果我遇到任何问题,我会更新。 –

+0

要运行该查询,我需要连接到表我假设,我已经看了一下,我找不到连接到本地表的方式,我找到了一个例子,但它来自一个从近10年前开始发布,并没有奏效。但我发现如何更新文本框。 –

2

看看Northwind datatabase(northwind.mdb)附带Access。他们有几个如何基于组合框更改值来更新表单的示例。

另外,您也可以查看Northwind数据库中的表格设计。一般来说,将产品名称用作两个表格中的关键字段是个不错的主意。会发生什么(最终会发生)是产品名称会因其中一个产品而发生变化,您必须更新引用该产品名称的所有表格。

更好的设计是在产品表中使用关键字段(我建议使用AutonumberField),然后引用销售表中的关键字段。这样,如果产品名称发生更改,您只需在一个位置进行更改,而不是很多。

下面是一个示例表的布局来说明我的观点:

表项目:

ItemID (Autonumber - Primary Key on the table) 
ItemName (Text - Name of product) 
Price (Currency) 

表:销售

ItemID (Integer - Foreign Key to Items.ItemID) 
Quantity (Integer - # of units ordered) 
Price (Currency) 
OrderDate (Date/Time) 
+0

我遗漏了ID字段,它已经在那里,所以我只是假设为所有新表设置了ID字段。我来自PHP并使用MySQL。 我无法找到Northwind数据库,但是我有更新字段现在排序,它只是试图连接到表来运行SQL。 –

+0

我更新了我的答案,包括一个链接,从MS下载Northwind数据库。 –

+0

谢谢,只是看了一下,这将有助于探索Access的更深入和更深入。自从我使用它以来已经有一段时间了,上次大约是6年前在学校的IT课程。 –

1

这里大部分答案都张贴了太多的代码和各种的SQL语句。因此,这些答案正在造成世界的贫困。

最简单的方法是让向导在窗体上构建一个组合框来选择给定的项目。这个组合框将因此基于项目表。组合框的第一列将是项目表的PK(自动编号ID)。这个组合框因此将被绑定到销售中的ItemID列。该向导还会“隐藏”该ID,但是您想要在该组合框中包括其他列,例如价格等。而且您可能应该在该组合框的第二列中显示项目表中项目的描述。如上所述,您还需要包括价格栏。

因此,你选择一个项目后,再有汽车马蒂奇填写价格栏,使用此代码:

此代码放在项目组合框的更新后事件:

Me.Price = me.ItemComboBox.column(2) 

所以,当你选择一个项目,价格字段将自动填补你。并注意你如何只写一行代码。

因此,所有这些都可以使用内置的向导和一行代码完成。

相关问题