Access编程交流网
  • 设为首页|收藏本站|繁体中文|手机版
  •     
  • Access培训-Access开发平台-Access行业开发

  • 首页
  • 资讯
  • 技巧
  • 源码
  • 行业
  • 资源
  • 活动
  • 关于

技巧

ACCESS数据库

启动/设置/选项/背景

修复/压缩

安全/加密/解密

快捷键

版本升级/其它等

数据表

命名方式/设计规范

表设计

查询

Sql语言基础

选择查询

更新查询

删除查询

追加查询

生成表查询

交叉表查询

SQL特定查询

查询参数

查询综合应用

界面/窗体/控件

标签

文本框

命令按钮

组合框/列表框

选项组/复选框/选项按钮

选项卡

子窗体

窗体本身/综合应用

其它

报表打印

报表设计

高级报表

模块/函数/VBA/API/系统

VBA基础

内置函数

调试/跟踪/Debug

模块/类模块

API/COM/系统相关

字符数字日期

网络通信游戏

加密解密安全

文件处理

经典算法

宏/菜单/工具栏/功能区

宏/脚本

菜单/工具栏

功能区/Ribbon

图表/图形/图像/多媒体

图表

图形/图像

音频

视频/动画

DAO/链接表/ADO/ADP

DAO/链接表/ODBC

ADO/RDO

ADP

ActiveX/第三方控件/插件

Treeview树控件

ListView列表控件

Toolbar工具栏控件

微软其它控件

Dbi-Tech

CodeJock

Grid++Report

FastReport

ComponentOne

加载项/插件/Addin

OFFICE集成/导入导出/交互

Excel导入导出/交互

Word导入导出/交互

PPT交互

Outlook控制/邮件

Text文本文件/INI/CSV

PDF/SWF/XML格式

CAD格式

Sharepoint/其它Office

SqlServer/其它数据库

表

视图

存储过程/触发器

函数

用户/权限/安全

调试/维护

SqlServer其它/综合

发布/打包/文档/帮助

开发版/运行时

打包/发布/部署

开发文档/帮助制作

Access完整行业系统

采购管理系统

销售管理系统

仓库管理系统

人力资源管理HRM

CRM管理系统

MRP/ERP管理系统

BRP/流程优化

其它管理系统

心得/经验/绝招
其它/杂项
Excel技巧

Excel应用与操作

Excel开发编程

Word技巧

Word应用与操作

Word开发编程

Outlook技巧

Outlook应用与操作

Outlook开发编程

