Vba 访问:列表框选择添加到表
所以我的数据库非常简单,是一个列表框“ListItems”,它包含一系列不同的产品,用户在其中选择并输入产品数量。但是,为了从效率的角度帮助用户,添加了一个搜索框,以防止用户必须从5万个项目中找到正确的产品 当用户输入时,选择顶部记录Vba 访问:列表框选择添加到表,vba,ms-access,Vba,Ms Access,所以我的数据库非常简单,是一个列表框“ListItems”,它包含一系列不同的产品,用户在其中选择并输入产品数量。但是,为了从效率的角度帮助用户,添加了一个搜索框,以防止用户必须从5万个项目中找到正确的产品 当用户输入时,选择顶部记录 Private Sub txtSearchItems_Change() ListItems.Requery If Me.ListItems.ListCount > 0 Then Me.ListItem
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
正如您可以看到的顶部记录,用户没有选择列表框中的行,因此除了数量之外没有添加任何数据,但是用户使用了“100 900mm框”,因此添加了数据
如何解决此问题?如果列表框的“多选”属性设置为“无”,则可以通过设置值来选择项目:
Private Sub txtSearchItems_Change()
ListItems.Requery
With Me.ListItems
If .ListCount > 0 Then
.Value = .Column(.BoundColumn, 0)
End If
End With
End Sub
这可确保在后续代码中使用value属性时该属性具有有效值
如果允许多选,则添加条目的代码可能需要进一步调整。
!Product=ListItems
是错误源,您需要检查列表框。listindex
可能是,或者在单击之前是否选择了任何项目。非常感谢Erik,这非常有效。我发现唯一缺少的是该行没有突出显示,因此只需在您的建议中添加“Me.ListItems.Selected(0)=True”即可产生完美的结果。再次非常感谢您的帮助!听起来仍然有一些奇怪的事情发生,因为这段代码应该选择行(至少在我的版本中是这样)。但是嘿,如果它没有坏。。。