数据表窗体中实现动态序号
在 Excel 中,表格左边有一个连续序号显示,无论对其中的行做任何操作,这个序号始终是从 1 开始到最大号。而在 Access 中,报表中能够很容易实现,但窗体中实现却很困难,在这里提供了一种通过自动批量修改记录集中的的序号字段的值来实现的方法。
下面通过示例程序说明实现的具体步骤:
1、创建表
我们先创建一张表。
先在“产品” 表中添加一个数字型字段“序号”,然后基于该表创建一个数据表视图窗体,命名为“产品_子窗体”, 然后以设计视图打开该窗体。为了和字段名进行区分,这里我们将绑定到“序号”字
段的文本框名称重命名为“txt 序号”。
2、添加代码
接下去我们来添加对应的代码。
Public Sub SetSerialNum()
Dim intCurNum As Integer
With Me.Recordset
If .RecordCount = 0 Then Exit Sub '记录为空退出
Me.Painting = False '关闭窗体更新
intCurNum = Me.CurrentRecord - 1 '记忆从第一行到当前行之间需要移动的行数
Do Until .EOF '从当前行开始循环所有记录,直到最后一行为止
Me.txt序号 = Me.CurrentRecord '重新修改序号(注意:这里用的是绑定到序号字段的文本框名称,如果用字段名的话,需要调用Edit方法和Update方法才行)
.MoveNext '移到下一行
Loop
.MoveFirst '移到第一行
If intCurNum > 0 Then .Move intCurNum '返回到修改序号之前所在行
Me.Painting = True '打开窗体更新
End With
End Sub
Private Sub Form_AfterDelConfirm(Status As Integer)
'只有在真正删除记录后才需要重新设置序号
If Status = acDeleteOK Then Call SetSerialNum
End Sub
Private Sub Form_Current()
If Me.NewRecord Then
Me.txt序号.DefaultValue = Me.CurrentRecord
Else
Me.txt序号.DefaultValue = ""
End If
End Sub
Private Sub Form_Load()
'窗体加载时设置序号
Call SetSerialNum
End Sub
3、运行
运行后,我们可以看到自动添加了序号,如果添加了新数据,会自动生成序号。
好了,大家快去试一下吧
从事access开发多年,喜欢access做一些小东西,分享一些小经验
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义