首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >以动态SQL为记录源的访问表单设计

以动态SQL为记录源的访问表单设计
EN

Stack Overflow用户
提问于 2014-01-08 07:20:02
回答 1查看 8.8K关注 0票数 2

我对访问VBA编程非常陌生。下面是我在Access中创建表单时遇到的一个问题。我需要将表单的记录源链接到我已经定义的查询对象。假设我的查询中有field1、field2、field3等。我想介绍的最终产品是

  1. 在表单的顶部,有几个文本框供用户输入field1、field2、field3的过滤条件。和
  2. 在单击按钮时,数据表将显示在窗体底部,并应用筛选条件。
  3. 除了查询中的现有字段外,我还需要在数据表的末尾包含一个基于field1和field2的特定计算结果的自定义列。可以显示一些文本,例如“迟到”、“早”或“准时”。

我想出了两种设计方法,但由于缺乏VBA编程的经验,我现在无法完成其中的一种.

设计1:

我有一个包含标准输入文本框的主表单。此主窗体不链接到任何数据源。然后在底部有一个子表单,它的数据源是通过读取主表单中文本框的值来动态设置的。

设计2:

我只有一个表单,但是我将所有的标准框移到表单标题部分。此表单具有来自我的查询对象的记录源。detail部分用于显示数据表,表单的filter属性设置为用户条件。

我无法完成设计1,因为我不知道如何动态地为我的子表单设置数据源。我也不能做设计2,因为我的表单的页眉部分没有出现,甚至我已经在设计视图中签入表单页眉/页脚是启用的。

我能做什么来实现我的形式设计?有其他设计建议吗?

我正在使用Access 2003开发,但我希望我的代码可以升级到Access 2010在未来。

提前谢谢你的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-08 08:23:41

对于这两种设计,您应该动态地构建数据源,如下所示:

代码语言:javascript
运行
复制
sql = "SELECT * FROM MyTableOrQuery WHERE 1=1"
If Not IsNull(textBox1) Then
  sql = sql & " And Field1 = '" & textBox1 & "'"
End If
If Not IsNull(textBox2) Then
  sql = sql & " And Field2 = '" & textBox2 & "'"
End If

最后,将sql分配给表单数据源。

Design1

下面的代码以主形式出现,就在上面的旁边:

代码语言:javascript
运行
复制
SubFormControlName.Form.RecordSource = sql

Design2

要在标题部分显示控件,需要将属性DefaultView设置为正在运行的窗体(我不知道extact转换,我使用西班牙语访问)--在本例中,数据源被分配给主窗体

代码语言:javascript
运行
复制
Me.recourdsource = sql

对于第三点:您可以使用

代码语言:javascript
运行
复制
Iif(fieldA<5,"Early",Iif(fieldA>10,"Late","OnTime"))

或者你可以使用条件格式。我认为这个选择是最明确的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20989301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档