首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >编辑列表框项目

编辑列表框项目
EN

Stack Overflow用户
提问于 2021-11-01 03:51:15
回答 1查看 237关注 0票数 0

因此,我有一个列表框,它使用select sql查询显示在Order表中输入的所有订单。现在我还想添加从列表框中编辑项目的功能,我看到了右键单击编辑列表项选项,但是当我单击它时,它只是打开表单,但不填充字段。表单中有未绑定的文本框,但我不知道如何使它们基于正确的单击条目填充。我还尝试从vba打开目标表单,并通过vba使用以下代码填充字段

代码语言:javascript
复制
Private Sub editrecordbttn_Click()
Dim valSelect As Variant
Dim v As Variant
Dim selector As Variant
Dim strValue As String ' just used for the demonstration
Dim splitvalue() As String
Dim selectedsampid As String
Dim selectedcusid As String
Dim Records As DAO.Recordset
Dim SQLcus As String
Dim SQLsamp As String
 
For Each valSelect In Me.searchlistbox.ItemsSelected
    strValue = strValue & "" & Me.searchlistbox.ItemData(valSelect) & "," & "" & Me.searchlistbox.Column(1, valSelect) & ","
Next valSelect
 
    ' to remove trailing comma
strValue = Left(strValue, Len(strValue) - 1)

splitvalue() = Split(strValue, ",")
selectedsampid = splitvalue(0)
selectedcusid = splitvalue(1)

DoCmd.OpenForm ("Add Sample")
Forms![Add Sample].fnametxt.SetFocus


'query and fill cus info
SQLcus = "SELECT * FROM CustomerInfo WHERE CusID = '" & selectedcusid & "';"
Set Records = CurrentDb.OpenRecordset(SQLcus)
Me!clienttypetxt = Records![Client type].Value

结束子对象

EN

Stack Overflow用户

回答已采纳

发布于 2021-11-01 17:05:18

好的,假设我们有一个列表框,我们这样做:

列表框的第一列被假定为行的PK或"ID“。

所以,我们有一个:

然后选择一行,然后单击按钮。

按钮代码如下所示:

代码语言:javascript
复制
Private Sub cmdEdit_Click()

  Debug.Print "Hotel list id selected = " & Me.HotelList
  
  DoCmd.OpenForm "frmEditHotels", , , "ID = " & Me.HotelList
  
  
End Sub

因此,在大多数情况下,为了获得更好的用户体验,最好按照上面的方法来处理。

当然,在这种情况下,您可以使用一个“列表”来填充列表框(或组合框),而不是数据库中的值。在这种情况下,您可以使用“编辑”列表选项。这允许您指定表单(或使用内置编辑器)。

因此,如果这不是您输入的列表,并且是从数据库中输入的,那么就不要尝试使用内置的“列表编辑”

(像上面这样添加一个按钮,然后启动带有"where“子句的表单,像上面那样将表单加载到一个数据记录中。

因为通常情况下,一个列表框数据将来自一个表,那么编辑列表选项实际上并没有什么特别的用途。使用一个表(相对于列表)来填充+驱动组合框/列表框是一个更好的设计,而且无论如何也是一个想法。如果您想要多个用户,情况尤其如此,因为“列表”编辑功能意味着,并且建议每个编辑列表的用户现在都有自己的列表,而不是使用每个人都可以编辑的表。

此外,没有理由使用循环填充该列表框。我们可以这样做:

代码语言:javascript
复制
' setup critera for listbox.

Dim strSQL     As String

' prompt user for Hotel city - we just hard code for this exmaple.

Dim strCity    As String

strCity = "Banff"

strSQL = "SELECT ID,FirstName, LastName, City,HotelName FROM tblHotels " & _
        "WHERE City = '" & strCity & "' " & "ORDER BY HotelName"
        
Me.HotelList.RowSource = strSQL

注意,我们没有一些MESSAY值列表,但是可以将数据(sql)直接推到列表框中。我们不仅没有循环,而且我们也不必担心大小限制。

使用"value list“(那些杂乱的分隔符";”list),您将有一个很小的限制,即4,000个字符。不要用更大的行来“炸掉”列表框,因为它不能用很多行。

实际上,我仍然建议您使用向导来构建列表框,您可以选择数据源(sql),也可以选择"value list“。

价值列表是一个很好的选择,如果你有几个选择,如先生,夫人或什么没有,它不是一些大桌子,但只说5-10个选择。

有更大的吗?使用数据表驱动的列表框,避免使用值列表。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69792453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档