문제

두 위치에서 사용되는 클라이언트용 앱을 관리하고 있습니다.영국에 하나, 폴란드에 하나.

데이터베이스는 영국에 저장되어 있으며 통화에 £1000.00 형식을 사용하지만, 정보는 형식이 1000,00인 폴란드에서 로컬로 수집됩니다.

내 질문은 VB6에 로컬 형식의 통화 문자열을 가져와 다른 형식으로 변환하는 함수가 있습니까? 아니면 문자열을 구문 분석하고 , 또는 .?

그런데 CCur를 살펴봤지만 그것이 내가 원하는 대로 작동할지는 확실하지 않습니다.

도움이 되었습니까?

해결책

데이터는 실제로 문자열로 저장되지 않습니다. "£1000.00";숫자 형식으로 저장됩니다.

사이드바: 일반적으로 데이터베이스는 다음 중 하나를 사용하여 금액을 저장하도록 설정됩니다. 소수 데이터 유형(또는 일부 DB에서는) 또는 부동 소수점 숫자(또는 더블).

차이점은 다음과 같이 저장될 때입니다. 소수 0.01과 같은 특정 숫자는 정확하게 표시되는 반면 더블 해당 숫자는 대략적으로만 저장할 수 있으므로 반올림 오류가 발생합니다.

데이터베이스 나타납니다 번호를 다음과 같이 저장합니다. "£1000.00" 뭔가 표시할 형식을 지정하고 있기 때문입니다.VB6에는 다음과 같은 기능이 있습니다. FormatCurrency 1000과 같은 숫자를 사용하여 다음과 같은 문자열을 반환합니다. "£1000.00".

당신은 FormatCurrency 함수는 사용할 통화 유형을 지정하는 인수를 취하지 않습니다.이는 VB의 다른 모든 로캘별 기능과 함께 Windows 제어판을 통해 시스템의 현재 로캘에서 통화를 파악하기 때문입니다.

즉, 내 시스템에서는

Debug.Print FormatCurrency(1000)

인쇄할 것이다 $1,000.00, 그러나 영국 로케일로 설정된 Windows 컴퓨터에서 동일한 프로그램을 실행하면 아마도 인쇄될 것입니다. £1,000.00, 물론 완전히 다른 것입니다.

마찬가지로 어딘가에 코드가 있는데, 폴란드에서는 사용자 문자열을 구문 분석하고 숫자로 변환하는 코드가 어디에 있는지 알 수 없습니다.그리고 해당 코드가 Visual Basic 인 경우 다시 제어판에 의존하여 ""여부를 결정합니다. 또는 ","는 수천 명의 분리기이며 ","또는 "여부"입니다. 소수점입니다.

함수 CDbl 인수를 숫자로 변환합니다.예를 들어 미국에 있는 내 시스템에서는

Debug.Print CDbl("1.200")

는 숫자 1.2를 생성합니다. 제어판이 유럽 형식으로 설정된 시스템에서는 숫자 1,200이 생성됩니다.

문제는 지역 제어판이 사용하도록 설정된 컴퓨터에 앉아있는 사람이있을 수 있습니다. 소수점 분리기로서, 그들은 입력하고있다 ","소수점 분리기로.

다른 팁

어떤 데이터베이스를 사용하고 있나요?그리고 금액은 어떤 데이터 유형에 저장되나요?

항상 한 형식에서 다른 형식으로 변환하는 한 구문 분석을 수행 할 필요가 없으며 "그냥 대체하십시오". ","또는 다른 방법으로.문자열에 "£" 기호가 저장되어 있는 경우 이를 제거해야 할 수도 있습니다.

문화 개체 등을 다루는 정답이 있을 수 있지만 가장 쉬운 방법은 폴란드어 입력에서 입력을 가져와 ,를 .로 바꾼 다음 데이터베이스에 "money" 또는 "decimal" 유형으로 저장하는 것입니다. ".사용자별로 구성 가능)이 항상 폴란드어나 영어로 숫자를 입력한다는 것을 알고 있다면 모든 입력 숫자를 실행하여 문자열을 적절한 "십진수" 유형의 변수로 변환하는 기능을 가질 수 있습니다.또한 표시 목적으로 다른 유사한 기능을 통해 실행하여 사용자가 항상 편안한 숫자 형식을 볼 수 있도록 할 수 있습니다.여기서 핵심은 사용자로부터 정보를 받자마자 이를 십진수로 전환하고 사용자에게 보내기 전 마지막 단계에서 다시 문자열로 전환하는 것입니다.

@KiwiBastard 네, 그럴 것 같아요.금액을 "(n)varchar" 필드에 저장하고 있습니까, 아니면 통화/소수 유형 필드를 사용하고 있습니까?후자의 경우 클라이언트가 통화 기호와 구분 기호를 추가하므로 데이터베이스에서 아무것도 바꿀 필요가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top