ColumnOrder 属性

expandtri全部显示

使用 ColumnOrder 属性可以指定“数据表”视图中列的顺序。Integer 型,可读写。

expression.ColumnOrder

expression     必需。返回“应用于”列表中的一个对象的表达式。

设置

通过在“数据表”视图中选择一列并将其拖到新的位置即可设置该属性。

Microsoft Access 数据库 (.mdb) 中,通过在 Visual Basic 中使用 Long Interger 值,也可以设置该属性。

若要通过使用 Visual Basic 来设置或更改表或查询的这一属性,必须使用列的 Properties 集合。有关使用 Properties 集合的详细信息,请参阅 Properties

注释 ColumnOrder 属性在“设计”视图中不可用。

说明

注释 ColumnOrder 属性适用于“数据表”视图中所有的字段,并且当窗体处于“数据表”视图时,还适用于窗体控件

在“数据表”视图中,字段的 ColumnOrder 属性设置是由这个字段的位置确定的。例如,在“数据表”视图中,最左侧列中字段的 ColumnOrder 属性设置为 1,第二个字段的属性设置为 2,依此类推。更改某个字段的 ColumnOrder 属性,将重新设置那个字段及“数据表”视图中其原始位置左侧每个字段的这项属性。

在其他视图中,除非在“数据表”视图中明确地更改字段的次序(通过将字段拖到新位置,或通过更改其 ColumnOrder 属性设置),否则该属性将设为 0。位于移动字段新位置右侧的字段,在除“数据表”视图以外的视图中,该属性都设为 0。

“数据表”视图中字段的次序并不影响表“设计”视图“窗体”视图中字段的次序。

示例

以下示例在“产品”窗体的“数据表”视图中,将“产品名称”和“单位数量”字段显示在前两列中。

Forms!Products!ProductName.ColumnOrder = 1

Forms!Products!QuantityPerUnit.ColumnOrder = 2

下一个示例在“数据表”视图中,将“产品”表的“产品名称”和“单位数量”字段显示在前两列中。为了设置 ColumnOrder 属性,本示例使用了 SetFieldProperty 过程。如果在表打开的状态下执行该过程,则更改只能在表关闭并重新打开后才能显示。

Public Sub SetColumnOrder()

    Dim dbs As DAO.Database

    Dim tdf As DAO.TableDef

    Set dbs = CurrentDb

    Set tdf = dbs!Products

    ' Call the procedure to set the ColumnOrder property.

    SetFieldProperty tdf!ProductName, "ColumnOrder", dbLong, 2

    SetFieldProperty tdf!QuantityPerUnit, "ColumnOrder", dbLong, 3

    Set tdf = Nothing

    Set dbs = Nothing

End Sub

Private Sub SetFieldProperty(ByRef fld As DAO.Field, _

                             ByVal strPropertyName As String, _

                             ByVal intPropertyType As Integer, _

                             ByVal varPropertyValue As Variant)

    ' Set field property without producing nonrecoverable run-time error.

    Const conErrPropertyNotFound = 3270

    Dim prp As Property

    ' Turn off error handling.

    On Error Resume Next

    fld.Properties(strPropertyName) = varPropertyValue

    ' Check for errors in setting the property.

    If Err <> 0 Then

        If Err <> conErrPropertyNotFound Then

            On Error GoTo 0

            MsgBox "Couldn't set property '" & strPropertyName & _

                   "' on field '" & fld.Name & "'", vbCritical

        Else

            On Error GoTo 0

            Set prp = fld.CreateProperty(strPropertyName, intPropertyType, _

                      varPropertyValue)

            fld.Properties.Append prp

        End If

    End If

    Set prp = Nothing

End Sub