热门文章

  • Access子窗体数据表的..
  • 如何实现带树形结构的组合框..
  • Access与Flash的..
  • 一个让你心动的窗体模板(+..
  • 最简单的自动调整程序窗口的..
  • access实现组合框联动..

最新文章

  • Access动态修改子窗体..
  • 窗体属性 弹出方式、模式和..
  • Access实现任意文本框..
  • Access引用是变量的控..
  • Access添加图片删除图..
  • Access子窗体控件绑定..

联系方式

Access交流网(免费Access交流)

QQ:18449932 

网  址:www.access-cn.com

当前位置:首页 > 技巧 > 界面/窗体/控件
界面/窗体/控件

在ACCESS中扩展条件格式的功能

作    者:朱亦文(译)  
摘    要:在 Microsoft access 中使用用户接口及通过编程创建条件格式。探讨在不同环境下扩展条件格式的编程方法。

正    文:

Frank C. Rice著 朱亦文译
Microsoft 公司 

2002年3月 

应用于: Microsoft® access 2000 及以后版本 

摘  要: 在 Microsoft access 中使用用户接口及通过编程创建条件格式。探讨在不同环境下扩展条件格式的编程方法。 

简介
    自 Microsoft® access 2000 开始,能够在 combo box 和 text box 控件上应用条件格式。这将允许按指定的条件改变包括在这些控件中的数据的原始显示特性,如背景色和加粗。 

    有两个方法创建和应用条件格式。其一,可以先选择控件,然后在[ 格式 ]菜单上点击[ 条件格式 ]。其二,使用 Microsoft Visual Basic® for Applications (VBA),也能创建使用条件格式的[ FormatCondition ]对象实例并把它们加入到[ FormatCondition ]对象集合中。 

    每个做了条件格式的控件最少有两个格式--一个默认格式和一个当指定条件为 True 时的指定格式。一个控件可以有多至三个的指定格式条件。这三个条件的限制可由 VBA 代码编程在不同的环境下确定条件的值来克服。本文第一个示例将通过用户界面来创建条件格式。我们将会看到在运行时使用 VBA 代码来创建条件格式改变格式条件这种更好的方法。

通过用户界面创建条件格式
    在<格式>菜单上的<条件格式>菜单提供一个简单的方法创建和应用多至三个条件格式。当点击<格式>菜单上的<条件格式>,将出现<条件格式>对话框,如图:

按此在新窗口浏览图片

图 1. <条件格式>对话框

    <默认格式 Default Formatting>区域显示控件在没有使用任何指定条件的情况下的格式。<条件 1 Condition 1>区域允许添加指定的条件格式。当要添加条件格式时,点击[ 添加 Add ]按钮,对话框将最多扩展至三个条件格式。 

    <条件格式>对话框提供六个格式控件来帮助指定每一个条件格式。从控件行的最左侧开始,有加粗、斜体、下划线、背景色以及前景色,最后一个是控件控件的启用状态(允许和禁止)。在最左边的下拉列表框允许选择<字段值为>、<表达式为>或者<字段有焦点>。也能通常操作符如:相等(=)、大于(>)、位于区间(Between)及更多。如果在一个计算字段上应用条件格式,必须使用标准的 VBA 操作符书写表达式。 

    如果格式化条件要求一个表达式,可以使用表达式生成器来帮你建立表达式。 

    图 2 举例说明在一个窗体中使用条件格式格式化与之相关的 Special Customer 文本框。

按此在新窗口浏览图片

图 2. 显示通过用户接界面创建的格式化了的窗体

    基于 Total 文本框的值作为格式化条件改变背景色。在该情形中,如果 Total 文本框的计算值介于 300 到 399 之间,文本框显示为绿色。图3 举例说明在<条件格式>对话框中定义条件。

按此在新窗口浏览图片

图 3. 基于 Total 文本框值定置的格式化对话框 

条件格式编程
    当能够非常熟练的使用<条件格式>对话框创建条件格式后,在这个时期,可能想使用 VBA 代码了。通过使用代码创建条件格式,能管理条件格式,用户就会发现可以超过允许的三个条件格式。也可能想在多个应用程序或多个窗体中使用条件格式。在代码中产生条件,非常易于在不同的窗体中使用复制粘贴代码应用同样的格式。

    窗体上的每个组合框和文本框有一个包含对象的对象集合。该对象集合有(添加)和(删除)方法。对象有(修改)方法。对象没有名称属性,因此通常通过其索引值进行引用。另外,对象拥有诸如(类型)属性的属性设置,允许应用基于字段值或表达式的条件。有关于对象集合和对象的更详细的信息,请参看 Micosoft 开发者网络的帮助。 

    来看看另一个定置窗体及在其背后的代码,是如何通过编程来创建条件格式及如何提供附加格式选择。图 4 显示一个文本框中根据靶号确定格式的窗体。

按此在新窗口浏览图片

图 4. 基于用户选项应用条件格式的窗体

    在这个窗体中,用户在 Target 文本框中键入数字,并在 Choose an option 区域选择一选项(Option)。用户然后在 Result 文本框中键入数字并点击[Change]按钮。对于前面三选项,Result 文本框的值与 Target 文本框的值进行比较,并根据两个值是否是少于、等于、或大于另一个,格式化 Result 文本框的值。对于第四个选项,当点击[Change]按钮后,则按当前日期的星期与字符串 Sat 和 Sun 进行比较来确定 Result 文本框如何格式化。

下面是 Change 命令按钮的 Click 事件处理程序:


Private Sub cmdChange_Click()

   ' 这个子程序演示使用 FormatCondition 对象来添加一个文本框的格式。
   ' 也例举了通过 FormatConditions 集合扩展三个条件格式的功能限制。
   '
   ' 作者: Frank C. Rice
   '
   Dim objFrc As FormatCondition
   Dim lngRed As Long
   Dim lngWhite As Long
   Dim lngBlack As Long
   Dim lngYellow As Long

   ' 设置背景色和前景色
   lngRed = RGB(255, 0, 0)
   lngWhite = RGB(255, 255, 255)
   lngBlack = RGB(0, 0, 0)
   lngYellow = RGB(255, 255, 0)

   ' 移除任何已存在的条件格式
   Me.txtResult.FormatConditions.Delete

   ' 创建三个格式对象并将它们添加到 FormatConditions 集合中
   Set objFrc = Me.txtResult.FormatConditions.Add(acFieldvalue, _
                acLessThan, Me.txtTarget.value)
   Set objFrc = Me.txtResult.FormatConditions.Add(acFieldvalue, _
                acEqual, Me.txtTarget.value)
   Set objFrc = Me.txtResult.FormatConditions.Add(acFieldvalue, _
                acGreaterThan, Me.txtTarget.value)

   ' 根据用户的选项选择,格式化 txtResult 文本框
   Select Case optgrpChoice.value

      Case 1
         ' 按它的索引值引用每个格式条件

         With Me.txtResult.FormatConditions(0)
            .FontBold = False
            .FontItalic = True
            .FontUnderline = True
         End With

         With Me.txtResult.FormatConditions(1)
            .FontBold = True
            .FontItalic = False
            .FontUnderline = True
         End With

         With Me.txtResult.FormatConditions(2)
            .FontBold = True
            .FontItalic = True
            .FontUnderline = False
         End With

      Case 2

         With Me.txtResult.FormatConditions(0)
            .BackColor = lngRed
            .FontBold = True
            .ForeColor = lngBlack
         End With

         With Me.txtResult.FormatConditions(1)
            .BackColor = lngBlack
            .FontBold = True
            .ForeColor = lngRed
         End With

         With Me.txtResult.FormatConditions(2)
            .BackColor = lngYellow
            .FontBold = True
            .ForeColor = lngRed
         End With

      Case 3

         Me.txtResult.FormatConditions(0).Enabled = False
         Me.txtResult.FormatConditions(1).Enabled = True
         Me.txtResult.FormatConditions(2).Enabled = False

      Case 4

         ' 这里,重新基于一比较今天日期字符串值的表达式定义格式
         Me.txtResult.FormatConditions.Delete

         Set objFrc = Me.txtResult.FormatConditions. _
                      Add(acExpression, , (Format(Now(), "ddd") = "Sat"))
         Set objFrc = Me.txtResult.FormatConditions. _
                      Add(acExpression, , (Format(Now(), "ddd") <> "Sat") And _
                      (Format(Now(), "ddd") <> "Sun"))
         Set objFrc = Me.txtResult.FormatConditions. _
                      Add(acExpression, , (Format(Now(), "ddd") = "Sun"))

         With Me.txtResult.FormatConditions(0)
            .BackColor = lngYellow
            .FontBold = True
            .ForeColor = lngBlack
         End With

         With Me.txtResult.FormatConditions(1)
            .BackColor = lngBlack
            .FontBold = True
            .ForeColor = lngRed
         End With

         With Me.txtResult.FormatConditions(2)
            .BackColor = lngRed
            .FontBold = True
            .ForeColor = lngBlack
         End With

   End Select

End Sub

讲述代码的细节
    首先,我们定义一个 FormatCondition 对象变量 objFrc。对象将包含我们所需的格式条件。下一步,我们设置要用在 Results 文本框进行格式化的颜色。

' 设置背景色和前景色
lngRed = RGB(255, 0, 0)
lngWhite = RGB(255, 255, 255)
lngBlack = RGB(0, 0, 0)
lngYellow = RGB(255, 255, 0)

    然后使用 FormatConditions 集合的 Delete 方法移除任何已存在的 FormatCondition 对象。

Me.txtResult.FormatConditions.Delete

    确保将要创建三个 FormatCondition 对象的空间,这是必须的。通过引用其索引值删除 FormatCondition 对象如下: 

Me.txtResult.FormatConditions(1).Delete

    接下来,定义指定的格式条件并使用 Add 方法将它们加入到 FormatConditions 集合。

Set objFrc = Me.txtResult.FormatConditions.Add(acFieldvalue, _
             acLessThan, Me.txtTarget.value)
Set objFrc = Me.txtResult.FormatConditions.Add(acFieldvalue, _
             acEqual, Me.txtTarget.value)
Set objFrc = Me.txtResult.FormatConditions.Add(acFieldvalue, _
             acGreaterThan, Me.txtTarget.value)

    表达式及控件确定何时应用格式以及应用哪个控件上。例如:如果 txtResult 控件字段值少于 txtTarget 控件字段值等等条件,在 txtResult 控件上应用格式。 

    然后,使用 Select Case 语句序号来确定那个条件应用那个格式。这是通过 Choose an option 区域(optgrpChoice 控件)的选项值来决定的。例如用户选择了选项 1 (option 1) 并且 Result 文本框的值大于 Target 文本框的值,则以下代码将会执行:

With Me.txtResult.FormatConditions(2)
   .FontBold = True
   .FontItalic = True
   .FontUnderline = False
End With

    这里,第三个格式条件(索引值从 0 开始)将加粗和斜格式应用到 Result 文本框。使用 Select Case 语句举例说明不同的格式组合。 

    当用户选择选项 4 (Option 4) 这个特殊情形时,将移除集合中已存在的 FormatCondition 对象并动态创建新的 FormatCondition 对象。

Me.txtResult.FormatConditions.Delete
Set objFrc = Me.txtResult.FormatConditions.Add(acExpression, _
             , (Format(Now(), "ddd") = "Sat"))
Set objFrc = Me.txtResult.FormatConditions.Add(acExpression, _
             , (Format(Now(), "ddd") <> "Sat") And _
             (Format(Now(), "ddd") <> "Sun"))
Set objFrc = Me.txtResult.FormatConditions.Add(acExpression, _
             , (Format(Now(), "ddd") = "Sun"))

    在这些条件定义中,使用了表达式事产生用三个字母表示的今天日期的星期值,并与字符串 Sat 和 Sun 进行比较来确定今天是平日还周末。使用 access 的 Format 函数可将今天的日期转化为三个字母的字符串。是通过比较字符串不等于 Sat 或 Sun 来确定今天是否是平日。

结论
    在本文中,我们探讨了 Access 中的控件条件格式。我们通过用户接口、定义和创建可编程条件格式来察看应用条件格式的规则。尽管任何时候 access 限制每个控件不超过三个条件格式,但是可以通过使用 Select Case 语句和动态改变格式条件来提供附加的功能。对该技术进行举一返三,将产生更富有弹性的条件格式.


发布人:Franknbs…-AccessFaq  
分享到:
点击次数:  更新时间:2004-11-23 22:55:02  【打印此页】  【关闭】
上一条:使用SQL语句创建表中的自动编号字段并定义为主键  下一条:局域网如何获取某一机器的日期和时间



相关文章

  • • Access动态修改子窗体的默认值
  • • 窗体属性 弹出方式、模式和代码acDialog模式的区别
  • • Access实现任意文本框的字符插入
  • • Access引用是变量的控件
  • • Access添加图片删除图片和更改图片
  • • Access子窗体控件绑定其他Access对象
  • • Access子窗体页面上下翻动
  • • 根据当前屏幕分辨率自动设置Access主窗体大小及居中显示

热门文章

  • [2017-11-01] 窗体属性 弹出方式、模式和代码acDialog模式的区别access数据库
  • [2017-03-03] Access平台生成MDE在其它电脑上运行出错access数据库
  • [2015-01-24] Access选择记录即行全选access数据库
  • [2009-05-19] 统一窗体编辑命令按钮到工具栏access数据库
  • [2009-02-13] ACCESS-VBA编程 第三章 日期、时间函数1access数据库
  • [2008-10-14] 连续窗体的滚动问题access数据库

热门产品

公司动态|在线留言|在线反馈|友情链接|会员中心|站内搜索|网站地图

中山市天鸣科技发展有限公司 版权所有 1999-2023 粤ICP备10043721号

QQ:18449932

Access应用 Access培训 Access开发 Access平台

access|数据库|access下载|access教程|access视频|access软件

Powered by MetInfo 5.3.12 ©2008-2025  www.metinfo.cn