ACCESS 调用后台存储过程的实现方法 |
本文标签:ACCESS,后台存储过程 然而,它要对大量数据 解决时,速度 比较慢 。当有大量数据需求 解决时,不能在Client端 解决,而必须在Server端 解决 。 但ACCESS和Server端中间多数通过ODBC来衔接,这样就添加了调用 后盾存储过程的难度 。小编通过在实际工作中长 工夫的探索,依据不同的业务需求, 可以用下面三种 步骤去调用 后盾存储过程 。 一、 Access 向 后盾提交作业,这一个个作业对应一个个的存储过程 。在SQL Server 6.5中,通过Task Manager 来 构建相应的Task; 而在Oracle 8.0中,通过Managing Job Queue 来 构建相应的Job 。在Access中,在job_list表中插入一个作业,这些作业普通天天晚上运行一次 。这些作业对应的业务普通是需求 解决十分大量数据,而实时性又是较低的,在我们的业务中 比较典型的例子是天天晚上大量的电费计算 。 二、 在Server端 构建一些触发器(Trigger),在Access中激活这些触发器 。在SQL Server 6.5 和Oracle 8.0中,都是通过Create Trigger 来实现 。在Access中,依据不同的业务,通过插入、 批改、删除记录来激活不同触发器 。在我们的业务中一个例子是,当业务人员 批改消费者的电表读数后,激活计算电费的触发器,能马上再一次计算该消费者的电费 。这样子,既 可以和批量计算电费共享同一程序,不用在Access端再一次开发,有 可以加速前端的响应速度 。 三、 以上二种 步骤,只 可以说是 直接调用 后盾存储过程,Access还提供一种直接调用的 步骤, 可以用Access 传递 查问直接将命令发送到数据库服务器 。 构建Access 传递 查问步骤如下: (1) 在数据库窗口中单击“ 查问”选项卡, 而后单击“新建”按钮 。 (2) 在“新建 查问”对话框中单击“设计视图”选项, 而后单击“确定”按钮 。 (3) 在“显示表”对话框内单击“关闭”按钮 。 (4) 在“ 查问”菜单上,指到“SQL 语句条件”, 而后单击“传递”命令 。 (5) 在工具栏上,请单击“属性”按钮 以显示 查问属性表 。 (6) 在 查问属性表中,请设置“ODBC 衔接字符串”属性来指定要衔接的数据库信息 。 可以输入衔接信息: ”ODBC;DSN=ntserver0;UID=sa;PWD=;DATABASE=BMS”,或用“生成器”按钮生成 。 (7) 因存储过程不用返回记录,所以将“返回记录”属性设置为“否” 。 (8) 在“SQL 传递 查问”窗口中,输入传递 查问: exec statistics 。Statistics 是SQL Server 数据库的一个存储过程 。 (9) 关闭 查问, 保留 查问为:stat_query 。 运行传递 查问的 步骤有: (1) 用Microsoft Access的宏 OpenQuery 。 (2) 用下面的事件过程: Private Sub 统计_Click() Dim dbs As Database, qdf As QueryDef Dim tmq As Dynaset Dim strSQL As String Set dbs = CurrentDb 打开上面建的传递 查问stat_query Set qdf = dbs.OpenQueryDef("stat_query ") qdf.Execute Set dbs = Nothing End Sub 这种 步骤在SQL Server 6.5 中实现 彻底没问题,在Oracle 8.0中不能实现, 舛误信息为:ORA-00900 invalid SQL statement. 因为这种 步骤不需求一个中间的表去排队或激活 后盾存储过程,所以它的 利用面就很广, 但凡需求 解决大量数据的业务,都 可以放到Server端去 解决,如统计报表 。 通过以上三种 步骤,解决了Access对大量数据 解决速度慢的弱点,大大加大了深圳供电局数据 解决 威力 。 |