Office中国论坛/Access中国论坛

标题: ADP 太烂。 [打印本页]

作者: hgt    时间: 2004-9-4 04:36
标题: ADP 太烂。
我想用ADP代替Access重写进销存,结果问题多多,写不下,还不如MDB用ODBC连接SQL。
作者: huanghai    时间: 2004-9-4 05:10
如果你哪天改变现在的想法,那么恭喜你,你进步了,如果没有,呵呵,也许你放弃了.
作者: hgt    时间: 2004-9-4 08:57
ADP还不如用 VS.NET C# 写窗体,用ADO.NET连接SQL2000。
作者: zhengjialon    时间: 2004-9-4 17:14
呵呵,各有各的优点。ADP的开发速度快。C#没有用过,不好说。
作者: lwwvb    时间: 2004-9-6 19:07
使用MDB是不支持事务的.不知道你有没有想过?把你的问题取出来,看看为什么说它太烂??
作者: hgt    时间: 2004-9-6 21:21
1,没有“表达式生成器”效率低,我最怕记函数,2,域聚合函数不能用,不知道怎么代替?3,有很多在MDB用组件可完成的功能,在ADP要写代码。4,我对VBA和SQL语句不熟悉,5,MDB 转过 ODBC 可以连接所有数据库,不用重写代码。6,事务问题在Access都能用VBA代码解决。7,ADP只是一个方便调用SQL2000的功能的外壳,写窗体快一点,但只有几个控件,倒不如用VS.NET。
作者: lwwvb    时间: 2004-9-11 03:23
1、没有“表达式生成器”效率低,我最怕记函数告诉你,在VB6开发程序,更加没有这个。2,域聚合函数不能用,不知道怎么代替?这类的函数是不能直接在查询中使用,但在前台是可以使用的。3,有很多在MDB用组件可完成的功能,在ADP要写代码。这个真的是缺点,因为ADP已经不能使用嵌入式SQL了.但DELPHI都没有.你应该觉得安慰.4,我对VBA和SQL语句不熟悉,呵呵,VBA就是ACCESS的开发语言,不熟悉当然开发不了好东西,SQL一定要懂呀.很多东西都是要习惯的.5,事务问题在Access都能用VBA代码解决。我想你连什么叫事务都不清楚.这不可能用VBA解决的.7,ADP只是一个方便调用SQL2000的功能的外壳,写窗体快一点,但只有几个控件,倒不如用VS.NET。告诉你,ACCESS写程序最快的是因为它用DATAWINDOWS的概念,方便性来说,VB6和DELPHI都不如ACCESS.
作者: huanghai    时间: 2004-9-24 06:00
lwwvb 分析得很有道理.
作者: hgt    时间: 2004-9-25 00:40
最近学习 ADP 有进步,发现 ADP 比 ODBC 快很多,原来 ADP 是很好用的.
作者: huanghai    时间: 2004-9-25 01:12
恭喜恭喜!
作者: lwwvb    时间: 2004-9-25 04:25
呵呵,进步就好了。也想听听ADP和MDB+ODBC的速度比较。但我现在都不太敢用MDB+ODBC的方式了。因为我第一次用ODBC的时候,就发生过链接ODBC莫名其妙的不能连通。加上上次的怪事,对MDB+ODBC都信心大减。在软件的开发过程中,发现ADP文件特小,而且链接和运行方式都很稳定。蛮不错的。[em01]
作者: hgt    时间: 2004-9-26 04:41
我最近发现一件事,MDB + ODBC + SQL2000,在一个窗口按键事件,执行一个SQL更新语句,但语句任务已经完成,因为更新语句不会返回标志,所以VBA一直傻傻的等啊等,直到超时,这个问题无法解决。我没有试过ADP,不知道如何?我有点不敢用ODBC了。
作者: lwwvb    时间: 2004-9-26 05:00
汗...
作者: lwwvb    时间: 2004-9-26 05:08
但有一点是肯定的,ADP链接一定比MDB+ODBC好,至少我这台机器链接ADP都现在都没有怪事发生过。[em01]
作者: hgt    时间: 2004-9-28 00:58
经过深入学习,发觉ADP调用储存过程的速度很快,ODBC没得比,比MDB同样的功能还要快几倍。又快又稳定,漏洞少。不愿再用ODBC。
作者: qpzm    时间: 2004-9-28 19:01
我也是刚开始学ADP,用贯了纯Access的查询,感觉很多东西在ADP下不好弄,我以前很少写代码的,iif()等一些条件都在查询中做好,在表单或报表中直接调用,但现在不行了,很多以前的观念都要改过来,一下子真不适应,希望可以同高手们多交流。
作者: lwwvb    时间: 2004-9-28 19:25
今天,发现我做的ADP当掉了,是在编写代码时按保存时候发生的(ACCESS 2003+SP1+WINDOWS 2000 ADV SP4)ACCESS的当掉,已经不止一次遇到了,尽管ACCESS开发有些小毛病,但是ADP的当掉绝对比MDB的当掉轻松得多。ADP当掉时,你可以再新建一个ADP,把窗体代码和报表都拖到新建的ADP中,就OK了。如果是MDB,要重链接表和重做表间的关系。呵呵,就算是当掉方面,ADP也比MDB有优势呀![em02]
作者: hgt    时间: 2004-9-28 21:10
我在调用储存过程更新时,要将参数经过模块的函数处理,每一行记录更新都要用VBA函数处理,想了几天都没有成功,有什么办法将VBA函数转成SQL函数?
作者: lwwvb    时间: 2004-9-29 17:53
有,使用SQL SERVER 2000的自定义函数,你最好查找一下相关资料。[em05]
作者: hgt    时间: 2004-9-29 20:33
可是那个函数在 DLL 里面的。
作者: lwwvb    时间: 2004-10-2 05:26
不要搞得这个复杂,用TSQL语法写自定义函数不是一样吗?[em01]
作者: hgt    时间: 2004-10-8 18:04
几个难关突破了,原来ADP 是很好用的,只不过没有 MDB 那么灵活。
作者: lwwvb    时间: 2004-10-9 03:37
标题: 回复:(hgt)ADP 太烂。
嘿嘿,知道就好了。其实ADP的确是好东西。等我的软件完成之后,我再给大家一看ADP的风采!!

