【问题标题】:I need to fill a textbox from the data selected in a listbox in another form我需要从另一个表单的列表框中选择的数据中填充一个文本框
【发布时间】:2014-10-08 09:42:33
【问题描述】:

我正在尝试使其中一种形式的文本框从另一种形式的列表框中获取数据。另一种形式将是一个查询的弹出形式,将在单击文本框时启动。原来是这样的

  1. 表格 A 已打开
  2. 文本框 A 被点击
  3. 单击文本框 A 会打开具有列表框的表单 B
  4. 已选择列表框值
  5. 按下表单 B 中的关闭按钮
  6. 现在表单 A 中的文本框 A 应该包含我们在 表单 B 中的列表框

我认为可以通过创建变量(如果我没记错的话是公共变量)来完成,但我完全是新手,不知道要使用什么代码。

问题是,我有几个相同表单的文本框,它们将运行相同的代码并从相同的表单获取文本框中的值。

【问题讨论】:

  • @Saif 你在哪里看到html?这是 MS Access
  • 哦...抱歉,这让我走错了路。真的很抱歉@OverMind

标签: forms ms-access textbox listbox


【解决方案1】:

可能是这样的,

Private Sub textBoxA_OnClick()
    DoCmd.OpenForm "FormB", OpenArgs:= "textBoxA"
End Sub

Private Sub textBoxB_OnClick()
    DoCmd.OpenForm "FormB", OpenArgs:= "textBoxB"
End Sub

然后选择你想要的 ListBox 项。然后单击按钮,您可以检查是否选择了项目。然后基于此,您可以将该数据放入文本框中。

Private Sub formBButton_OnClick()
    If Me.FormBList.ListCount = 0 Then 
        MsgBox "You have not made any selection, please select an option.", _
                vbInformation
        Exit Sub    
    End If

    If Len(Me.OpenArgs & vbNullString) <> 0 Then _
        Forms("FormA").Controls(Me.OpenArgs) = Me.FormBList

    DoCmd.Close acForm, Me.Name
End Sub

【讨论】:

  • 没错,这会起作用,但我的问题是,我有几个文本框要以相同的方式填写。假设 txtboxA、B、C、D 和 E,我希望按钮填充触发它的文本框。使用您的代码,我将不得不创建多个表单,除了按钮代码之外的所有内容都相同。我不能只有一个表单,然后这个表单填充触发它的文本框吗?
  • 在这种情况下,使用 OpenArgs 中触发打开表单方法的控件名称。检查我编辑的代码!
  • 命令效果很好。但没有出现消息框。它只是关闭选择表单。
  • MsgBox "您还没有做出任何选择,请选择一个选项。"
  • 只有在您没有进行任何选择时才会出现消息框。
【解决方案2】:

这是我用的。

我把所有的文本框都藏起来了,让它们不可见。

我添加了一个添加按钮。

添加按钮打开表单 (frmslctattendee) 在表单中,组合框的值是从查询中选择的 那么命令按钮后面的代码如下。

Private Sub Command5_Click()
    If Forms!frmmeetings!txtat8.Visible = True Then
        Forms!frmmeetings!txtat9.Visible = True
        If Len(Forms!frmmeetings!txtat9 & vbNullString) = 0 Then
            Forms!frmmeetings!txtat9.Value = cmbnameselect.Value
        End If
    End If

    If Forms!frmmeetings!txtat7.Visible = True Then
        Forms!frmmeetings!txtat8.Visible = True
        If Len(Forms!frmmeetings!txtat8 & vbNullString) = 0 Then
            Forms!frmmeetings!txtat8.Value = cmbnameselect.Value
        End If
    End If

    If Forms!frmmeetings!txtat6.Visible = True Then
        Forms!frmmeetings!txtat7.Visible = True
        If Len(Forms!frmmeetings!txtat7 & vbNullString) = 0 Then
            Forms!frmmeetings!txtat7.Value = cmbnameselect.Value
        End If
    End If

    If Forms!frmmeetings!txtat5.Visible = True Then
        Forms!frmmeetings!txtat6.Visible = True
        If Len(Forms!frmmeetings!txtat6 & vbNullString) = 0 Then
            Forms!frmmeetings!txtat6.Value = cmbnameselect.Value
        End If
    End If

    If Forms!frmmeetings!txtat4.Visible = True Then
        Forms!frmmeetings!txtat5.Visible = True
        If Len(Forms!frmmeetings!txtat5 & vbNullString) = 0 Then
            Forms!frmmeetings!txtat5.Value = cmbnameselect.Value
        End If
    End If

    If Forms!frmmeetings!txtat3.Visible = True Then
        Forms!frmmeetings!txtat4.Visible = True
        If Len(Forms!frmmeetings!txtat4 & vbNullString) = 0 Then
            Forms!frmmeetings!txtat4.Value = cmbnameselect.Value
        End If
    End If

    If Forms!frmmeetings!txtat2.Visible = True Then
        Forms!frmmeetings!txtat3.Visible = True
        If Len(Forms!frmmeetings!txtat3 & vbNullString) = 0 Then
            Forms!frmmeetings!txtat3.Value = cmbnameselect.Value
        End If
    End If

    If Forms!frmmeetings!txtat1.Visible = True Then
        Forms!frmmeetings!txtat2.Visible = True
        If Len(Forms!frmmeetings!txtat2 & vbNullString) = 0 Then
            Forms!frmmeetings!txtat2.Value = cmbnameselect.Value
        End If
    End If

    If Forms!frmmeetings!txtat1.Visible = False Then
        Forms!frmmeetings!txtat1.Visible = True
        If Len(Forms!frmmeetings!txtat1 & vbNullString) = 0 Then
            Forms!frmmeetings!txtat1.Value = cmbnameselect.Value
        End If
    End If

    DoCmd.Close
End Sub

它完成了这项工作。 等待你的cmets。

【讨论】:

  • 我对你的代码有点不知所措。您正在检查一个控件的可见性,但设置另一个控件的值?似乎是,检查 Control(n-1) 的可见性,但设置 Control(n) 的值。那是怎么做的呢?
  • 它的工作原理是我已锁定所有文本框,因此用户无法与之交互。然后当单击按钮时,它会检查最后一个可见的文本框,然后使下一个文本框(尚不可见)可见并将所选信息添加到其中。它还将信息添加到最后一个空文本框,否则会将数据放入所有早期的文本框。
  • 我要说的一个简单问题的很长令人困惑的方法。看看我的答案中编辑的代码是否适合你!
  • 在我的例子中,它将向后检查可见性,从 9 到 1。假设前 3 个框是可见的。对于框 9 到 4,If 子句将为 false,并且不执行任何代码。然后在文本框 3 它将为真,因此它将使文本框 4 可见并将数据添加到其中(因为它仍然是空的)。然后它会继续到框 1 到 3,它们也是正确的,但由于它们不是空的,它不会向它们添加任何数据。
  • 我想是的。这就是我的新手头脑所能想到的。我现在就试试你的。
猜你喜欢
  • 2023-03-04
  • 1970-01-01
  • 2019-03-21
  • 2011-08-17
  • 1970-01-01
  • 2012-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多