2016-12-20 2 views
1

Excel에서 결과를 표시하기 위해 Microsoft SQL Server 데이터베이스를 연결했습니다. 내가 정한 체계는 형식으로 만들어졌습니다. 사용자가 옵션 1을 선택하면 쿼리 결과가 표시됩니다 :Excel에서 SQL 문의 열 위치를 변경하십시오.

Select person, car, house from mytable1 

을 사용자가 옵션이 선택하면 쿼리 결과가 표시됩니다 :

Select job, person, land, truck from mytable2 

맨 처음 선택한 문이 저를 줄 것이다 열 순서대로 테이블을 만들고 싶습니다. 그러나 사용자가 양식을 다시 사용하면 어떤 select 문이 요청되었는지를 다시 사용합니다. 다시 쿼리가 발생하면 항목이 표시되는 열 순서가 다른 영역에 있습니다. 선별 증서가 같은 순서로 기재되어 있더라도 특정 순서로 열을 정렬 할 수있는 방법이 있습니까?

데이터 범위 속성에서 "열 정렬 유지"를 선택 취소했지만 빈 열을 남겨 둡니다. I.E. : Column1, Column2, Column3, etc.

+0

'QueryTable'을 스크랩하고 매번 다시 생성 할 수 없습니까? –

+0

* Microsoft SQL 데이터베이스 * - 어느 것을 언급하고 있습니까? Microsoft ** SQL Server ** - Microsoft의 RDBMS 시스템 - 쿼리 언어로 SQL을 사용하는 MS Access 명확하지 않음 - 관련 태그를 추가하십시오 - 명확히하기 위해'sql-server' 또는'ms-access'를 입력하십시오 –

+0

쿼리의 필드 순서에 따라 출력 테이블의 순서가 결정됩니다.원하는 순서대로 출력하도록 쿼리를 변경하는 것이 어떻습니까? – nbayly

답변

1

Excel에서 테이블/ListObject의 열을 이동할 수 있으므로 변경 사항을 유지하려고합니다. 쿼리를 실행한다면, :

select one, two, three 

을 그리고 당신이 때 쿼리를 다시 실행 "한"의 앞에 열 "세"움직이고, 심지어는 ListObject의 순서에 보관합니다 그 질문은 다르게 말했다.

이렇게하면 열을 추가해도 MS Query가 출력물을 렌더링 할 때 끝까지 이동합니다.

select four, one, two three 

엑셀 (그래서, 당신의 예에서

는 열 "인"두 개의 쿼리에서 공통했다 ("네"가 SQL에 먼저 표시에도 불구하고, Excel에서 끝으로 이동) MS Query)는 첫 번째 위치로 이동하고 그 후에 다른 모든 열을 넣습니다.

Excel에서 이전 열을 삭제하면 추적자가 남겨 둡니다. 표 뒤에 나오는 열이 일반적인 크기가 아니라는 것을 알 수 있습니다. 삭제 된 필드의 크기입니다. 나는 그들을 "유령"이라고 부른다.

이것은 심각한 해킹이지만이 문제를 해결하는 유일한 방법은 가짜 쿼리 (예 : select 1)를 실행하고 유령을 삭제하고 전체 열을 제거한 다음 두 번째 쿼리를 실행하는 것입니다. 여기에 내가 VBA에서 사용하는 일부 추한 코드는이 작업을 수행하는 것입니다

Dim lo As ListObject 
Set lo = Sheets("Sheet1").ListObjects("Table_ExternalData_1") 

Range(lo.HeaderRowRange.Offset(0, lo.HeaderRowRange.Columns.Count), _ 
    Range("XFD1")).EntireColumn.Delete 

예,이 유용한 데이터 테이블 후 위 또는 열에서 테이블 아래에있는 경우 의미 테이블 후 모든 열을 삭제, 사람들은 쓸어 버렸다.

아마도 더 좋은 방법이있을 것입니다. 다른 해결책이 있는지 궁금합니다.

+0

솔루션은 꽤 제한된 하하 여야합니다. 이것이 내 문제를 해결하는 데 도움이되었으므로 귀하의 답변에 크게 감사드립니다. 나는 "SELECT top 0 NULL;"하는 것을 끝내었다. 각 공식 선택 호출 전에 새로 고침하십시오. – Brad