访问VBA - 清单数据库

时间:2015-03-19 20:03:01

标签: access-vba

我对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 :(得分:0)

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

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

答案 1 :(得分:0)

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

您的主要形式'基本上只包含一个Combobox以便选择你的客户端,然后你可以将主表单的clientID(Combobox值)与子表单的ClientID链接起来,MS Access将完成其余的工作,而不需要编写你的代码。商业逻辑。

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

相关问题