2013-12-21 2 views
2

Access 프런트 엔드에 연결된 테이블과 함께 SQL 서버 백 엔드를 사용하는 프로덕션 데이터베이스가 있습니다. 성능상의 이유로 SQL 쿼리로 대부분의 보고서 쿼리를 작성하고 단순히 Access에서 매개 변수를 전달하려고합니다.SQL Server 쿼리에서 Access의 서식 번호 문제를 해결하려면

제가 실행하고있는 문제는 SQL보기에서 계산 된 필드의 형식을 지정하는 것이 허용되지 않는 것입니다.

CaseLot Drums GrossWeight %H2O 
    01  10  10,301  5.21 

드럼, GrossWeight 및 드럼

모든 소수점 데이터 유형하지만 각각의 다양한 크기를 가지고 :

예를 들어, 나는 테이블을 가지고있다. 내보기에서

나는 또한 위의 표에서 값하지만, 다음과 같은 계산 된 필드 포함 :

[GrossWeight] - 19.6*[Drums] AS NetWeight 
([GrossWeight] -19.6*[Drums])*(100-[%H2O])/100 AS DryWeight 

내가 액세스에 이르기까지 이러한 계산 된 필드를 당길 때, 나는 NetWeight 필드의 서식을 아무 문제가 없다, 그러나 그것은 DryWeight 필드에 대해 나를 허락하지 않을 것입니다. DryWeight 필드를 소수 둘째 자리에 표시하고 싶지 않으므로 실제로는 실망 스럽습니다.

또한 Access에서 Round() 함수를 적용 해 보았지만 둥근 스케일을 포함 할 때 "순환 참조"오류가 발생하는 것 같습니다. Round (DryWeight)는 소수점 이하 자릿수로 반올림하지만 Round (DryWeight, 2)는 오류를 발생시킵니다.

여기 무슨 일입니까?

+0

당신이 그것을 실행할 때 건조 중량에 대한 코드는 농산물을 보였다합니까? 또한 % H2O를 선택할 수 있습니까? 어쩌면 문제는 특수 문자로 시작하는 열 이름입니다. –

+0

주어진 예제에서 9578.5295를 산출합니다. 나는 9,578.53으로 표시하고 싶습니다. % H2O를 선택하는 데 문제가 없습니다. 이 복잡한 서식 문제를 제외하고는 잘 작동하는 복잡한 쿼리를 작성했습니다. – bmansk8s

+0

여기에 언급 된 형식 함수를 사용해 보셨습니까? http://www.techonthenet.com/access/functions/string/format.php –

답변

3

액세스가 계산 된 숫자를 문자열로 인식하는 것과 거의 같습니다.

입니다. 나는 [CaseLotView]라는 이름의 SQL 서버에서보기 ...

CREATE VIEW [dbo].[CaseLotView] 
AS 
SELECT 
    CaseLot, 
    Drums, 
    GrossWeight, 
    [%H2O], 
    GrossWeight - 19.6 * Drums AS NetWeight, 
    (GrossWeight - 19.6 * Drums) * (100 - [%H2O])/100 AS DryWeight 
FROM 
    dbo.CaseLotData 

이 SQL Server 2005 및 액세스 2010을 사용하여 문제를 다시 ... 내가 Access에서 연결된 테이블을 만들고 그것을 열 때 나는 참조 다음과 같이 [NetWeight] 값은 오른쪽 정렬

AccessView.png

통지하는 [DryWeight] 값이 왼쪽 정렬하면서 (문자열로 해석) (수치 해석).

한 가지 해결 방법은 [DryWeight]를 CDbl() 기능을 사용하여 숫자 형으로 변환 연결된 테이블을 기반으로 Access 쿼리 생성하는 것입니다 : [dblDryWeight] 숫자로 인식 할 수 쿼리를 기반으로

SELECT 
    dbo_CaseLotView.CaseLot, 
    dbo_CaseLotView.NetWeight, 
    CDbl([DryWeight]) AS dblDryWeight 
FROM dbo_CaseLotView; 

보고서 및 예상되는 서식 옵션을 제공하십시오.

(VBA에서 CDec() 기능이있는 동안은 Access 쿼리에서 작동하지 않습니다 - 심판 :. here)

+0

의 십진법 데이터 유형은 회피 할 수 있습니다. 이런 일이 일어나는 이유가 있습니까? Access가 문자열로 해석하는 이유는 무엇입니까? – bmansk8s

+0

@ bmansk8s 특정 이유를 제공 할 수 없지만, ** (1) ** 결과 데이터 형식이 Access에서 직접 지원하지 않는 값이거나 ** (2) * 일 경우 Access에서 숫자 결과를 문자열로 처리하는 경우가 있습니다. * 일부 유형의 저글링이있는 경우 (이 경우에는 SQL Server View가 실제로 표시되는 소수 자릿수에 따라 Decimal 대신 Float을 반환하는 것처럼 보입니다.) –

+0

좋습니다. 당신의 도움을 주셔서 감사합니다. – bmansk8s