[attach]7105[/attach]


作者: hgt    时间: 2004-10-9 17:22
有个人找我说不要用ADP了,用VB + SQL2000 吧,我知道lwwvb以前用 VB 的,现在转用ADP,能否说说原因?
作者: lwwvb    时间: 2004-10-9 20:18
你如果用VB的话,你就会发现。想做一个数据表,当中使用下拉列表,这么简单的功能也需要第三方控件,而且第三方控件的输入数据时又十分的不顺手,的确很痛苦。自己做控件?又没有这个时间。还有,VB的窗体没有数据窗体的概念,你操作数据时,你会发现十分麻烦,连个默认值的设定都要写代码。又没有数据感知功能,很多地方都要加上在ACCESS中就不必要的功能。如果要用VB,不如看看DELPHI更好,DELPHI可以用更好的第三方数据库控件,当遇到你要非要写重用数据模块时,DELPHI的真正面向对象编程会使你编得更方便。也可以看看POWERBUILDER 9,和ACCESS也是数据库的RD工具。但我认为你如果不是做专业开发,不要太花时间在这些上面了。[em01]
作者: hgt    时间: 2004-10-27 08:15
ADP 的窗体太烂了, 但写存储过程和函数又太强大了, 放弃又不舍得,只好用 ADP 写存储过程和函数, 用 .NET 写窗体和报表. [em07]
作者: hgt    时间: 2004-10-27 08:47
更换 ADP 窗体记录源:[em07]



