我目前正在嘗試改進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