Office中国论坛/Access中国论坛

标题: 关于ADP在实际运用中遇到的一些问题 [打印本页]

作者: lshstruc    时间: 2015-4-29 11:40
标题: 关于ADP在实际运用中遇到的一些问题
本帖最后由 lshstruc 于 2015-4-29 11:48 编辑

关于ADP的几个特性,跟大家交流一下:
1.currentproject.connection不支持ADO事务,事务提交或回滚的时候,会出现“当前没有活动事务”的提示。经分析,主要原因应该是adp的currentproject.connection采用的是本地游标,CursorLocation = 3,如果在ADP中使用事务,建议自己写连接字符串,并定义服务器端游标。推荐以下字符串cn.Open "rovider=Microsoft.Access.OLEDB.10.0;Data Provider=SQLOLEDB;Server=127.0.0.1,7788;Database=wzb;UID=saWD=admin;"
2.adp的主子窗体如果存在以下情况的时候,会弹出对话框“列前缀**与查询中所用的表名或别名不匹配”
   1.子窗体与主窗体通过字段链接
   2.子窗体数据源不绑定到表,而是绑定到查询
   3.子窗体打开筛选
就会在子窗体刷新时,不经意间弹出对话框,虽然不影响最终查询结果,但是很烦人。解决的办法是在刷新通过VBA代码关闭筛选,或者在SQLSERVER里面用查询语句建立视图,再把视图绑定到子窗体。
3.在ADP中建立的存储过程,比如删除,追加,更新,若在ADP环境下直接通过调用存储过程名执行,只会作用前10000条,但是如果在VBA里直接通过SQL语句运行,则作用全表,这个问题如果不解决,会直接影响我们操作大表时的结果的正确性,属于严重的问题,这个解决办法是在数据库设置里面,把记录限制10000条改成0,adp的这个功能很奇怪,因为我的理解,存储过程是保存在服务器上的,本地为什么要去限制他呢?跟你有毛的关系吗?。
4.adp的绑定窗体里面有一个SERVERFILTER属性,就是对记录集进行筛选,注意不是本地筛选,而是在服务器端筛选,当我们需要筛选时,vba里面代码定义筛选后,会临时保存到窗体属性里面,在这个期间如果你点了程序的保存按钮,就会记忆到窗体属性里面,下次窗体加载时会自动直接执行服务器筛选,当你不需要筛选时,却不能阻止,只能得到一个错误的查询结果,解决办法是,先清除自动保存的筛选定义,然后在窗体的open事件里,写上“me.serverfilter=""”,每次自动清除。
5.以后就没有ADP了。

作者: roych    时间: 2015-4-29 14:41
我只看到第五点…大家还玩ADP么?{:soso_e120:}

作者: lshstruc    时间: 2015-4-30 08:58
以上的第二条,在子窗体打开排序的时候,也会出现,
作者: zhuyiwen    时间: 2015-4-30 12:45
总结得真不错,赞一个。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3