2012-06-05 69 views
0

這是我的問題。我有2個表 tvemicle和tPMCL tVehicle表有我們車輛的列表,並且tPMCL在預防性維護時有效。已經完成了。ACCESS VBA將字符串與另一個表中的字符串比較

tvhhicle.VehicleTagnumber包含實際板號,tMCMC.Tag僅包含從輸入時起查找該數字的索引,我希望它具有標籤編號,因此當我通過數據比較循環時它將能夠匹配,因爲它是:

它是比較沿着「XPE 269」的線1的東西,那不是很好。

任何想法?答案可能不是VBA答案,它可能是首先進行查找的不同方式。但我無法找到另一種方法來查找並實際存儲板號,而不是它的索引。

+0

索引從哪裏來?你如何從索引中獲得板塊? – Fionnuala

+0

tPMCL.Tag *真的是索引*還是外鍵? –

+0

tMPCL將此用於查找數據輸入: – user1437797

回答

1

看來你認爲的索引實際上是一個外鍵。這是一件好事。這意味着如果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

相關問題