2012-05-22 2 views
0

В настоящее время я пытаюсь улучшить базу данных доступа 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 

По сути делает следующее текстовое поле видимым и перемещает кнопку печати вниз, чтобы освободить место для новых текстовых полей. Он также расширяет окно.

+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

Смежные вопросы