可以用 SQL语句,视图,存储过程,函数。作为窗体“记录源”。

用 VBA 代码改变“记录源”和“输入参数”的注意事项:

清空“输入参数”不能用 NULL,应该用“”空字符串,效果:如果“存储过程”或“函数”有参数默认值,

窗体按“存储过程”或“函数”默认值显示,不会弹出对话框。

Me.出货单分析子窗体1.Form.InputParameters = ""

用有参数的“存储过程”或“函数”赋值到“记录源”,效果:如果“输入参数”为空,窗体按默认值显示,不会弹出对话框。

Me.子窗体.Form.RecordSource = "dbo.存储过程"

赋值“输入参数”一定要指明数据类型,不能用“Me.控件”方式,应该直接用“控件名”或绝对位置名称“Forms!窗体!控件”,

效果:如果参数没有错,立即按参数显示数据记录。如果参数不匹配,会弹出错误提示。

Me.子窗体.Form.InputParameters = "@是否 bit = Forms!窗体!Check, @ID int = Forms!窗体!Text"

换“记录源”的完整方法:

1,“存储过程”或“函数”的参数一定要有默认值,就不会弹出对话框。最好按默认值显示没有记录,减少窗体闪动次数,减少SQL服务器负担。

2,清空“输入参数”。 显示没有记录

3,赋值“记录源”。 显示没有记录

4,赋值“输入参数”。 立即按参数的要求显示记录。

在参数引用的控件的值改变后,用事件过程擦新子窗体或数据表记录:

Me.子窗体.Requery

[此贴子已经被作者于2004-10-27 0:52:11编辑过]


作者: hgt    时间: 2004-10-27 16:55
[attach]7365[/attach]



[此贴子已经被作者于2004-10-27 9:00:10编辑过]


作者: hgt    时间: 2004-10-27 17:14
ADP 中打印当前窗体内容在 MDB 中报表数据来源于查询,查询中的条件引用窗体控件,运行一下,显示什么就打印什么。用一个按键调用报表就 OK。但在 ADP 报表中,用不了 MDB 的方法,ADP报表数据来源必须使用有参数的“存储过程”或“函数”。1,在报表的“记录源”填“存储过程”或“函数”的名字。

   在“输入参数”引用要打印的窗体控件或者字段名,最好用绝对位置,参数后要指定数据类型。

   如:@参数1 int = Forms!窗体!文本框, @参数2 bit = Forms!窗体!复选框

   用按键事件打开报表2,在 VBA 代码中调用有参数的“存储过程”或“函数”,

   将结果集赋值给报表的“Recordset”

   用代码打开报表。
