所以我的数据库非常简单,一个列表框“ 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
如您所见,最上面的记录是用户没有选择列表框中的行,因此除数量外没有添加任何数据,但是用户使用“ Box 100 900mm”添加了数据,因此添加了数据。 >
我该如何解决?
答案 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属性在以后的代码中使用时具有有效值。
如果允许多个选择,则添加条目的代码可能需要进一步调整。