В настоящее время я пытаюсь улучшить базу данных доступа 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
(Заявление Если содержится в случае кнопка MouseDown.)
Происходит для каждого текстового поля, которые затем фильтрует отчет, который напечатан для офисного использования. Есть много проблем с этим, но основная проблема, которую я пытаюсь решить, заключается в том, что существует верхний предел количества записей, если мне нужно отфильтровать более 32, мне нужно будет удалить текст и начать все как угодно.
Есть ли способ объединить все это в один раздел кода, который при необходимости будет создавать текстовые поля?
EDIT.
Я нашел способ дать пользователю впечатление, что текстовые поля создаются после каждой записи, которая улучшила форму с точки зрения пользователя (больше не имеет 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