访问:列表框选择添加到表

时间:2019-01-22 12:20:10

标签: vba ms-access

所以我的数据库非常简单,一个列表框“ ListItems”包含一堆不同的产品,用户可以在其中选择并输入制造数量的数量。完美地工作,但是为了从效率的角度帮助用户,添加了搜索框,以防止用户不得不从5万种商品中找到合适的产品。

当用户键入最高记录时;

Private Sub txtSearchItems_Change()
        ListItems.Requery

        If Me.ListItems.ListCount > 0 Then
            Me.ListItems.Selected(0) = True
        End If
End Sub

但是,如果用户没有实际单击列表框中的选定行,则在运行以下代码时,该项目将添加到表中而没有任何项目;

    Dim RST As DAO.Recordset

    Set RST = CurrentDb.OpenRecordset("select * from UptimeItems")

    If IsNull(txtQuantityProd) Or txtQuantityProd = "" Then
        MsgBox "Please enter a quantity produced.", vbExclamation
        txtQuantityProd.SetFocus
        End
    End If

    '\\Checkbox For If is Press
    Check95.Value = False

    If DLookup("[IsPress]", "Machines", "[MachineName] = Location") = -1 Then
        If DLookup("[MoreThan1Blank]", "LintelInfo", "[No] = ListItems") = -1 Then
            Check95.Value = True
        End If
    End If
    '//

    With RST
        .AddNew
        !RecordID = RecordID
        !Product = ListItems
        !Quantity = txtQuantityProd
        !MoreThan1Blank = Check95
        .Update
    End With

    RST.Close
    Set RST = Nothing

    Forms![UptimeAARecord]![UptimeItems].Requery
    Call ClearFields

enter image description here

如您所见,最上面的记录是用户没有选择列表框中的行,因此除数量外没有添加任何数据,但是用户使用“ Box 100 900mm”添加了数据,因此添加了数据。 >

我该如何解决?

1 个答案:

答案 0 :(得分:1)

如果您的列表框多选属性设置为,则可以通过设置值来选择项目:

Private Sub txtSearchItems_Change()
    ListItems.Requery
    With Me.ListItems
        If .ListCount > 0 Then
            .Value = .Column(.BoundColumn, 0)
        End If
    End With
End Sub

这可以确保value属性在以后的代码中使用时具有有效值。

如果允许多个选择,则添加条目的代码可能需要进一步调整。