首页 文章

访问VBA - 清单数据库

提问于
浏览
0

我对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

2 回答

  • 0

    在MS Access中工作可能有些令人沮丧,因为它的表单版本等不是你在VB6中得到的完整版SDK . 因此,您在Internet上找到的很多VB表单代码都无法正常工作 .

    我建议的方法是使用您认为可能需要的最大数量复选框创建一个布局的表单(就是您手动编写),并使用VBA代码以编程方式隐藏/显示它们(通过操作 visible 属性) . 您可以在运行时类似地更改标签和数据绑定 . 这可能看起来像是黑客攻击,但却是实现目标的有效方式 .

  • 0

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

    你的'main-form'基本上只包含一个Combobox以便选择你的客户端,然后你可以将main-form(Combobox值)的clientID和子表单的ClientID链接起来,MS Access将完成其余的工作,无需编写业务逻辑代码 .

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

相关问题