在 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、运行

运行后,我们可以看到自动添加了序号,如果添加了新数据,会自动生成序号。

数据表窗体中实现动态序号_文本框_02

 

好了,大家快去试一下吧