攻撃を意図したものではありません (とにかく可能な限り少なくします) が、これはデータを構造化する恐ろしい方法です。次のように再構築する必要があります。
CustomerID MovieID HireDate
---------- ------- --------
1 0001 19/05/2006
1 0003 20/10/2003
1 0007 13/08/2003
...
2 0035 16/08/2012
2 0057 06/10/2012
...
現在のデータ構造を維持する場合
気が狂うし、
他の誰かがこの問題に近づく可能性はほとんどありません。
編集
改訂されたデータ構造は非常にわずかな改善ですが、それでもあなたにとっては不利に働きます. ここでの他の質問では、クエリを実行するときにデータ構造を「その場で」「修正」する方法を本質的に求めていることを考慮してください。
幸いなことに、少しの VBA コードを一度実行して、データ構造を実行可能なものに変換できます。まず、「HireHistoryV2」と呼ぶ新しいテーブルを作成します。
ID - AutoNumber, Primary Key
CustomerID - Number(Long Integer), Indexed (duplicates OK)
MovieID - Text(4), Indexed (duplicates OK)
HireDate - Date/Time, Indexed (duplicates OK)
データを新しいテーブルにコピーする VBA コードは次のようになります。
Function RestructureHistory()
Dim cdb As DAO.Database, rstIn As DAO.Recordset, rstOut As DAO.Recordset
Dim fld As DAO.Field, a() As String
Set cdb = CurrentDb
Set rstIn = cdb.OpenRecordset("HireHistory", dbOpenTable)
Set rstOut = cdb.OpenRecordset("HireHistoryV2", dbOpenTable)
Do While Not rstIn.EOF
For Each fld In rstIn.Fields
If fld.Name Like "Hire*" Then
If Not IsNull(fld.Value) Then
a = Split(fld.Value, " on ", -1, vbBinaryCompare)
rstOut.AddNew
rstOut!CustomerID = rstIn!CustomerID
rstOut!MovieID = a(0)
rstOut!HireDate = CDate(a(1))
rstOut.Update
End If
End If
Next
Set fld = Nothing
rstIn.MoveNext
Loop
rstOut.Close
Set rstOut = Nothing
rstIn.Close
Set rstIn = Nothing
Set cdb = Nothing
MsgBox "Done!"
End Function
注: dd/mm/yyyy の日付形式を使用しているようです。日付の変換を注意深くチェックして、正しく変換されていることを確認してください。