У меня есть таблица (BERTHAGE), которая отслеживает местоположение судов, когда они находятся в порту.
Когда судно перемещается из одного места в другое, я обрабатываю движение через форму, которая привязана к комбинированному списку.
Я использую одно поле со списком (связано с запросом), чтобы дать мне текущий список судов в порту.
Оттуда я выбираю движущееся судно.
Как только судно выбрано, я использую другое поле со списком, чтобы выбрать новое местоположение.
Оттуда я нажимаю кнопку Сохранить, и запись сохраняется в соответствующей таблице, и судно теперь привязано к новому местоположению.
Проблема, с которой я столкнулся, заключается в том, что предыдущая запись местоположения все еще существует в той же таблице (BERTHAGE).
Итак, теперь у меня есть две записи для одного судна за одну неделю, это становится проблемой, когда дело доходит до выставления счетов.
Я пытаюсь удалить одну из записей и конечно, это должна быть более старая запись / прежнее местоположение судна.
Поскольку каждой записи присваивается автоматический номер (первичный ключ) самой новой записи, движение судна из одного местоположения в другое будет всегда иметь более высокий автоматический номер.
Я пытался найти способ найти дубликат в таблице (BERTHAGE) на основе названия судна, а затем удалить более старую запись с именем дубликата судна. .
Кажется, единственный способ go об этом - это серия запросов (поиск дубликатов, добавление), и каждый раз заканчивается перезапись всей таблицы. Я пытаюсь избежать этого и придерживаюсь цели удаления только дубликатов, которые появляются на той неделе, когда судно перемещается из одного места в другое.
Хотя мой сценарий средний, я не могу не думать о том, что лучший способ достичь этой цели - что-то похожее на оператор IF, связанный с кнопкой сохранения. Я надеялся, что в Access будет что-то похожее на Excel .RemoveDuplicates, но на сегодняшний день я не нашел его.
Поиск любых указателей, которые могут быть у людей.
Private Sub Form_Load()
DoCmd.RunCommand acCmdRecordsGoToLast
End Sub
Private Sub cmd_Clear_Click()
Me.Boat_New_Loc = ""
Me.CrNum.value = ""
Me.CrDockValue.value = ""
Me.CrFloatValue.value = ""
Me.CrOriValue.value = ""
Me.SelectNewLoc.value = ""
Me.cmd_berthed.value = ""
Me.NewFloatValue.value = ""
Me.NewDockValue.value = ""
Me.NewOrieValue.value = ""
End Sub
Private Sub Boat_New_Loc_Change()
Me.CrNum.value = Me.Boat_New_Loc.Column(4)
Me.CrDockValue.value = Me.Boat_New_Loc.Column(5)
Me.CrFloatValue.value = Me.Boat_New_Loc.Column(6)
Me.CrOriValue.value = Me.Boat_New_Loc.Column(7)
End Sub
Private Sub SelectNewLoc_Change()
Me.NewFloatValue.value = Me.SelectNewLoc.Column(1)
Me.NewDockValue.value = Me.SelectNewLoc.Column(2)
Me.NewOrieValue.value = Me.SelectNewLoc.Column(3)
End Sub
Private Sub Save_Code_But_Click()
DoCmd.RunSQL "UPDATE BERTHAGE SET BERTHAGE.LOCATION=False WHERE LOCATION=" & Me!CrNum _
& " AND LOCATION <>" _
& Me!SelectNewLoc & _
" AND BERTHAGE.LOCATION=True;"
DoCmd.Save acForm, "Change_Boat_Location3"
cmd_Clear_Click
End Sub