1、1Microsoft Access Visual Basic 函数Command 函数使用 Command 函数可以返回用以启动 Microsoft Access 的命令行 (命令行:用来启动应用程序的字符串。)的参数部分。说明当从命令行启动 Microsoft Access 时,命令行中跟在 /cmd 选项后的部分将会被作为命令行参数传给 Microsoft Access。使用 Command 函数可返回该参数。若要在打开数据库之后更改命令行参数,可单击“工具”菜单上的“选项”。在“选项”对话框“高级”选项卡上的“命令行参数”框中输入新的参数。此时 Command 函数将返回新输入的参数。在
2、模块的 Visual Basic 代码之外使用 Command 函数时,必须在该函数后加上空的括号对。例如,若要在窗体上的文本框中使用 Command 函数,必须将文本框的 ControlSource 属性设为以下的表达式 (表达式:运算符、字段名、函数、文字和常量的组合,可得出单个结果。表达式可指定条件(例如,Order Amount10000)或在字段值上执行计算(例如,Price*Quantity)。):=Command()示例下面的示例显示了如何使用带参数的命令行启动 Microsoft Access,以及如何使用 Command 函数返回该参数的值。若要测试该示例,请单击 Windo
3、ws 的“开始”按钮,然后单击“运行”,接着在“运行”对话框中按单行键入以下代码(必须将命令行信息部分用引号括起来)。“C:Program FilesMicrosoft OfficeOffice10Msaccess.exe“ _“C:Program FilesMicrosoft OfficeOffice10SamplesNorthwind.mdb“ /cmd “Orders“2下一个示例是在“罗文斯”示例数据库中新建模块并添加以下 Sub 函数。Public Sub CheckCommandLine() Check the value returned by Command function
4、and display the appropriate form.If Command = “Orders“ ThenDoCmd.OpenForm “Orders“ElseIf Command = “Employees“ ThenDoCmd.OpenForm “Employees“ElseExit SubEnd IfEnd Sub调用该过程时,Microsoft Access 将打开“订单”窗体。在打开数据库时可创建 AutoExec 宏来调用该过程。DAvg 函数参阅应用于示例特性使用 DAvg 函数可以计算特定记录集(一个域 (域:由表、查询或 SQL 表达式定义的记录集。域聚合函数返回有
5、关特定域或记录集的统计信息。)内一组值的平均值。可以在 Visual Basic 代码、宏 (宏:可用来使任务自动化的操作或操作集。宏在 Visual Basic for Applications 编程语言中录制。)、查询表达式或计算控件(计算控件:在窗体、报表或数据访问页上用来显示表达式结果的控件。每当表达式所基于的值发生改变,就重新计算一次结果。)中使用 DAvg 函数。例如,可以在选择查询的运费字段所对应的条件行中使用 DAvg 函数,来限制返回运费超过平均值以上的记录。或者在计算控件中使用包含 DAvg 函数的表达式,在新订单值旁边显示旧订单的平均值。DAvg(expr, domain
6、, criteria)DAvg 函数具有以下参数:参数 说明expr一个表达式,代表要计算其平均值的数值数据字段。可以是用来标识表或查询中字段的字符串表达式 (字符串表达式:任一求值为一列连续字符的表达式。表达式的元素可以是:返回字符串或字符串 Variant (VarType 8) 的函数;字符串字面值、常量、变量或 Variant。),也可以是对该字段上的数据执行计算的表达式。在 expr 中可以包括表中字段的名称、窗体上的控件、常量或函数。如果 expr 包含函数,那么它可以是内置的,也可以是3用户定义的,但不能是另一个域聚合函数或 SQL 聚合函数。domain 字符串表达式,代表组成
7、该域的记录集。可以是表名称或不需要参数的查询名称。criteria可选的字符串表达式,用于限制 Davg 函数执行的数据范围。例如,criteria 通常等价于 SQL 表达式中的 WHERE 子句,只是不含 WHERE 关键字。如果忽略 criteria,DAvg 函数将对整个域计算 expr。任何包含在 criteria 中的字段必须同时也是 domain 中的字段,否则 DAvg 函数将返回 Null (Null:可以在字段中输入或用于表达式和查询,以标明丢失或未知的数据。在 Visual Basic 中,Null 关键字表示 Null 值。有些字段(如主键字段)不可以包含 Null 值
8、。)。说明包含 Null 值的记录不能在平均值的计算中使用。无论是在宏、模块、查询表达式还是在计算控件中使用 DAvg 函数,都必须仔细地构造 criteria 参数,以确保能够正确地进行计算。在查询的“条件”行中可以使用 DAvg 函数来指定条件。例如,要查看所有定购数量在平均订购量以上的产品列表,可以基于“Orders”、“Order Details”和“Products”表创建一个查询,包含“Product Name”和“Quantity”字段,并在“Quantity”字段下的“条件”行中加入以下表达式:DAvg(“Quantity“, “Orders“)在查询的计算字段表达式中,或更新
9、查询 (更新查询:一种操作查询(SQL 语句),它根据所指定的条件(查找条件)更改记录集。)中“更新到”行中的计算字段表达式中,也可以使用 DAvg 函数。注释 在总计查询 (总计查询:这种查询可针对表(一个或多个)中各不同字段显示汇总计算,如平均值或总计值。总计查询不是一个单独种类的查询,而是扩展了选择查询的灵活性。)的计算字段表达式中,既可以使用 DAvg 函数,也可以使用 Avg 函数。如果使用 DAvg 函数,将在数据分组之前计算平均值。如果使用 DAvg 函数,则在数据分组之后计算字段表达式的平均值。当需要指定条件来限制 DAvg 函数执行的数据范围时,应在计算控件中使用 DAvg
10、函数。例如,要显示到 California 的运费的平均值,应将文本框的 ControlSource 属性设为如下表达式:=DAvg(“Freight“, “Orders“, “ShipRegion = CA“)如果只对所有 domain 中的记录计算平均值,则可使用 Avg 函数。4如果要显示的字段不在窗体的基础记录源中时,可以在模块或宏中,或者窗体上的计算控件中,使用 DAvg 函数。例如,有一个基于“订单”表的窗体,希望包含“订单明细”表中的“数量”字段,以显示按特定客户排序的项目平均值,可以使用 DAvg 函数来执行这项计算并在窗体中显示该数据。提示 在计算控件中使用 DAvg 函数时
11、,有时需要将控件放在窗体页眉或页脚中,以便该控件的值在每次移动到新记录时不必重新计算。 如果 expr 所源于的字段数据类型为数字,则 DAvg 函数将返回 Double (Double 数据类型:一种基础数据类型,存储双精度浮点数。它存储 64 位数,范围大约介于 -1.797E308 到 -4.940E-324(负)之间、4.94E-324 到 1.797E308(正)之间和 0。) 数据类型。如果在计算控件中使用 DAvg 函数,可在表达式中包含数据类型转换函数,以提高性能。 虽然使用 DAvg 函数可以确定外部表 (外表:包含外键字段(如“客户 ID”)的表,如“客户订单”。外键字段在
12、其他表(例如“客户”)中是主键字段,并且通常处于一对多关系的“多”端。)字段的数据平均值,但是通过创建含有所有需要字段的查询,然后将窗体或报表建立在这个查询的基础上,效率将更高。 注释 当使用此函数时,不包括对 domain 记录未保存的更改。如果希望 DAvg 函数基于更改后的值,必须首先保存更改,方法是:单击“记录”菜单中的“保存记录”、将焦点移动到另一条记录,或使用 Update 方法。示例下列函数返回特定日期或特定日期以后已发订货的平均运费。域为“Orders”表。条件参数根据给定的国家/地区和发货日期来限制生成的记录集。请注意,关键字 AND 包含在字符串内,用于分隔条件参数内的多个
13、字段。包含在 DAvg 函数计算内的所有记录都将满足这两个条件。Public Function AvgFreightCost(ByVal strCountry As String, _ByVal dteShipDate As Date) As DoubleAvgFreightCost = DAvg(“Freight“, “Orders“, _“ShipCountry = “ & strCountry & _“AND ShippedDate = #“ & dteShipDate & “#“)End Function若要调用该函数,请在“立即”窗口中使用下列代码行::AvgFreightCost
14、“UK“, #1/1/96#5DCount 函数参阅应用于示例特性使用 Dcount 函数可以确定特定记录集(一个域 (域:由表、查询或 SQL 表达式定义的记录集。域聚合函数返回有关特定域或记录集的统计信息。)中的记录数。可以在 Visual Basic、宏 (宏:可用来使任务自动化的操作或操作集。宏在 Visual Basic for Applications 编程语言中录制。)、查询表达式,或计算控件 (计算控件:在窗体、报表或数据访问页上用来显示表达式结果的控件。每当表达式所基于的值发生改变,就重新计算一次结果。)中使用 DCount 函数。例如,可以在模块中使用 Dcount 函数,
15、以返回“订单”表中对应于特定日期的订单数。DCount(expr, domain, criteria)DCount 函数具有下列参数:参数 说明expr一个表达式,代表要统计其记录数的字段。可以是标识表或查询中字段的字符串表达式 (字符串表达式:任一求值为一列连续字符的表达式。表达式的元素可以是:返回字符串或字符串 Variant (VarType 8) 的函数;字符串字面值、常量、变量或 Variant。),也可以是对该字段上的数据进行计算的表达式。在 expr 中可以包括表中字段的名称、窗体上的控件、常量或函数。如果 expr 包括函数,它既可以是内置的,也可以是用户定义的,但不能是另一个
16、域聚合函数或 SQL 聚合函数。domain 字符串表达式,代表组成域的记录集。可以是表名称或不需要参数的查询名称。criteria可选的字符串表达式,用于限制 DCount 函数执行的数据范围。例如,criteria 通常等价于 SQL 表达式中的 WHERE 子句,只是不含 WHERE 关键字。如果忽略 criteria,DCount 函数在整个域的范围内计算 expr。任何包含在 criteria 中的字段必须同时也是 domain 中的字段;否则 Dcount 函数将返回 Null (Null:可以在字段中输入或用于表达式和查询,以标明丢失或未知的数据。在 Visual Basic 中
17、,Null 关键字表示 Null 值。有些字段(如主键字段)不可以包含 Null 值。)。说明在不需要知道记录特定值的时候,可以使用 DCount 函数来计算域中的记录数。虽然 expr 参数可以对字段执行计算,但 DCount 函数只返回记录数。任何由 expr 执行计算所得的值都是不可用的。6当需指定条件来限制函数执行的数据范围时,应在计算控件中使用 DCount 函数。例如,要显示运往 California 的订单数,可将文本框的 ControlSource 属性设为如下表达式:=DCount(“OrderID“, “Orders“, “ShipRegion = CA“)如果只是统计 d
18、omain 中的所有记录而不指定任何限制,则可以使用 Count 函数。提示Count 函数是经过优化的,可以加快在查询中对记录数进行统计的速度。所以应在查询表达式中使用 Count 函数来代替 DCount 函数,并设置可选的条件以实施对结果的限制。如果必须从代码模块、宏或计算控件中对域中的记录进行计数时,应该使用 DCount 函数。使用 DCount 函数可以计算包含特定字段的记录数,该字段不在窗体或报表所基于的记录源中。例如,在基于“产品”表的窗体中,其计算控件中可以显示“订单”表中的订单数。DCount 函数在计数记录时,不包括由 expr 引用的字段中含有 Null 值的记录,除非
19、 expr 参数为星号(*)通配符。如果使用了星号,DCount 函数将计算所有记录的总数,包括含有 Null 字段的记录。下面的示例将计算“Orders”表中的记录数。intX = DCount(“*“, “Orders“)如果 domain 是一个包含主键 (主键:具有唯一标识表中每条记录的值的一个或多个域(列)。主键不允许为 Null,并且必须始终具有唯一索引。主键用来将表与其他表中的外键相关联。)的表,也可以将 expr 设为主键字段来计算总记录数,因为主键字段不可能为 Null。如果 expr 指定多个字段,应使用连接运算符分隔各字段名,即和字符(&)或加号运算符(+)。如果使用(&
20、)分隔字段,Dcount 函数将返回在列出的任一字段中含有数据的记录数。如果使用加号运算符,Dcount 函数将只返回在所有列出字段中都含有数据的记录数。下面的示例说明了使用这两种运算符的结果,它们连接所有记录中均包含数据的字段(ShipName)和不包含数据的字段(ShipRegion)。intW = DCount(“ShipName“, “Orders“)intX = DCount(“ShipRegion“, “Orders“)intY = DCount(“ShipName + ShipRegion“, “Orders“)intZ = DCount(“ShipName & ShipRegi
21、on“, “Orders“)注释 和字符(&)在执行字符串连接时是首选的运算符。在除加法以外的其他情况下,应尽量避免使用加法运算符,除非特 地需要在表达式中产生 Null 值。7使用该函数时,domain 中未保存更改的记录将不包括在内。如果要让 DCount 函数以更改后的数据为基础,必须先保存更改。方法是单击“记录”菜单上的“保存记录”,或是将焦点移动到另一个控件,或使用 Update 方法。示例下面的函数返回在发货日期之后发送到指定国家/地区的订单数量。域为“Orders”表。Public Function OrdersCount(ByVal strCountry As String,
22、_ByVal dteShipDate As Date) As IntegerOrdersCount = DCount(“ShippedDate“, “Orders“, _“ShipCountry = “ & strCountry & _“ AND ShippedDate #“ & dteShipDate & “#“)End Function若要调用该函数,请在“立即”窗口中使用下列代码::OrdersCount “UK“, #1/1/96#DDE 函数参阅应用于示例特性可以使用 DDE 函数来启动与另一个应用程序的动态数据交换 (动态数据交换 (DDE):已建立的一种协议,用于在基于 Micr
23、osoft Windows 的程序之间交换数据。) (DDE) 对话,从该应用程序中请求某一信息,以及在窗体或报表上的控件中显示该信息。例如,可以在文本框的“控件来源”属性中使用 DDE 函数来显示 Microsoft Excel 电子表格中指定单元格的数据。DDE(application, topic, item)DDE 函数具有以下参数:参数 说明application字符串表达式 (字符串表达式:任一求值为一列连续字符的表达式。表达式的元素可以是:返回字符串或字符串 Variant (VarType 8) 的函数;字符串字面值、常量、变量或 Variant。),用于标识能参与 DDE 对
24、话的应用程序。通常,application 是一个基于 Microsoft Windows 应用8程序(如 Microsoft Excel)的 .exe 文件名(不带 .exe 扩展名)。例如,要启动一个与 Microsoft Excel 之间的 DDE 对话,应键入 “Excel“ 作为 application 参数。topic字符串表达式,它是由 application 识别的主题 (主题:指两个应用程序之间动态数据交换 (DDE) 会话的主题。对于绝大多数使用文件的应用程序,主题就是文件名。)名称。该 topic 参数通常是文档或数据文件。请参考另一应用程序的文档以获得可用主题的列表。i
25、tem字符串表达式,它是由 application 识别的数据项 (数据项:可以通过 DDE(动态数据交换)通道传送的应用程序专用数据。)名称。请参考另一应用程序的文档以获得可用项目的列表。说明DDE 函数用指定的 application 和 topic 来启动 DDE 对话,并请求 item 中的数据。如果成功,DDE 函数将返回包含请求信息的字符串。如果要请求从 Microsoft Excel 中获取数据,item 必须是行与列的标识符,如 “R1C1“ 或一个单元格区域的名称。在下面的示例中,该 DDE 函数请求从 Microsoft Excel 工作表中第 1 行、第 1 列的单元格中
26、获取信息。在控件的属性表中,可以在“控件来源”属性框中为文本框控件输入下面的表达式。=DDE(“Excel“, “Sheet1“, “R1C1“)只能在文本框、选项组、复选框或组合框中的“控件来源”属性中使用 DDE 函数。不能从 Visual Basic 中调用 DDE 函数。使用 DDE 函数时,在 “窗体”视图 (“窗体”视图:一个显示窗体以便显示或接受数据的窗口。“窗体”视图是添加和修改表中数据的主要方式。在该视图中还可以更改窗体的设计。)和 “打印预览” (打印预览:打印文档时显示文档的一种视图。)中,控件为只读。例如,如果在文本框中使用 DDE 函数,则不能编辑文本框中的文本。用户
27、必须在另一应用程序中编辑文本。因为“控件来源”属性在“窗体”视图和“打印预览”中是只读的,对控件的更改必须在 “设计”视图 (“设计”视图:显示数据库对象(包括:表、查询、窗体、宏和数据访问页)的设计的窗口。在“设计”视图中,可以新建数据库对象和修改现有数据库对象的设计。)中进行。Microsoft Windows 和计算机的内存及资源决定了可以同时打开的 DDE 对话的最大数目。如果对话因为另一应用程序不在运行或不能识别指定主题而不能被启动,或已经达到最大的对话数目,DDE 函数则会返回 Null (Null:可以在字段中输入或用于表达式和查询,以标明丢失或未知的数据。在 Visual Ba
28、sic 中,Null 关键字表示 Null 值。有些字段(如主键字段)不可以包含 Null 值。)。注释 可以配置另一个应用程序忽略对 DDE 对话的请求。在这种情况下,DDE 函数将返回一个 Null 值。同样,也可以设置 Microsoft Access 忽略来自另一应用程序的请求:单击“工具”菜单上的“选项”,然后在“选项”对话框中“高级”选项卡9上“DDE 操作”的下面,单击“忽略 DDE 请求”。提示如果需要从 Microsoft Access 中处理另一应用程序的对象,可以考虑使用“自动化”。下表说明了对每对控件 (控件:允许用户控制程序的图形用户界面对象,如文本框、复选框、滚动条
29、或命令按钮等。可使用控件显示数据或选项、执行操作或使用户界面更易阅读。)使用 DDE 函数时函数的行为。控件 说明文本框item 参数能引用文本或数字。如果 item 引用多条信息(如 Microsoft Excel 工作表中包含多个单元格的命名区域),则 DDE 函数返回第一项。对文本框使用这个函数可以显示工作表上的单元格中包含的数据。组合框DDE 函数将 item 引用的信息填入组合框。不能在组合框的文本部分输入数据。将 DDE 函数用于组合框可以显示 Microsoft Excel 工作表中的区域或国家的列表。选项组选项组中每个选项按钮的“选项值”属性都设为一个数字。通常,第一个按钮的值
30、为 1,第二个为 2,依次类推。DDE 函数所返回的数字将确定哪个选项按钮被选定。 例如,如果 DDE 函数返回 2,则第二个按钮将被选定。如果该函数的返回值与“选项值”属性的任何设置都不匹配,则没有任何按钮被选定。如果 item 引用多条信息,如在 Microsoft Excel 工作表中包含多个单元格的命名区域,DDE 函数将返回第一项。复选框如果 DDE 函数返回 0,复选框将被清除。如果该函数返回非零值,如 1 或 -1,则复选框将被选中。如果 item 引用的是文本或多条信息,如 Microsoft Excel 工作表中包含多个单元格的命名区域,复选框将不可用。DDEInitiate
31、 函数参阅应用于示例特性使用 DDEInitiate 函数可以开始与另一个应用程序的 动态数据交换 (DDE) (动态数据交换 (DDE):已建立的一种协议,用于在基于 Microsoft Windows 的程序之间交换数据。) 对话。DDEInitiate 函数打开 DDE 通道 (动态数据交换 (DDE) 通道:Microsoft Windows 程序之间的活动链接,通过该链接可交换数据。)以便在 DDE 服务器和客户应用程序之间传送数据。例如,如果要将数据从 Microsoft Excel 电子表格传送到 Microsoft Access 数据库,可以使用 DDEInitiate 函数在
32、这两个应用程序之间打开一条通道。在该示例中,10Microsoft Access 充当客户应用程序,Microsoft Excel 充当服务器应用程序。DDEInitiate(application, topic)DDEInitiate 函数具有以下参数:参数 说明application字符串表达式 (字符串表达式:任一求值为一列连续字符的表达式。表达式的元素可以是:返回字符串或字符串 Variant (VarType 8) 的函数;字符串字面值、常量、变量或 Variant。),标识可以参加 DDE 对话的应用程序。通常, application 参数是一个基于 Microsoft Wind
33、ows 应用程序的 .exe 文件名(不带 .exe 扩展名),比如 Microsoft Excel。topic字符串表达式,它是能由 application 参数识别的主题 (主题:指两个应用程序之间动态数据交换 (DDE) 会话的主题。对于绝大多数使用文件的应用程序,主题就是文件名。)的名称。要想获得主题列表,请参考应用程序的文档说明。说明如果操作成功,则 DDEInitiate 函数用由 application 和 topic 参数指定的应用程序和主题来开始 DDE 对话,然后返回一个 Long (Long 数据类型:存储大型整数的基础数据类型。Long 变量存储为 32 位数的值,范围
34、介于 -2,147,483,648 到 2,147,483,647 之间。) 整型值。该返回值代表一个唯一的通道号 (通道号:与打开的动态数据交换 (DDE) 通道相对应的整数。通道号由 Microsoft Windows 95 或更高版本指定,用 DDEInitiate 函数创建,并由其他 DDE 函数和语句使用。),标识可以传送数据的通道。该通道号随后即可和其他 DDE 函数及语句一起使用。如果应用程序尚未运行或者虽在运行但不识别 topic 参数或不支持 DDE,则 DDEInitiate 函数将会返回一个运行时错误 (运行时错误:只有当应用程序运行时才能检测到的错误。)。topic 参数的值取决于由 application 参数指定的应用程序。对于使用文档或数据文件的应用程序,有效的主题名通常包括这些文件的名称。注释 可以同时打开的最大通道数由 Microsoft Windows 以及计算机的内存和资源决定。如果不打算使用通道,则应通过 DDETerminate 或 DDETerminateAll 语句将其终止以节省资源。提示如果需要从 Microsoft Access 中处理另一应用程序的对象,可以考虑使用“自动化”。