-1

我有一种视图类型“连续表单”的形式,它基于查询返回记录,我希望这些记录有一个数字标签,如 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
4

1 回答 1

2

如果您的表包含数字主键,则可以在查询中使用 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 =是的。

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

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

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

于 2011-08-04T22:21:16.540 回答