这是我的问题。我有2张桌子 tvehicle和tPMCL tVehicle表有我们的车辆列表,tPMCL在预防性的maint时保持。完了。
tvhhicle.VehicleTagnumber保存实际的牌号,tPMCL.Tag只保留从输入时起查找该号码的索引,我希望它有标签号,所以当我循环浏览我的数据时比较它能够匹配,因为它是:
它正在将“XPE 269”中的某些内容与1进行比较,但效果并不好。
有什么想法吗?答案可能不是VBA答案,它可能是首先进行查找的不同方式。但我找不到另一种方法来查找并实际存储板号而不是它的索引。
答案 0 :(得分:1)
您认为Index的内容实际上是外键。这是一件好事。这意味着如果VehicalTagNumber在何处改变(例如,错误的输入),则不需要更新引用表。
如果您需要循环使用tPMCL并且需要相应的标签号,则可以执行以下两种操作之一。
您可以使用Dlookup在每个循环中获取它。例如
Dim strTag As String
strTag = DLookup("[VehicleTagnumber]", "tvhhicle","[Id] = 1")
然而,对于大量记录而言,这将是缓慢的。
相反,只需将记录集基于连接两个表的SQL语句,而不是直接打开表。
Dim dbVehicle As Object
Dim rstVehicle As Object
Dim fldEnumerator As Object
Dim fldColumns As Object
Dim strSQL as String
Set dbVehicle = CurrentDb
Set rstVehicle = dbVehicle.OpenRecordset("tVehicle")
Set fldColumns = rstVehicle.Fields
strSQL = "SELECT * FROM tMPCL m INNER JOIN tVehicle v ON m.Tag = v.ID"
Set rsttPMCL = dbVehicle.OpenRecordset(strSQL)