根据另一个表的字段更新表单中未显示的字段

时间:2013-09-13 19:22:02

标签: database macros access-vba

使用Access 2010.对自动化和宏来说相当新。

我有两个表格(tblProductReceivedtblBins)和一个表单(frmProductReceived)。

tblBins中的字段对应于bin所在的位置(名为BinLocationID),tblProductReceived表跟踪特定bin已收到的产品。

我需要的是tblProductReceived字段PRLocationID[tblProductReceived].[PRLocationID])在选择特定bin时自动填充bin所在的位置([tblBins].[BinLocationID])表格(frmProductReceived)。

我能做到这一点吗?我是macros / vba的新手,我非常感谢一些提示/建议!

此外,PRLocationID字段的表单中没有对象。我希望根据用户选择的bin编号字段([tbl.Bins].[BinID]

在后台更新它

以下是tblBins,tblProductReceived和frmProductReceived的图像:http://imgur.com/a/0IUHm/(无法在没有声望的情况下发布图像)


看到这是我的结构:

tblProductReceived是一个记录存放在垃圾箱中的项目的表。

tblBins是包含字段BinLocationID的物理放置位置(bin)的列表

BinLocationID实际上对应于具有所有位置的另一个表(tblLocations)。

但是我不能简单地将字段从tblBins链接到tblProductReceived,因为迟早的垃圾箱可以从一个位置移动到另一个位置(无论什么原因是不重要的)。这就是为什么我需要将[tblBins]。[BinLocationID]的副本复制到[tblProductReceived]。[PRLocationID]因为如果bin移动,它会弄乱任何分析(因为我们想要跟踪哪里产品不仅在垃圾箱的位置下降了。

此外,我设置的表单确实有下拉到各个bin([tblProductReceived]中的[PRBinID] - (我在tblBins上使用查询查询)但请记住,PRLocationID中没有txtBox因为它是多余的。这些垃圾箱已经到位,所有我需要的是它被复制到适当的表格。

我能忽视什么吗?

1 个答案:

答案 0 :(得分:0)

经过几个小时的挑选后,这是我提出的最优雅的解决方案:

在表单上,​​我有一个名为txtPRLocationID的隐藏txtBox,其行源为PRLocationID(在tblLocations中)

在txtPRBinID选择了一个bin后,我有一个在Lose Focus编写的事件:

   'Private Sub txtPRBinID_LostFocus()'
   '[txtPRLocationID].Value = DLookup("[BinLocationID]", "tblBins", "BinID = " & Nz(Me!txtPRBinID.Value, 1))'
   'End Sub'

基本上它的作用是每次为txtPRBinID选择一个值并且用户继续(丢失txtBox的焦点)时,对于BinID的值,tblBins.BinLocationID发生DLookup并更改txtPRLocationID文本框的值。

Nz()'是为了避免Null错误(根据谷歌搜索)。不确定是否有必要,如果有人可以确认,请做!

感谢阅读!