Office学院 加入收藏
Office学院 Access Word Excel Powerpoint Wps Access Outlook Tags  
您现在的位置: Office学院 - Access - 绑定到存储过程或函数的窗体或报表没有应用WHERE条件

绑定到存储过程或函数的窗体或报表没有应用WHERE条件

添加记录: 绑定到存储过程或函数 类别: Access 发布日期: 2006.01.26
适用于 中级用户:要求具备基本的宏、编码和互操作技能。

本文只适用于 Microsoft Access 项目 (.adp)。
症状当您尝试使用其他对象(例如其他 Access 窗体)上显示的值来过滤 Access 窗体或报表时,该过滤器没有得到应用。 解决方案用户可以使用若干种方法来解决无法过滤绑定到存储过程或函数的窗体或报表的问题。这些解决方法的大多数都涉及到将存储过程或函数替换为其他某种类型的记录源,例如表、视图或 SQL 语句。

但是,下面的解决方法向您说明了如何继续使用存储过程作为窗体的记录源,同时又能成功地实现 WHERE 条件或过滤器。

小心:执行本示例中的步骤将会修改示例 Access 项目 NorthwindCS.adp。您可能需要备份 NorthwindCS.adp 文件,并在项目副本上执行这些步骤。

打开示例项目 NorthwindCS.adp。 在“数据库”窗口中,单击以突出显示 Categories 表,然后单击插入菜单上的自动窗体。 在设计视图中打开窗体。 从主窗体中删除标有 Table.Products 的子窗体对象,然后向该窗体中添加一个命令按钮。如果向导启动,请单击取消。 为命令按钮设置下列属性:Name:cmdFilterProducts Caption:Filter Products On Click:[Event Procedure] 将该命令按钮的 onClick 属性设置为以下事件过程:Private Sub cmdFilterProducts_Click() DoCmd.OpenForm "Products", acNormal, , , acFormEdit, acWindowNormal End Sub 在文件菜单上,单击“关闭并返回到 Microsoft Access”。 在文件菜单上,单击保存,然后将窗体另存为 Categories1。 在“数据库”窗口中,单击查询,然后单击新建。 在新建查询对话框中,单击创建文本存储过程,然后单击确定。 键入或粘贴以下 Transact-SQL 语句,然后关闭并使用 spProducts 的默认名称保存该过程:CREATE PROCEDURE spProducts @CatID int AS SELECT * FROM Products WHERE CategoryID = @CatID RETURN 在设计视图中打开 Products 窗体,然后将 Record Source 属性从 Products 更改为 spProducts。 向下滚动到窗体的 InputParameters 属性,然后为该属性分配以下值: @CatID int = Forms![Categories1]![CategoryID]

关闭并保存 Products 窗体,然后打开 Categories1 窗体。 浏览到类别名称 Confections,然后单击 Filter Products(过滤产品)按钮。注意,Products 窗体仅打开并显示那些类别为 Confections 的产品。 状态这种现象是设计所导致的。 更多信息通常,Access 用户希望限制在 Access 窗体或报表中显示的记录的数量。达到此目标的一个方法是:使用 WHERE 条件过滤窗体或报表中的记录,并使用其他某个对象来提供条件值。例如,一个窗体可以显示一个条件值,其他窗体将使用该条件值以便限制所显示的记录的数量。但是,如果您尝试过滤的窗体将一个存储过程或函数作为其记录源,则该过滤器被忽略。下列步骤阐述了这种现象。

小心:执行本示例中的步骤将会修改示例 Access 项目 NorthwindCS.adp。您可能需要备份 NorthwindCS.adp 文件,并在项目副本上执行这些步骤。

重现问题的步骤 按照本文此前“解决方法”部分中的第 1 到 5 步进行操作。 将该命令按钮的 onClick 属性设置为以下事件过程:Private Sub cmdFilterProducts_Click() DoCmd.OpenForm "Products", acNormal, , "[CategoryID] = " & Me!CategoryID, acFormEdit, acWindowNormal End Sub 在文件菜单上,单击关闭并返回到 Microsoft Access。 在文件菜单上,单击保存,然后将窗体另存为 Categories1。 在窗体视图中打开窗体。 浏览到类别名称 Confections,然后单击 Filter Products(过滤产品)按钮。注意,Products 窗体仅打开并显示那些类别为 Confections 的产品。 关闭 Products 和 Categories1 这两个窗体。 在“数据库”窗口中,单击查询,然后单击新建。单击 创建文本存储过程,然后单击确定。 键入或粘贴以下 Transact-SQL 语句,然后关闭并使用 spProducts 的默认名称保存该过程:CREATE PROCEDURE spProducts AS SELECT * FROM Products RETURN 在设计视图中打开 Products 窗体,然后将 RecordSource 属性从 Products 更改为 spProducts。 关闭并保存 Products 窗体,然后打开 Categories1 窗体。 浏览到类别名称 Confections,然后单击 Filter Products(过滤产品)按钮。请注意,Products 窗体打开并显示所有产品,而不只是 Confections 类别中的那些产品。
顶一下
上一篇:如何以编程方式更新数据访问页链接
下一篇:从Excel导入或链接数据后Excel工作表的列格式丢失或更改
Tags: Access 设计 文件 按钮 报表 备份 窗口 函数 菜单

相关信息
  • 如何以编程方式更新数据访问页链接
  • 使用 SetOption 来禁用警告消息
  • 使用Access时必须避免的特殊字符
  • 获得链接表路径
  • 用代码创建DSN
  • 用代码更改字段属性
  • [绝招]Access人士必读
  • 在查询与窗体列表中控制小数位
  • [LWWVB教程]设计表的精义(第2课)
  • 如何用Access开发局域网软件(5)
  • 如何用Access开发局域网软件(4)
  • 如何用Access开发局域网软件(3)
  • 我的一个编程的经验
  • 如何用Access开发局域网软件(2)
  • 如何用Access开发局域网软件(1)
  • 从Excel导入或链接数据后Excel工作表的列格式丢失或更改
  • Access2003如何解析 VBA引用
  • 如何在Access数据库相关表中编辑记录
  • [LWWVB教程]设计表的精义(第4课)
  • 设计“编码”的几个经验
  • 根据企业特点定义月度范围
  • 关于我们
  • [FAQ]去掉XP窗体右上角的帮助框
  • [FAQ]如何查看VBA源程序
  • 如何以编程方式将条件格式设置应用于所有窗体控件
  • 以编程方式创建“自动编号”字段并将其“新值”属性设置为“随机”
  • 如何在ADP和SQL Server2000 Desktop Edition中使用应用程序角色
  • 以程序化方式在 Access 报表中创建新列
  • 打开 ADP表或视图时出现排序规则冲突错误
  • 创建MDE文件或ADE文件时Access可能停止响应














  • 生日密码
    血型分析
    生肖分析



    制作单位 Office学院 © 版权所有


    联系我们 关于我们 友情链接 站点地图 免责声明


    Office学院,致力于打造专业的OFFICE应用交流平台。