繁体   English   中英

Access VBA:如何在连续的表单记录上获得自动编号

[英]Access VBA: how to get auto numbering on continuous form records

我有一种视图类型“连续形式”,该形式根据查询返回记录,并且我希望记录按列出的顺序具有数字标签,例如1、2、3.。

形成

有什么方法可以在那里自动生成标签或文本框吗?

任何帮助表示赞赏! 谢谢

编辑:这是查询代码:

    Dim qd As DAO.QueryDef
    Set qd = CurrentDb.CreateQueryDef("pairsOrdered", "select * from allPairs order by Count desc")

    Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("pairsOrdered")
    If Not rs.EOF Then
        Me.Label22.Visible = 0
    End If

    If Me.OpenArgs = "25" Then
        RecordSource = "select top 25 * from pairsOrdered"
    End If

    If Me.OpenArgs = "50" Then
        RecordSource = "select top 50 * from pairsOrdered"
    End If

    If Me.OpenArgs = "all" Then
        RecordSource = "select * from pairsOrdered"
    End If

如果表包含数字主键,则可以在查询中使用DCount()来生成序列号。 在此示例中,id是数字和主键。

SELECT DCount("*","MyTable","id<=" & [m].[id]) AS sequence_num, m.id, m.some_text
FROM MyTable AS m
ORDER BY DCount("*","MyTable","id<=" & [m].[id]);

如果愿意,可以更改ORDER BY以引用字段列表中字段表达式的序号值,而不是完整字段表达式。

ORDER BY 1;

无论哪种方式,查询都应该为您的表单生成可编辑的记录源,尽管显然您将无法直接编辑sequence_num ...因此请将您绑定到该控件的属性设置为Enable = No和/或Locked =是的。

您可以将子查询而不是DCount表达式用于sequence_num,但是随后您将获得一个只读记录集。

这种方法不需要数字主键,但是您确实需要一个唯一字段或唯一的字段组合。 您也可以使用文本或日期字段进行操作。

编辑 :如果您删除窗体中的行,请在窗体的更新后确认事件中执行Me.Requery。 如果在记录集的末尾添加要显示的行,请执行Me.Requery。 如果您在现有行的唯一字段中编辑值,则相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM