【问题标题】:Access VBA - checklist database访问 VBA - 清单数据库
【发布时间】:2020-07-13 20:19:05
【问题描述】:

我对 Access 比较陌生,但对 VBA 有一点经验。我正在尝试为不同的客户创建一个包含各种问题的日常工作清单数据库。一位朋友建议我通过 VBA 创建一个动态表单,每次从下拉框中选择客户时,它都会在文本框中创建多个问题。我正在尝试在 VBA 中创建文本框,但我收到一条错误消息,提示我需要处于设计模式才能创建文本框。

我从互联网上提取了以下代码,是否可以在代码运行后激活设计视图,因为我需要在表单视图中启动以单击下拉菜单,或者如果有人对其他方式有建议我'我也很感激。谢谢

Private Sub ComClient_AfterUpdate()

    Dim x As Integer
    Dim frm As Form
    Dim ctrl As Control, ctlText As Control, CtlLabel As Control
    Dim intDataX As Integer, intDataY As Integer
    Dim intLabelX As Integer, intLabelY As Integer
    Dim count As Integer
    count = RecordCount

    For x = 1 To count
    Set ctrl = CreateControl("TestControlCreate", acTextBox, acDetail, , "", 0 + (x * 300), 0, 300, 240)

    frm.RecordSource = "Get_Questions"

    ctrl.ControlName = "TxtBx" & x

    Set ctlText = CreateControl("Question " & x, acTextBox, , "", "", _
        intDataX, intDataY)

    Set CtlLabel = CreateControl(frm.Name, acLabel, , _
         ctlText.Name, "NewLabel", intLabelX, intLabelY)

    DoCmd.Restore

Next
End Sub

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    在 MS Access 中工作可能有些令人沮丧,因为它的表单版本等不是您在 VB6 中获得的成熟 SDK。所以网上找的很多VB表单代码都不行。

    我推荐的方法是创建一个布局的表单(即您手动),其中包含您认为可能需要的最大数量的复选框,并使用 VBA 代码以编程方式隐藏/显示它们(通过操作 @ 987654321@财产)。您可以类似地在运行时更改标签和数据绑定。这可能看起来像是一种 hack,但却是实现目标的有效方式。

    【讨论】:

    • 这是很好的建议,非常感谢您抽出宝贵时间 Noahlz
    【解决方案2】:

    如果您有一个包含给定客户的所有问题的表格或查询,您还可以显示一个带有隐藏文本框 (ClientID)、一个文本框 (Question) 和一个复选框 (answer) 的连续子表单,以便显示所有问题都带有复选框。

    您的“主表单”基本上只包含一个组合框以选择您的客户端,然后您可以将主表单的客户端 ID(组合框值)与您的子表单的客户端 ID 链接起来,MS Access 就可以了其余的,无需编写您的业务逻辑。

    通过这种方式,如果需要,您还可以将答案存储在数据库中,拥有漂亮的用户界面和没有硬编码问题的动态设计...

    【讨论】:

      猜你喜欢
      • 2021-08-06
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      • 2011-05-09
      • 2018-09-07
      • 2014-10-09
      • 1970-01-01
      相关资源
      最近更新 更多