我有一种视图类型“连续形式”,它根据查询返回记录,我希望记录按照列出的顺序有一个数字标签,如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
答案 0 :(得分: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和/或锁定=是。
你可以使用子查询代替sequence_num的DCount表达式,但是你将获得一个只读记录集。
此方法不需要数字主键,但您需要一个唯一的字段或字段组合。您也可以使用文本或日期字段来执行此操作。
编辑:如果删除表单中的行,请在表单的After Update Confirm事件中执行Me.Requery。如果在记录集结束之前添加要显示的行,请执行Me.Requery。如果您在现有行的唯一字段中编辑值,则相同。