首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MS Acess中的子窗体

MS Acess中的子窗体
EN

Stack Overflow用户
提问于 2014-11-07 05:33:10
回答 1查看 50关注 0票数 0

背景资料:我有两张表。一个是客户端列表和一些基本客户端属性(tblClient)。第二个有一个产品列表。每个客户端可以有多个产品,所以我在这里有一个一对多的关系,其中主键(客户端名称)是product表中的外键。

我想做的是:我想创建两个表单。主窗体将具有客户端的快照和一个小的嵌套表,以提供所有产品的摘要。这个我已经成功地完成了。我还制作了第二个表单,可以在其中输入与产品相关的所有详细信息(匹配products数据表)。我想做的是在主客户窗体上有一个按钮,当点击时打开产品窗体只为客户当前使用的产品。如果没有产品,它将打开一个空白表单,其中包含一些预先填写的信息(即客户名称)。例如,如果我正在查看客户John Doe,而他当前拥有产品A、B和C,我希望单击一个按钮来显示特定于John Doe的产品详细信息。如果他没有产品,我想访问打开一个新的入口产品表单,我已经填写了无名氏的名字,以避免混淆。

我是一个非常新的访问,任何帮助将非常感谢。

谢谢,Z

EN

回答 1

Stack Overflow用户

发布于 2014-11-07 23:29:02

我假设你的第二张表格是链接到一个表格上的?如果是这样,只需在打开记录集时对其进行筛选。

例如,按钮的OnClick事件将查看当前的ClientID并根据该ClientID打开表单。

代码语言:javascript
复制
Dim stDocName As String
Dim stOpenArg As String

'Make stDocName the name of the form you're going to open
stDocName = "frmAssignProject"
'Make stOpenArg your variable to filter on
stOpenArg = Me.ClientID

DoCmd.OpenForm stDocName, , , , , , stOpenArg

然后,在第二个表单的OnLoad事件中,根据您的OpenArg进行过滤:

代码语言:javascript
复制
private sub form_load()
   Dim rs as DAO.Recordset

   Me.RecordSource = "Select * From tblProducts Where ClientID = " & OpenArgs & ""

   Set rs = Me.RecordsetClone

   'This is where it determines if it should pull in the data from the previous form
   If rs.RecordCount > 0 Then       
   else
      Me.ClientID = Forms!frmClients.ClientID
      Me.ClientName = Forms!frmClients.ClientName
      etc... 
   end if

 end sub 

以上完全是“航空代码”,它可能需要一些调整,但概念是合理的。

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

https://stackoverflow.com/questions/26789782

复制
相关文章

相似问题

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