3

我有一个用于数据输入的表格。我们必须回过头来为这些记录添加数据。有没有办法拉出按字段“A”对记录进行分组并按字段“B”排序的表单?这基本上会订购表格 A1-1、A1-2 等,从而更容易添加数据。

现在我正在使用 DoCmd.OpenForm 仅在某些字段中显示具有某些值的记录。我只需要稍微修改一下吗?

谢谢您的帮助!

[编辑]

我希望这可以在单击按钮时加载表单,所以我有

Private Sub btnDataEntry_Click() 
    DoCmd.OpenForm "Data Sheet", acNormal, , , acFormEdit, , OpenArgs:="MapNumber"
End Sub

然后按照建议

Private Sub Form_Load() 
    If Not IsNull(Me.OpenArgs) Then 
        Main.OrderBy = Me.OpenArgs 
        Main.OrderByOn = True 
    End If 
End Sub

这对我不起作用。如果可能的话,我还希望将所有地图编号组合在一起,然后让所有项目编号升序。所以可能有 10 个条目,地图编号为 1,项目编号为 1-10。

4

1 回答 1

2

OpenForm不包括指定排序顺序的选项。但是,您可以使用其OpenArgs选项来传递排序信息,然后在表单加载期间应用该信息。

Private Sub Form_Load()
    If Not IsNull(Me.OpenArgs) Then
        Me.OrderBy = Me.OpenArgs
        Me.OrderByOn = True
    End If
End Sub

然后打开按升序排列的名为id的字段排序的YourForm ...

DoCmd.OpenForm "YourForm", OpenArgs:="id"

包括DESC降序...

DoCmd.OpenForm "YourForm", OpenArgs:="id DESC"

使用此版本Form_Load来解决表单打开时没有按预期排序的原因。

Private Sub Form_Load()
    MsgBox "Me.OpenArgs: " & Nz(Me.OpenArgs, "Null")
    If Not IsNull(Me.OpenArgs) Then
        Me.OrderBy = Me.OpenArgs
        Me.OrderByOn = True
    End If
    MsgBox "Me.OrderBy : '" & Me.OrderBy & "'"
    MsgBox "Me.OrderByOn: " & Me.OrderByOn
End Sub
于 2013-07-17T13:26:34.393 回答