gpt4 book ai didi

ms-access - 将变量从子窗体传递到主窗体

转载 作者:行者123 更新时间:2023-12-03 08:02:20 25 4
gpt4 key购买 nike

我制作了一个 Access 2007 数据库。我将为表单的适当事件编写一些基本的 vba,以便在打开原始表单时显示模式表单。这并不困难,但该表单将有一个来自特定表的 ID 的下拉框。用户将选择一个 ID,但我希望从此表单中选择的 ID 返回到父表单。例如:

  1. 汽车表格已打开
  2. 触发事件以打开模式表单

必须从组合框中选择 FK 到汽车的 ID(例如驾驶员的 ID - 为简单起见,我们假设一辆车可以有多个驾驶员,但反之则不然,因此仅限 1:n)

有一个按钮可以确认选择。单击此按钮后,表单将关闭,所选的驾驶员 ID 会自动插入到汽车表单上的 DriverID 文本框中(可能是只读的)。

最后一步我不确定。这如何在 VBA 中完成?

最佳答案

这是我在 StackOverflow.com 上见过的最糟糕的 Access 线程之一,因为每个答案至少在某些关键方面都是错误的——如果您将它们粘贴到 VBA 中,则没有一个会真正运行。 Access 数据库。

这里的关键原则:

以模态方式打开对话框表单(使用 acDialog 参数)

确认值后不要关闭它,而是将其 .Visible 属性设置为 False。

然后在调用窗体中,从隐藏窗体中读取值,然后关闭它。

类似这样的事情:

  DoCmd.OpenForm "dlgPickDriver", , , , , acDialog 
If IsLoaded("dlgPickDriver") Then
Me!DriverID = Forms!dlgPickDriver!cmbDriver
DoCmd.Close acForm, "dlgPickDriver"
End If

[IsLoaded是微软提供的函数;我发布了here on StackOverflow最近,但假设绝大多数编写 VBA 的 Access 开发人员会永远使用它]

我建议不要让在对话框表单中运行的代码将数据插入父表单,因为这样就不可能在多个位置使用对话框表单。让对话框窗体尽可能少地了解调用它的上下文是良好的编程实践。另一方面,调用表单确实需要知道它从中获取值的控件名称,但在我看来,这是一个比其他方式更明智的上下文。

关于ms-access - 将变量从子窗体传递到主窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1128641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com