0

これが私の問題です。私は2つのテーブルtvehicleとtPMCLを持っています。tVehicleテーブルには私たちの車両のリストがあり、tPMCLは予防保守のときに保持されます。終わらせる。

tvhhicle.VehicleTagnumberは実際のプレート番号を保持し、tPMCL.Tagは入力されたときからのその番号のルックアップのインデックスのみを保持します。タグ番号があればいいのですが、データをループして比較すると、そのまま一致させるには:

「XPE269」のラインに沿ったものを1と比較していますが、それはあまりうまく機能していません。

何か案は?答えはVBAの答えではない可能性があり、そもそもルックアップを行うためのさまざまな方法である可能性があります。しかし、ルックアップを実行して実際にプレート番号を保存し、そのインデックスを保存する別の方法を見つけることができません。

4

1 に答える 1

1

あなたがインデックスと考えているものは、実際には外部キーのようです。これは良いことです。これは、VehicalTagNumber を変更する場所 (不適切な入力など) の場合、参照テーブルを更新する必要がないことを意味します。

tPMCL をループする必要があり、対応するタグ番号が必要な場合は、次の 2 つのいずれかを行うことができます。

Dlookup を使用して、各ループで取得できます。例えば

Dim strTag As String
strTag = DLookup("[VehicleTagnumber]", "tvhhicle","[Id] = 1")

ただし、これは多数のレコードの場合は遅くなります。

代わりに、テーブルを直接開くのではなく、2 つのテーブルを結合する 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)
于 2012-06-05T16:39:58.773 に答える