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

问题描述:

这是我的问题。我有2个表 tvemicle和tPMCL tVehicle表有我们车辆的列表,并且tPMCL在预防性维护时有效。已经完成了。ACCESS VBA将字符串与另一个表中的字符串比较

tvhhicle.VehicleTagnumber包含实际板号,tMCMC.Tag仅包含从输入时起查找该数字的索引,我希望它具有标签编号,因此当我通过数据比较循环时它将能够匹配,因为它是:

它是比较沿着“XPE 269”的线1的东西,那不是很好。

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

+0

索引从哪里来?你如何从索引中获得板块? – Fionnuala

+0

tPMCL.Tag *真的是索引*还是外键? –

+0

tMPCL将此用于查找数据输入: – user1437797

看来你认为的索引实际上是一个外键。这是一件好事。这意味着如果VehicalTagNumber在哪里改变(例如错误的输入)引用表就不需要更新。

如果您需要循环访问tMCMC并且您需要相应的标签号码,您可以执行以下两项操作之一。

您可以使用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) 
+0

你在这里完全迷失了我。我用VBA的优点是最好的,我无法遵循你发布的逻辑。我真的不关心如果我的数据库sizre。因为我们在任何时候最多只有5或6辆车。在这个程序的整个生命周期中,即使复制2个表中的数据,我的数据库也可能达到15 MB中的10个。 – user1437797

+0

这是我的代码它mauy帮助看到我在做什么。 – user1437797

+0

'Dim dbVehicle As Object Dim rstVehicle As Object Dim fldEnumerator As Object Dim fldColumns As Object Set dbVehicle = CurrentDb Set rstVehicle = dbVehicle.OpenRecordset(“tVehicle”)设置fldColumns = rstVehicle.Fields设置rsttPMCL = dbVehicle。OpenRecordset(“tPMCL”)' – user1437797