2013-03-07 3 views
2

MS Access 2010에 가져 오는 JDE/AS400의 ODBC 연결 테이블이 있습니다.이 테이블에는 한 번 이중 데이터 형식으로 변환해야하는 소수 데이터 형식의 네 개의 필드가 있습니다. 그들을 임시 테이블에 썼다. 한 쿼리에서 네 개의 alter table/column 문을 사용할 수있는 방법이 있습니까?MS Access 여러 개의 열을 변경하십시오.

궁금한 점이 있다면이 필드에 저장된 데이터는 가격과 비용이지만 ODBC 테이블에는 십진수 값이 15이고 십진수는 0으로 저장되므로 두 개를 10,000으로 나누고 한 개를 100,000으로 나누어야합니다 예를 들어, 가격 필드의 3558767은 실제로 355.8767 또는 355.88의 가격입니다.) 같은 데이터를 Access로 가져와 10000으로 나눌 때 355.00이됩니다. 올바른 센트 값이 필요합니다. 필자가 과거에 이것을 할 수 있었던 유일한 방법은 나누기를 수행하기 전에 데이터 형식을 두 배로 변경하기 위해 alter table/alter column 쿼리를 작성하는 것입니다.

나는이 필드가 4 개이기 때문에 한 번에 4 개를 모두 변경하거나 수정하고 싶습니다. 어떤 아이디어?

도움을 주시면 감사하겠습니다.

+0

귀하의 질문은 매우 혼란 스럽습니다. Access의 데이터 형식은 무엇입니까? 너 정확히 뭘 하려구? 또한 가격을 저장하는 경우 부동 소수점이므로 'Double'을 사용하지 않는 것이 좋습니다. – LittleBobbyTables

+0

죄송합니다 바비, 혼란 스럽습니다. JD Edwards 파일을 항상 작동하는 것 같습니다. Access의 데이터 유형은 연결된 테이블 (10 진수 데이터 유형, 길이 15 자리)에 저장된 그대로 전달됩니다. 어떤 데이터 형식을 제안합니까? 나는 통화를 시도했지만, AS400/JDE의 연결된 테이블이 소수점 이하 자릿수로 그 값을 저장하고 있기 때문에 먼저이 양을 나누어야하므로 통화로 변환 할 수는 없습니다. 그것이 속한 십진법을 얻기 위해서. – user2145711

+0

나는 앞서 가서 네 개의 alter table 쿼리를 작성했지만, 누군가가 VBA 외부의 방법으로 MS Access의 단일 쿼리에서 동일한 테이블의 둘 이상의 열을 변경하는 간단한 쿼리를 작성한다고 말할 수 있다면, d 감사합니다. 고마워. 팀 – user2145711

답변

2

여러 개의 열을 동시에 변경하려면 Access (또는 ANSI 호환 SQL, 알고있는 한) 방법이 없습니다. 당신에게 어느 것 :

  • 실행 네 개의 개별 ALTER 스크립트를, 또는 ...
  • 새로운 임시 테이블을 만들고, 임시 테이블에 모든 데이터를 이동, 기본 테이블을 삭제 한 후 임시
  • 의 이름을 변경

네 개의 스크립트를 어느 쪽이든 실행하고 있기 때문에이 경우 실제로는 씻어 버릴 수 있습니다.

+0

감사합니다. 바비.그게 내가 다른 곳에서 수색 할 때 발견 한 것이지만 뭔가를 놓치고 있는지 알 수있는 게시물을 생각하면 상처를주지 않을 것입니다. – user2145711

1

앞에서 설명한 것처럼 Access SQL에서는 단일 SQL 문으로 둘 이상의 열을 변경할 수 없습니다. 그러나 귀하의 질문에 배경 정보가 혼란 스럽습니다.

SELECT decimal_field/10^4 AS my_quotient 
FROM tblFoo; 

decimal_field 정밀도 = 15과 규모 진수 유형 = 0

내가 decimal_field3558767를 저장하고 쿼리를 실행, 액세스 2007 년 나에게 my_quotient355.8767을 제공합니다. 그리고 그 결과는 당신이 원하지만 이해하지 못한 결과입니다.

만약 당신이 그것을 밖으로 정렬 할 수 아마도 당신은 어떤 열을 변경하지 않아도됩니다.

+0

감사합니다. 한스. 나는 연결된 테이블에서 데이터를 가져 오는 첫 번째 쿼리의 decimal_field 부분에서 나누기를 시도했지만 반올림을 계속했습니다. 왜 그런지 모르겠습니다. 나는 또 다른 기회를주고, 내가 무슨 일이 일어나는지 알아낼 수 있는지 알아볼 것이다. – user2145711

+0

좋아, 내가 이미 염두에두고 있던 길을 이미 지나친 것처럼 들린다. 나는 그것이 왜 소수점 이하를 버리는 지 이해하지 못한다. 아마도 그 특정 ODBC 드라이버의 이상이다. – HansUp

관련 문제