作者: hgt    时间: 2004-10-30 03:32
ADP窗体和ADO事件中,没有删除记录后触发的事件,可以用做标记方法解决。1,在窗体放一个“复选框”,默认值设置为“False”,作为全局变量标记。2,在窗体事件“确认删除后”写代码,将“复选框”的值改为“True”,代表删除就要开始了。3,删除记录完成后,光标会指到数据表的第一个控件,触发控件“进入”,“获得焦点”,“成为当前”的事件,4,可以在控件“进入”事件中判断“复选框”,如果是“True”,就是我们需要发生的事件,做动作前先将“复选框”改为“False”避免 后面 的动作异常终止,做成死循环。5,比如,用“Recalc”或者“Requery”会循环触发“进入”事件,会造成死循环,就要用 If 判断“复选框”,让他只计算一次。
作者: huanghai    时间: 2004-10-30 05:23
恭喜hgt有如此多的心得与研究
作者: hgt    时间: 2004-10-30 20:17
ADP 帮助里面说 连接另外的数据库 是 只读 的,微软真是 TMD.不要学 ADP 了, 学 .NET 吧.微软不会做控件, VS.NET 在设计期间竟然不能像 Delphi 那样见到 数据.
作者: hgt    时间: 2004-10-31 01:20
今天下午 用 ADP 与 MDB 连接 Lwwvb 的 SQL2000 服务器试验。结果吓我一跳,先用 ADP 连接 导入一个表 有3000多条记录,用了大概 4 分钟。然后打开这个表,用了 15 秒。第一次用 存储过程 打开这个表用了 16 秒,第二次用了 14 秒。然后关闭ADP,建 ODBC 连接, 新建一个 MDB  使用系统的 ODBC 连接,然后打开这个表 只用了 5 秒。 再建一个查询,用查询打开这个表,只用了 4秒。看来 ADP 在远程连接是垃圾一个[em03]ADP 用视图连接另外的数据库竟然是 只读 的。MDB + ODBC 连接其他数据库,还可以建关系,就像本地数据库一样。ADP 只是在局域网有优势,在远程使用是垃圾。
作者: lwwvb    时间: 2004-11-16 06:15
呵呵,我的应用还没有要在远程上,但这样听来,也有点担心.我知道ADP其实就是OLE DB,ODBC其实就是RDO,但按微软的说法,OLE DB比RDO是更好的?但HGT的测试结果也令我很吃惊.为什么会这样呢?我也不明白.会不会ODBC在远程数据链接时是使用压缩方式呢?而ADP是老老实实的传数据?如果不是这样的话,是不可能有这么大的差别.但我认为HGT要多做全面测试,才能证明这个问题.不能以偏概全.[em05]
作者: hgt    时间: 2004-11-18 18:13
气死我了 .NET 非常罗嗦,

Access 的控件窗体,功能太多,要关闭一些,

.NET 控件窗体,没有功能,每个功能要写代码实现.

安全性来说 .NET 绝对比 Access 强.但是就连,数据表的数据更新入库都要写一堆代码.要定义一个变量,用代码取得数据表当前编辑行号,每个字段,逐个赋值到变量,然后更新适配器.麻烦罗嗦之极.

微软真是TMD.
作者: lwwvb    时间: 2004-11-18 21:52
呵呵,会不会微软有些东西是有意搞上去的。我用ACCESS写程序也是气个半死,那个ACCESS ,不知道当掉我的ADP多少次了。最近又发现我的报表画线工具在2003有时会出错,在XP及2000又没有问题。所以现在的我用的是ACCESS XP。但,今天,又发现了一个新问题,有一个奇怪错误在ACCESS XP上是会出现的,但在ACCESS 2003是运行是正常的。我希望在ACCESS.NET不会搞这么多小东西了。否则我会崩溃的~~~~~~[em06]
作者: hgt    时间: 2004-11-20 05:06
ADP 竟然没有 交叉表查询
作者: lwwvb    时间: 2004-11-21 06:32
[em05]adp是这样的。但我认为关系不大,因为这个我比较少用,我一般用EXCEL数据透视表就OK了。
作者: aronliu    时间: 2007-12-12 15:44
标题: 现在想学ADP
今天想来有点收获!
只是不知又写又会发生什么事!!
作者: laomao    时间: 2007-12-14 00:30
adp里有很多独有的使用上的技巧和注意事项,可惜没有一本书上细致地讲过,谁见过这样的书,大家一起译出来,需要的人很多!
作者: rym_yy    时间: 2008-5-22 09:07
刚开始学习ADP,听个两位高手的话,益处多多
作者: zhaoxyong    时间: 2008-5-26 11:56
标题: 我现在就在用adp
adp的优点,就是速度快,对我们这些并非真正的程序员来说,想用MS SQL 这样的数据库,为后台,开发一些小程序的话,只能用ADP了.  可惜的是.access中没提供dbgrid之类的控件.[:26]
作者: laiyin555    时间: 2009-7-2 13:42
本贴子很精辟,学习了。顶上去让大家看看。
作者: 轻风    时间: 2009-7-2 16:55
谁能为此贴做个总结?
作者: chenyingfengsx    时间: 2009-9-26 13:58
正在学习中。。。。。。




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