2012-05-22 62 views
0

我目前正在尝试改进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 

本质使得下一个文本框可见上下移动打印按钮以腾出空间给新的文本框中。它也扩大了窗口。

+0

我有点困惑,你想在你的代码中做什么。当用户在文本框中完成输入时,您将相匹配的Cand_No的名称放入变量中,然后使用按钮将数字逐个添加到稍后用于打印结果的查询字符串中?如果我们对最终结果和投入有更多了解,可能会有更高效的方法来帮助您。 – StuckAtWork

+0

抱歉,没有意识到我错过了一些有用的东西。我对这种事情并不十分熟练,但却被这项任务所困扰。 过程如下:用户在文本框中输入CAND_NO,然后用它查找cand_name并过滤打印的报告,以便只显示输入的报告。使用CAND_No的原因是由于另一个进程,并且CAND_Name查找仍然需要发生,因此用户可以确保输入正确的人员。CAND_Name会显示在用户输入CAND_NO的文本框旁边的文本框中 – KorgyBoy

+0

我的目标也是删除表单中的一些瑕疵。目前,所有32个文本框都是可见的,它只是让它看起来很乱,我也想改进表单背后的代码,只是通常使其更有效。我继承了一个数据库,这个数据库已经有10年的设计不佳了,他们不想离开它,所以我试图改善它。 – KorgyBoy

回答

0

难道你不只是有2个文本框,一个用于CAND_NO,另一个用于CAND_NAME,然后在这两个框旁边放置一个ADD CAND_NO按钮。

创建一个列表框,在按下添加按钮后列出每个CAND_NO/CAND_NAME,以便他们可以看到他们到目前为止添加的内容。然后循环遍历列表框,以建立绳索字符串,或者让绳索字符串或者是表单上的全局变量,然后在添加数字时构建它,或者将它们存储在存储值的隐藏文本框中,如果您不喜欢全球。

+0

我没想到,谢谢。这当然是对现有系统的改进。 – KorgyBoy