2016-07-12 7 views
0

바라건대, 나는이 질문을 가능한 정확하고 이해하기 쉽도록 만들 것입니다.하지만 제가하지 못하면 말해 줄 수 있습니다! 미리 감사드립니다.글로벌 변수 조회

첫째, 약간의 배경과 내가 찾은 것, 그리고 내가 일을 할 수없는 작은 변화에 대한 것입니다. 전체 코드를 사용하는 대신, 먼저 올바르게 시작한 것을 이해할 수 있도록 충분한 정보를 제공하는 스 니펫을 사용했습니다.

사용자가 사용하고자하는 문구에 따라 변경해야하는 정보를 저장하는 추가 필드가있는 메뉴 시스템 (터보 차지 버전의 원래 MS 버전)을 사용하므로 필드 제품 이름을 지정할 수 있습니다. 반면에 사용자는 물품 또는 물건 또는 물건 또는 원하는 것을 무엇이든 부를 수 있습니다! 그래서 나는 사용자 환경 설정을 별도의 테이블에 저장한다 (우리는 tblWORDS라고 부를 것이다). ItemText, Command & 인수 일반적으로이 메뉴는 ItemText의 텍스트를 표시합니다.이 텍스트는 내가 사용하는 ItemText의 텍스트를 표시합니다. 그러나 VBA 코드는 레이블을 원하는대로 서식을 지정할 수 없기 때문에 SWITCHBOARD 테이블에 CAPTION이라는 새로운 필드를 추가했습니다. 따라서 VBA 코드는 레이블에 대한 ItemText를 레코드 세트에서 읽으면 | (파이프), 내 추가 된 VBA 코드는 다음 캡션 필드에 문자열을 찾습니다. 바라기를, 충분한 배경 ​​정보 !! ?? .

이것은 완벽하게 작동 (포함 EVERYTHING)
""&을 DLookup ("fldProduct", "tblWORDS") &을 ""! :

는 는 는

[배전반] [캡션]는 원래 다음을 포함 하지만 ...

WORD가 필요할 때마다 조회를 수행하는 대신 GLOBAL VARIABLES를 작성하기로 결정 했으므로 glProduct의 전역 변수가 있으므로 tblWORDS 테이블의 단어를 올바르게 얻고 잘 보존합니다. . 그러면 언제 어디서나 세션에서 사용할 수 있습니다.

그래서, 내 코드가 같다
""& glProduct &을 ""(다시, 모든 것을 포함) : 내가 위에서하는 대신에, 때마다 조회를 수행하는 글로벌 변수를 읽을 수있는 문자열을 대체 한

다음 :

While (Not (rs.EOF)) 
    Me("Option" & rs![ItemNumber]).Visible = True 
'MY PIPE DEVIATION 
    If Left(Trim(rs![ItemText] & ""), 1) = "|" Then 
'THIS LINE WORKS JUST FINE 
'DISPLAYS CORRECTLY (rs!Caption = "" & dlookup("fldProduct","tblWORDS") & "") 
     szTemp = DLookup(rs![Caption], "tblWORDS") 
'AS DOES THIS (but, I'm explicitly naming the variable in code! Only entered this line to show that the variable is working!) 
     szTemp = "" & glbProduct & "" 
'THIS DOES TOO (Just a BYREF function for testing) 
     szTemp = fnGetValue(DLookup(rs![Caption], "tblWORDS")) 
     Me("Option" & rs![ItemNumber]).Caption = szTemp 
    Else 
     If rs![ItemNumber] = 0 Then 
      Me("OptionLabel" & rs![ItemNumber]).Caption = VBA.Trim(rs![ItemText] & " (" & rs![SwitchboardID] & ")") 
      Me("OptionLabel" & rs![ItemNumber]).Visible = True 
      Me("Option" & rs![ItemNumber]).Visible = False 
     Else 
      Me("Option" & rs![ItemNumber]).Caption = VBA.Trim(rs![ItemText] & "") 
     End If 
    End If 
    rs.MoveNext 
Wend 

개정 :

While (Not (rs.EOF)) 
    Me("Option" & rs![ItemNumber]).Visible = True 
'MY PIPE DEVIATION 
    If Left(Trim(rs![ItemText] & ""), 1) = "|" Then 
