dcount if语句作为嵌套的一部分在不循环时执行

时间:2018-08-27 00:43:30

标签: vba ms-access while-loop dcount

在我尝试弄清access / SQL / vba时,非常感谢大家的帮助。

我有下面的代码,应该为特定的OPTION ID(默认可用性'N')的每个“当前”模型添加一条记录到[OPTIONS LIST MODELS]。

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

上面的代码有效,但只会添加第一个ID,而不会在[OPTIONS LIST MODELS]中输入任何内容,因此模型循环可按预期工作。如果我再次运行它,将不会添加任何内容。如果我删除刚添加的ID的条目并再次运行它,它将按预期再次添加该ID记录。

我怀疑使用DCount是一个逻辑问题,我一直在尝试定义DCount值并将其用作另一个循环,但是我没有成功。我添加了一个msgbox来显示计数和当前记录,当前记录按应有的方式移动,但是if语句不执行任何操作,代码的dcount为17(这应该是它们的值)。它只能在0上运行。

请忽略表名,我正在使用2002年制造的数据库,这真是一团糟...

0 个答案:

没有答案