ACCESS VBA将字符串与另一个表中的字符串进行比较

时间:2012-06-05 16:11:08

标签: vba access-vba

这是我的问题。我有2张桌子 tvehicle和tPMCL tVehicle表有我们的车辆列表,tPMCL在预防性的maint时保持。完了。

tvhhicle.VehicleTagnumber保存实际的牌号,tPMCL.Tag只保留从输入时起查找该号码的索引,我希望它有标签号,所以当我循环浏览我的数据时比较它能够匹配,因为它是:

它正在将“XPE 269”中的某些内容与1进行比较,但效果并不好。

有什么想法吗?答案可能不是VBA答案,它可能是首先进行查找的不同方式。但我找不到另一种方法来查找并实际存储板号而不是它的索引。

1 个答案:

答案 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)