Большое спасибо всем за вашу помощь, когда я пытаюсь выяснить доступ / SQL / vba.
У меня есть приведенный ниже код, который должен добавить запись в [МОДЕЛИ СПИСКА ОПЦИЙ] для каждой «текущей» модели для определенного ИД ОПЦИИ (доступность по умолчанию «N»).
Private Sub btnAvailabilityAddTest_Click()
Dim f_strSQL As String
Dim model_strSQL As String
Dim optionID_strSQL As String
Dim modelRS As Recordset
Dim optionIDRS As Recordset
model_strSQL = "SELECT MODEL, [MODEL_NAME]" & _
" FROM T_MODELS_LIST" & _
" WHERE T_MODELS_LIST.Removed = 0"
optionID_strSQL = "SELECT OPTION_ID" & _
" FROM [OPTIONS LIST]" & _
" WHERE [PRICE PERIOD] = 'OCT18'"
Set optionIDRS = CurrentDb.OpenRecordset(optionID_strSQL, dbOpenForwardOnly)
Set modelRS = CurrentDb.OpenRecordset(model_strSQL, dbOpenForwardOnly)
' Availability add for new codes
Do While Not optionIDRS.EOF
'Check if Option ID exists in [OPTIONS LIST MODELS], if count = 0 then
If DCount("OPTION_ID", "[OPTIONS LIST MODELS]", "OPTION_ID = " & optionIDRS!OPTION_ID) = 0 Then
Do While Not modelRS.EOF
f_strSQL = "INSERT INTO [OPTIONS LIST MODELS] (OPTION_ID, MODEL, AVAILABILITY)" & _
" VALUES ('" & optionIDRS!OPTION_ID & "', '" & modelRS!MODEL & "', 'N')"
RunSQL f_strSQL
modelRS.MoveNext
Loop
End If
optionIDRS.MoveNext
Loop
MsgBox ("Availabilities Added")
End Sub
Приведенный выше код работает, но добавит только первый идентификатор без записи в [МОДЕЛИ СПИСКА ОПЦИЙ], цикл модели работает как задумано.Если я запустите его снова, он ничего не добавит.Если я удаляю записи для идентификатора, который он только что добавил, и запускаю его снова, он снова добавит записи идентификаторов, как и предполагалось.
Я подозреваю, что это логическая проблема с использованием DCount, я попытался определить значение DCount и использовать его в качестве другого цикла, но у меня ничего не получилось.Я добавил msgbox для отображения количества и текущей записи, текущая запись перемещается как следует, но оператор if ничего не делает, коды имеют счет 17 (что и должно быть).Он должен работать только на 0.
Пожалуйста, игнорируйте имена таблиц, я работаю с БД, созданной в 2002 году, и это настоящий беспорядок ...