但是,当需要处理大量数据时,速度比较慢。当需要处理的数据量很大时,不能在Client端处理,必须在Server端处理。但是ACCESS与Server端的连接大多是通过ODBC进行的,增加了调用后台存储过程的难度。通过在实际工作中的长期探索,笔者可以根据不同的业务需求,采用以下三种方式来调用后台存储过程。 1、Access向后台提交作业,每个作业对应一个存储过程。在SQLServer6.5中,通过任务管理器建立相应的Task;而在Oracle8.0中,对应的Job是通过ManagingJobQueue来建立的。在Access中,将一个作业插入到job_list表中,这些作业通常每晚运行。这些作业对应的业务一般需要处理非常大量的数据,但实时性较低。我们业务中的一个典型例子是每天晚上计算大量的电费。 其次,在Server端建立一些触发器(Trigger),在Access中激活这些触发器。在SQLServer6.5和Oracle8.0中,是通过CreateTrigger实现的。在Access中,根据不同的业务,通过插入、修改、删除记录来激活不同的触发器。我们业务中的一个例子是当业务人员修改了用户的电表读数后,激活计算电费的触发器,立即重新计算用户的电费。这样可以和批量计算电费共享同一个程序,不需要在Access端重新开发,可以加快前端响应速度。 3。以上两种方法只能说是间接调用了后台存储过程。Access还提供了直接调用的方法,可以直接使用Access传递查询向数据库服务器发送命令。 创建Access传输查询的步骤如下: (1)单击数据库窗口中的“查询”选项卡,然后单击“新建”按钮。 (2)在“新建查询”对话框中,单击“设计视图”选项,然后单击“确定”按钮。 (3)单击“显示表格”对话框中的“关闭”按钮。 (4)在“查询”菜单上,指向“SQL语句条件”,然后单击“通过”命令。 (5)在工具栏上,单击“属性”按钮以显示查询属性表。 (6)在查询属性表中,请设置“ODBC连接字符串”属性来指定要连接的数据库信息。可以输入连接信息:“ODBC;DSN=ntserver0;UID=sa;PWD=;DATABASE=BMS”,或者使用“Generator”按钮生成。 (7)由于存储过程不需要返回记录,所以将“返回记录”属性设置为“否”。 (8)在SQL透传查询窗口,输入透传查询:execstatistics。Statistics是SQLServer数据库的一个存储过程。 (9)关闭查询,将查询保存为:stat_query。 运行传递查询的方法是: (1)使用MicrosoftAccess的宏OpenQuery。 (2)使用以下事件过程: PrivateSubStatistics_Click() DimdbsAsDatabase,qdfAsQueryDef DimtmqAsDynaset DimstrSQLAsString Setdbs=CurrentDb '打开上面构建的透传查询stat_query Setqdf=dbs.OpenQueryDef("stat_query") qdf.Execute Setdbs=Nothing EndSub 这种方法在SQLServer6.5中完全没问题,但在Oracle8.0中就无法实现了。错误信息是:ORA-00900无效的SQL语句。由于这种方式不需要中间表来排队,也不需要激活后台存储过程,所以应用范围很广,任何需要处理大量数据的业务都可以在服务器端处理,比如统计报表. 通过以上三种方式,解决了Access处理大量数据速度慢的弱点,大大提高了深圳市供电局的数据处理能力。
