我对访问VBA编程非常陌生。下面是我在Access中创建表单时遇到的一个问题。我需要将表单的记录源链接到我已经定义的查询对象。假设我的查询中有field1、field2、field3等。我想介绍的最终产品是
我想出了两种设计方法,但由于缺乏VBA编程的经验,我现在无法完成其中的一种.
设计1:
我有一个包含标准输入文本框的主表单。此主窗体不链接到任何数据源。然后在底部有一个子表单,它的数据源是通过读取主表单中文本框的值来动态设置的。
设计2:
我只有一个表单,但是我将所有的标准框移到表单标题部分。此表单具有来自我的查询对象的记录源。detail部分用于显示数据表,表单的filter属性设置为用户条件。
我无法完成设计1,因为我不知道如何动态地为我的子表单设置数据源。我也不能做设计2,因为我的表单的页眉部分没有出现,甚至我已经在设计视图中签入表单页眉/页脚是启用的。
我能做什么来实现我的形式设计?有其他设计建议吗?
我正在使用Access 2003开发,但我希望我的代码可以升级到Access 2010在未来。
提前谢谢你的建议。
发布于 2014-01-08 08:23:41
对于这两种设计,您应该动态地构建数据源,如下所示:
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
下面的代码以主形式出现,就在上面的旁边:
SubFormControlName.Form.RecordSource = sql
Design2
要在标题部分显示控件,需要将属性DefaultView设置为正在运行的窗体(我不知道extact转换,我使用西班牙语访问)--在本例中,数据源被分配给主窗体
Me.recourdsource = sql
对于第三点:您可以使用
Iif(fieldA<5,"Early",Iif(fieldA>10,"Late","OnTime"))
或者你可以使用条件格式。我认为这个选择是最明确的。
https://stackoverflow.com/questions/20989301
复制相似问题