设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: hgt
打印 上一主题 下一主题

ADP 太烂。

[复制链接]
11#
 楼主| 发表于 2004-10-27 08:15:00 | 显示全部楼层
ADP 的窗体太烂了, 但写存储过程和函数又太强大了, 放弃又不舍得,只好用 ADP 写存储过程和函数, 用 .NET 写窗体和报表. [em07]
12#
 楼主| 发表于 2004-10-27 08:47:00 | 显示全部楼层
更换 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编辑过]

13#
 楼主| 发表于 2004-10-27 16:55:00 | 显示全部楼层




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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

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

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

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

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

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

   用代码打开报表。
15#
 楼主| 发表于 2004-10-30 03:32:00 | 显示全部楼层
ADP窗体和ADO事件中,没有删除记录后触发的事件,可以用做标记方法解决。1,在窗体放一个“复选框”,默认值设置为“False”,作为全局变量标记。2,在窗体事件“确认删除后”写代码,将“复选框”的值改为“True”,代表删除就要开始了。3,删除记录完成后,光标会指到数据表的第一个控件,触发控件“进入”,“获得焦点”,“成为当前”的事件,4,可以在控件“进入”事件中判断“复选框”,如果是“True”,就是我们需要发生的事件,做动作前先将“复选框”改为“False”避免 后面 的动作异常终止,做成死循环。5,比如,用“Recalc”或者“Requery”会循环触发“进入”事件,会造成死循环,就要用 If 判断“复选框”,让他只计算一次。
16#
 楼主| 发表于 2004-10-30 20:17:00 | 显示全部楼层
ADP 帮助里面说 连接另外的数据库 是 只读 的,微软真是 TMD.不要学 ADP 了, 学 .NET 吧.微软不会做控件, VS.NET 在设计期间竟然不能像 Delphi 那样见到 数据.
17#
 楼主| 发表于 2004-10-31 01:20:00 | 显示全部楼层
今天下午 用 ADP 与 MDB 连接 Lwwvb 的 SQL2000 服务器试验。结果吓我一跳,先用 ADP 连接 导入一个表 有3000多条记录,用了大概 4 分钟。然后打开这个表,用了 15 秒。第一次用 存储过程 打开这个表用了 16 秒,第二次用了 14 秒。然后关闭ADP,建 ODBC 连接, 新建一个 MDB  使用系统的 ODBC 连接,然后打开这个表 只用了 5 秒。 再建一个查询,用查询打开这个表,只用了 4秒。看来 ADP 在远程连接是垃圾一个[em03]ADP 用视图连接另外的数据库竟然是 只读 的。MDB + ODBC 连接其他数据库,还可以建关系,就像本地数据库一样。ADP 只是在局域网有优势,在远程使用是垃圾。
18#
 楼主| 发表于 2004-11-18 18:13:00 | 显示全部楼层
气死我了 .NET 非常罗嗦,

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

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

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

微软真是TMD.
19#
 楼主| 发表于 2004-11-20 05:06:00 | 显示全部楼层
ADP 竟然没有 交叉表查询
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-13 15:51 , Processed in 0.091280 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表