2014-08-27 1 views
-1

실례합니다. 간혹 어쩌면 이미 수정되었을 수 있습니다. 어쨌든, 내가 대충 설명해 주시면 감사하겠습니다. 필드 최소값과 최대 값 사이의 값에 따라 해당 국가의 환율을 추출 할 최소값, 최대 값, 적용 금액 필드가있는 TariffeEstere 테이블이 있습니다. 최대와 나는 그것의 관세를 추출 할 수있는 하나의 레코드를 반환해야합니다 : 쿼리는 다음과 같습니다 ImpAss 두 번 유형의 변수입니다숫자 변수를 사용하여 ADO (vb6)에서 선택

stsql = "Select * from QPagEstContanti Where country = ' Spain ' 
     and min <= ImpAss and max >= ImpAss" 

.

내가 할 때 rstariffa.open ststql ..... 레코드 세트에 레코드가 포함되어 있습니다. ImpAss = 160 (즉, 정수가없는 정수)를 입력 한 다음 쿼리가 작동하지만 21,77 개의 ImpAss (이탈리아어 형식)가 포함되어 있으면 더 이상 작동하지 않아 구문 오류가 발생합니다. 실제로

Select * from QPagEstContanti Where country = 'Spain' and min < = 21,77 and max > = 21,77 

괴롭 히고를 쉼표 진수를 싶지만, 어떻게 모르겠어요

내가 찾을 사실 쿼리 문자열 (stsql)의 내용을 확인합니다. 난 당신이 stsql에서 발견 심지어

format (ImpAss, "####0.00"), 

하지만 값을 전달하려고 항상 21,77입니다. 어떻게 문제를 해결할 수 있습니까 ??

답변

1

SQL의 기본 언어 설정에서 '.'이 (가) 필요합니다. 10 진수 표기법 대신 ','소수점 표기법.

이 내용을 확인하려면 DBCC useroptions 명령을 실행하고 'language'값이 설정된 값을 확인하십시오. 언어가 영어 또는 다른 '.'로 설정된 경우 십진수 표기법 - SQL 문자열이 double 값으로 실패하는 이유를 설명합니다. 그게 문제, 그것은 당신의 stsql = 문 뒤에 다음 줄을 삽입하는 것입니다 해결하는 가장 간단한 방법이라면

:
    stsql를 = (",", stsql을 ".") 교체

또 다른를 ALTER LOGIN 명령을 사용하여 로그인에 대한 DEFAULT_LANGUAGE를 수정하는 방법입니다 (그러나 영구적으로 설정이 변경됩니다)

이 명령을 수정하는 또 다른 방법은 stsql 시작 부분에이 명령을 추가하는 것입니다. rs.Open 기간 동안 언어를 변경하십시오.
  "SET LANGUAGE Italian;"

+0

하지만 파일 접근 권한을 사용합니다. .mdb – Antony

+0

Antony, 제 사과입니다. MS Access라는 것을 모르기 때문에. 첫 번째 해결 방법을 시도해보십시오. ** stsql = REPLACE (stsql, ",", ".") **. 다른 옵션을 무시하십시오. – Timothy

+0

Timothy, 탱크 모두 용 – Antony