我目前正在尝试改进Access数据库VBA,这是从我的前任工作中继承的。我已经摆脱了特定的形式。多文本框和查找
我有一个表单,目前只是一个包含32个单独的文本框的大表单,每个表单后面都有相同的代码,但是它对于每个文本框重复使用相同的代码,只更改每个文本框的引用。
Private Sub Cand_No2_AfterUpdate()
Cand_Name2 = DLookup("[Name]", "[qryExamAbsences]", "[Cand_No] = Cand_No2")
End Sub
然后,一旦按下按钮
If Not IsNull([Cand_Name1]) Then
Rope = Rope & " Or Cand_No = " & [Cand_No1]
End If
(if语句包含在按钮mousedown事件。)
发生的每个文本框,然后过滤报告是打印供办公使用。这有很多问题,但我试图解决的主要问题是条目数有上限,如果我需要过滤超过32个,我需要删除文本并重新开始。
有没有一种方法可以将所有这些组合到一段代码中,以便在需要时创建文本框?
编辑。
我发现了一种给用户留下印象的方式,即在每个条目从用户立场改进了表单后(不再有32个文本框或不必向下滚动到打印按钮。)但是这仍然没有解决乱码的问题,因为我不得不重复每个盒子的额外代码,这也使我仍然有最多32个条目。
新的代码如下:
If Not IsNull(Cand_Name1.value) Then
Cand_No2.Visible = True
Cand_Name2.Visible = True
cmdPrint.Top = 2500
cmdPrint.Left = 2500
DoCmd.MoveSize 1440, 2201, , 4000
Else
Cand_No2.Visible = False
Cand_Name2.Visible = False
cmdPrint.Top = 2000
DoCmd.MoveSize 1440, 2201, , 3500
End If
本质使得下一个文本框可见上下移动打印按钮以腾出空间给新的文本框中。它也扩大了窗口。
我有点困惑,你想在你的代码中做什么。当用户在文本框中完成输入时,您将相匹配的Cand_No的名称放入变量中,然后使用按钮将数字逐个添加到稍后用于打印结果的查询字符串中?如果我们对最终结果和投入有更多了解,可能会有更高效的方法来帮助您。 – StuckAtWork
抱歉,没有意识到我错过了一些有用的东西。我对这种事情并不十分熟练,但却被这项任务所困扰。 过程如下:用户在文本框中输入CAND_NO,然后用它查找cand_name并过滤打印的报告,以便只显示输入的报告。使用CAND_No的原因是由于另一个进程,并且CAND_Name查找仍然需要发生,因此用户可以确保输入正确的人员。CAND_Name会显示在用户输入CAND_NO的文本框旁边的文本框中 – KorgyBoy
我的目标也是删除表单中的一些瑕疵。目前,所有32个文本框都是可见的,它只是让它看起来很乱,我也想改进表单背后的代码,只是通常使其更有效。我继承了一个数据库,这个数据库已经有10年的设计不佳了,他们不想离开它,所以我试图改善它。 – KorgyBoy