'THIS WORKS (but, I'm explicitly naming the variable in code! Only entered this line to show that the variable is working!) 
     szTemp = "" & glbProduct & "" 
'THIS DOES NOT (FYI: rs!Caption = "" & glbProduct & "") 
     szTemp = rs!Caption 
'NOR DOES THIS (Just a BYREF function for testing) 
     szTemp = fnGetValue(rs!Caption) 
     Me("Option" & rs![ItemNumber]).Caption = szTemp 
    Else 
     If rs![ItemNumber] = 0 Then 
      Me("OptionLabel" & rs![ItemNumber]).Caption = VBA.Trim(rs![ItemText] & " (" & rs![SwitchboardID] & ")") 
      Me("OptionLabel" & rs![ItemNumber]).Visible = True 
      Me("Option" & rs![ItemNumber]).Visible = False 
     Else 
      Me("Option" & rs![ItemNumber]).Caption = VBA.Trim(rs![ItemText] & "") 
     End If 
    End If 
    rs.MoveNext 
Wend 

무엇 표시되는 IS는 리비전 이전의 제품이 아닌 리터럴 문자열 (""_glProduct "")입니다.

+0

OK, 그래서 코드의 읽을 수있는 레이아웃을 만드는 법을 알지 못합니다. 탭으로 간격을 띄우고 그것을 게시 할 때까지 모든 것이 멋져 보였습니다 !! 사이트가 탭, 간격 등을 존중하지 못하는 이유는 무엇입니까? 나는 그것이 단순한 변화 일 것이라는 것을 깨닫는다. 그러나 그것이 고통스럽게하는 이유? – TimesMoney

+0

안녕하세요, 죄송합니다. 그 밖의 모든 방법이 지침을 읽지 못하면 모든 편집 작업을 진행할 것이며 jonhopkins가이 작업을 멋지게 만들었습니다. 원래 붙여 넣었을 때의 모습이었습니다 !! – TimesMoney

+0

문제 없습니다. 나는 처음에도 그것에 문제가있었습니다. 트릭은 코드의 모든 줄 앞에 4 칸 있으며 코드와 일반 텍스트 사이에 빈 줄이 있습니다. 안드레 (Andre)가 말했듯이, 공백을 얻는 빠른 방법은 코드를 선택하고 Ctrl + K를 누르거나 입력 상자의 상단에있는 {{}'모양의 버튼을 클릭하는 것입니다. 별도의 단락을 원한다면 단락 사이의 빈 줄은 줄 끝의 두 칸보다 약간 더 멋지게됩니다. – jonhopkins

답변

0

그래서 첫 번째 문제는 당신이하고있는 일과 어디에서 일어나고 있는지 모두를 혼란스럽게하는 것입니다 - rs가 어디에서 왔습니까?

두 번째 문제는 폼이나 컨트롤 속성에서 전역 변수에 액세스 할 수 없다는 것입니다.

코드를 통해 캡션을 설정해야합니다. - 그냥 "캡션"예를 들어

먼저
다른 뭔가 캡션 속성 바꾸기 : 나는 각 요소가 무엇인지 당신이 사용하고 무엇에 관해서는 몇 가지 큰 추측을, 그래서 여기에서 시작하자거야 .

루프 후이 코드를 추가 둘째

- 내가 그 일을 생각 - 하드 코드이고 위치를 표시하지 않기 때문에 정말 알고 실행시

[SwitchBoard].Caption = "" & glProduct & "" 
+0

OK, 피드백에 감사 드리며 필요한 모든 코드가 포함 된 신선한 db를 만들지 만 며칠이 걸리 겠지만이 질문을 닫고 새 질문을 시작하는 것이 가장 좋습니다. 일반적인 합의가 내가 문제라고 지적한 것처럼, 나는 다시 시도 할 필요가있다. 나는 그것이 뒤죽박죽이고 혼란 스럽다는 것을 타고왔다. 코드가 실행되는 방법이나 위치가 표시되지 않습니다. 나는 작은 accdb를 만들고 그것을 어딘가에 게시 할 것이다 - 내가 파일을 SO에 업로드 할 수 있습니까? 노력해 주셔서 다시 한번 감사드립니다. 많은 감사를드립니다. – TimesMoney