2012-05-22 3 views
0

현재 전임자의 작업에서 상속 한 Access Database VBA를 개선하려고합니다. 나는 특정한 형태로 풀려났다.여러 텍스트 상자 및 조회

나는 현재 폼이 32 개의 개별 텍스트 상자를 포함하는 커다란 폼을 가지고 있으며 각각 뒤에 동일한 코드가 있지만 텍스트 상자에 대한 참조 만 변경되어 각 텍스트 상자에 대해 동일한 코드가 반복됩니다. 버튼을

If Not IsNull([Cand_Name1]) Then 
Rope = Rope & " Or Cand_No = " & [Cand_No1] 
End If 

을 누르면 한 번 그런

Private Sub Cand_No2_AfterUpdate() 
Cand_Name2 = DLookup("[Name]", "[qryExamAbsences]", "[Cand_No] = Cand_No2") 
End Sub 

은 (If 문은 버튼 mouseDown 이벤트에 포함되어 있습니다.)

다음 인 보고서를 필터링 각 텍스트 상자 발생 사무실 용으로 인쇄. 이 문제는 많이 있지만 문제를 해결하기 위해 노력하고있는 주요 항목은 항목 수가 많다는 것입니다. 32 개를 필터링해야 텍스트를 삭제하고 다시 시작해야합니다.

이 모든 것을 하나의 코드 섹션에 결합하여 필요한 경우 텍스트 상자를 만드는 방법이 있습니까?

EDIT.

사용자 관점에서 양식이 개선 된 각 입력 후에 텍스트 상자가 작성된다는 인상을 사용자에게 줄 수있는 방법을 발견했습니다 (더 이상 텍스트 상자가 없거나 인쇄 단추로 스크롤하지 않아도 됨). .) 그러나 이것은 여전히 ​​각 상자마다 여분의 코드를 반복해야하기 때문에 지저분한 코드 문제를 해결하지 못했고 최대 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

두 개의 텍스트 상자가있을뿐만 아니라 CAND_NO와 CAND_NAME에 각각 다른 텍스트 상자가있을뿐만 아니라 그 두 상자 옆에 추가 CAND_NO 버튼이 있습니다.

추가 버튼을 누른 후 모든 CAND_NO/CAND_NAME을 나열하는 목록 상자를 작성하여 지금까지 추가 한 내용을 볼 수 있습니다. 그런 다음 목록 상자를 반복하여 밧줄 문자열을 만들거나 밧줄 문자열을 양식에있는 전역 변수로 가져 와서 숫자를 추가하거나 마음에 들지 않으면 값을 저장하는 숨겨진 텍스트 상자에 저장합니다 글로벌.

+0

나는 그것을 생각하지 않았다, 고맙다. 확실히 현재 시스템의 개선입니다. – KorgyBoy

관련 문제