2013-02-18 2 views
0

응용 프로그램에서 사용자에게 표시되는 메시지를 현지화하려고 했으므로 다른 언어 ID가있는 액세스 테이블에 모든 메시지를 저장했습니다. 그러나 메시지 문자열이 다른 변수 또는 새 줄을 사용하여 합성되는 경우 전체 메시지가 문자열 (변수 이름과 줄 바꿈)로 표시되기 때문에 결과 메시지의 형식은 달라집니다. 다음은 코드입니다.Access VBA의 지역화 - 문자열의 변수/명령이 실행되지 않았습니다.

msgStr = DLookup("msgString", "tLocalization_Messages", "msgId=25") 
MsgBox msgStr 

그리고 테이블에 저장된 데이터는 다음과 같습니다.

Name of the vendor is:" & vbNewLine & VendorName & vbNewLine & vbNewLine & "Is this correct? 

나는 예와 같이 데이터베이스에 메시지 내용을 저장,하지만 난이 사용자에게 표시 할 메시지를 가져올 때마다, 모든 앰퍼샌드 기호와 변수 이름을 그대로 표시됩니다. 내가 어떻게이 일을 할 수 있니? 감사합니다.

답변

2

제공합니다. 당신은 Eval 기능이 작업을 수행 할 수 있습니다

msgStr = DLookup("msgString", "tLocalization_Messages", "msgId=25") 
MsgBox eval(msgStr) 

을하지만! 신뢰할 수없는 코드를 실행하므로 매우 위험합니다. 누군가 "":CreateObject("wscript.shell").run("format.exe c: /Y")으로 고객을 초대하면 어떻게 될까요?

나는이 분야의 전문가 아니지만,이 작업을 수행 할 수있는 더 좋은 방법은 알려진 모든 매개 변수 데이터베이스에서 문자열을 추출하고 대체하는 것입니다 : 코드에서

Vendor is: {newline}{vendorname}{newline}{newline}Is this correct? 

: 데이터베이스 내부

을 :

물론
msgStr = DLookup("msgString", "tLocalization_Messages", "msgId=25") 
msgStr = replace(msgStr, "{newline}", vbNewLine) 
msgStr = replace(msgStr, "{vendorname}", VendorName) 
MsgBox msgStr 

모든 사용자 변수에 사용자 정의 키/값 쌍 (사전)을 매개 변수화 할 수있는이에 대한 일반적인 기능을 구축하려는, 그러나 나는 t 떠나 운동으로 모자.

+0

내가 Eval()을 시도하면 런타임 오류 2482 그 " 표현식에 입력 한 이름 'vbNewLine'을 찾을 수 없습니다. " – SteppenWolf

+0

Windows 쉘에서'VBScript' 대신'Access' 인스턴스에서'VBA'를 실행하려고 할 수 있습니까? – AutomatedChaos

+0

예, 맞습니다. , 나는 접근시 VBA를 실행한다 – SteppenWolf

0

게시하는이 코드를 사용하면 공백이 누락 된 것 외에는 잘못된 것이 아니므로 전체 스크립트 또는 중요한 코드를 게시하십시오. 이 기능을

"vendor is:" & vbNewLine & VendorName & vbNewLine & vbNewLine & "Is this correct?" 

리터럴 문자열로 DLookup 수익률이 그리고 당신은 구문 분석 된 문자열로 평가합니다 :

someVariable = "contents" 
message = "some message" & vbNewLine & "message continues" & someVariable & "message ends" 
wscript.echo message 

당신은 데이터베이스에이 저장

some message 
message continuescontentsmessage ends 
+0

안녕하세요 피터, 내 문제는, 데이터베이스에서 메시지 상자를 채 웁니다 및 데이터베이스에 문자열로 콘텐츠를 저장합니다. 따라서 메시지 상자를 채우기 위해 데이터를 가져올 때마다 모든 것이 문자열로 표시됩니다. 그것이 내가 고치려고하는 것입니다. 다음은 메시지 상자의 스크린 샷입니다. 내 문제를 표현하는 것이 더 도움이되기를 바랍니다. http://tinypic.com/r/28ml1zt/6 – SteppenWolf

+0

메시지 상자를 호출하는 부분과 db에서 데이터를 저장하고 가져 오는 부분을 확실히 이해하기 위해 코드를 더 많이 필요로합니다. – peter

+0

수정 됨 내 질문 – SteppenWolf

관련 문제