2012-11-27 2 views
2

나는 엑셀로 데이터를 편집하는 것이 더 쉽고/좋기 때문에 (현재는 Access를 사용하지 않았다), 그리고 변경 사항은 즉시 반영된다. 새로운 열이 추가 된 경우를 포함하여 곧바로 쿼리가 사용할 준비가되었습니다.가져 오기 대 엑셀 스프레드 시트로 연결하기

그러나이 데이터를 가져 오는 대신 연결에 성능상의 불이익이 있습니까? 내 검색어 중 일부는 느리고 1-2 분이 소요되며 가끔은 검색어를 저장하는 데 2-3 분이 걸릴 수도 있습니다. 데이터베이스를 열 때마다이 시트의 새 버전을 가져 오기 위해 Access를 설정하고 그만한 가치가 있습니까?

+0

이것은 실제로 좋은 다중 사용자 ** 설정이 아니므로 사용자가 구조 추가, 예 : 열 추가/제거를 원할 수는 없습니다.내가 액세스 할 수있는 배경/지식 수준을 잘 모르겠지만 액세스에 모든 테이블을 저장하고 사용자 인터페이스가 데이터와 상호 작용하는 프런트 엔드 화면을 개발하는 것이 유리할 것입니다. –

+0

시스템의 크기와 사용 방법은 프런트 엔드 스크린을 개발할 가치가 없습니다. 데이터베이스가 열릴 때마다 스프레드 시트를 가져 오도록 매크로를 설정하고 스프레드 시트를 잠그면 여분의 열을 추가 할 수있어 좋은 균형이 될 것이라고 생각합니다. – Wilskt

+0

하지만 데이터를 Access 테이블에 저장하는 대신 스프레드 시트에 연결하여 성능을 많이 줄입니까? – Wilskt

답변

2

링크 된 스프레드 시트의 성능에 대한 즉시 마음에 와서 4 개 요소가 있습니다

  1. 네트워크 성능 스프레드 시트 링크의
  2. 수 쿼리의
  3. 복잡성 (당신이 약 6 진술)
  4. 크기 (사람들이 규칙적으로 편집하는 경우 10,000 행 미만인 것으로 추측 됨)

절약 쿼리가 종종 느리다는 것을 감안할 때, # 1이 주 병목 현상이라고 생각합니다. 그렇습니다. 가져 오기 대신 링크를 사용하면 약간의 성능 저하가 있습니다. 그러나 유스 케이스 (링크가 너무 작지 않은 작은 데이터 세트)는이 페널티를 매우 작게 만듭니다. 반면 느린 네트워크에서는 Access 데이터베이스 자체의 변경 내용을 저장하는 것을 포함하여 모든 작업 속도가 느려집니다.

는, 예를 들어 쿼리에 사용할 적절한 액세스 테이블 유무 : 그것은 거의 자동적으로 데이터를 업데이트를 포함하여 제가 위에서했던 문제를 해결로

+0

모든 파일을 내 C 드라이브에 복사하고 엑셀 파일의 C : 버전을 사용하도록 링크를 재설정하면 지연이 여전히 있으므로 # 1이라고 생각하지 않습니다. 나는 # 2 또는 # 4가 문제라고 생각하지 않지만 # 3을 사용하면 여러 수준의 쿼리를 작성하는 경향이 있습니다. 즉, 연결된 테이블에 직접 액세스하는 몇 가지 기본 쿼리를 사용하고, 이러한 기본 쿼리에이 2 차 수준 쿼리를 참조하는 좀 더 복잡한 쿼리가 있습니다. 이것은 '모범 사례'가 아닌가? 쿼리를 인덱싱 할 수 없다면 감속이 발생할 수있는 위치일까요? – Wilskt

+1

방금 ​​말한 바에 따르면, # 3 + 귀하의 데이터를 색인 할 수 없다는 사실은 성능 저하의 명백한 이유입니다. –

0

ADODB 연결을 통해 Excel 파일에 연결하고 ADODB.recordset에서 열 수 있습니다. 그것은 매우 빠르다. 실제로 '실제'데이터베이스에 대한 연결만큼 빠르다.

이러한 솔루션을 구현할 가능성은 쿼리를 레코드 집합으로 '변환'하는 능력에 따라 달라집니다. VBA 및 ADODB 객체에 대해 잘 알고 있어야합니다. myou는 레코드 세트를 생성하고 화면 (또는 보고서)에 내용을 표시하는 코드를 작성해야하기 때문입니다.

+0

내 머리 위와 아래에도 - 아마도 2 년 내에. 8-) – Wilskt

+0

한 가지 질문 : Access에서 사용 가능한 임베디드 'Excel에서 가져 오기'도구를 사용해 본 적이 있습니까? 데이터를 올바르게 가져오고 색인을 생성하면 쿼리를 시도하십시오. 큰 차이가 있다면 Excel에서 가져 오기 자동화에 대해 생각할 수 있습니다. VBA 가져 오기 기능을 파일 다중 선택 상자와 결합 할 수 있기 때문에 그렇게 복잡하지는 않습니다. –

+0

transferspreadsheet 및 runsavedimportexport를 Access 매크로를 사용하여 자동화하려고 시도했지만 문제는 Access에서 일부 텍스트가 정수라고 판단하는 것입니다. 텍스트 값이 더 내려 가고 입력하는 필드가 있더라도 데이터가 이미 텍스트로 설정되어 있습니다. 짜증나지만, 내가 정말로하고 싶지 않은 스프레드 시트에 더미 행을 넣는 것 이외에 이것에 대해 할 수있는 일이 많이 있다고 생각하지 않는다. – Wilskt

1

내가 함께 결국 해결책을 놓을 게요 tblStoreDetails, tblPromotions

데이터를 유지 보수하는 데 여전히 스프레드 시트를 사용합니다. 양식을 작성하거나 Access에서 프런트 엔드를 사용하지 않고 이러한 작업을 업데이트하거나 볼 수있는 가장 융통성있는 방법이기 때문에, 다른 하나는 데이터베이스를 직접 사용합니다.

Access 내에서 이러한 테이블에 대한 링크. excelStoreDetails, excelPromotions

시작 쿼리 (사용 매크로 단추가 클릭 된 경우)에서 실행되는 Autoexec 매크로를 삭제 쿼리를 사용하여 Access 테이블을 비우고 Append 쿼리를 사용하여 연결된 Excel 테이블의 행을 테이블에 액세스하십시오.

테이블 삭제/다시 가져 오기로 인해 발생하는 문제는 대부분 할당되지 않은 개체 그룹에서 발생합니다. 또는 가져 오기 스펙을 사용하고 유형 불일치로 끝내려는 경우.

+1

그러나 더 큰 테이블 중 일부를 사용하여 발견 한 단점은 링크 된 스프레드 시트의 추가 쿼리가 매우 느리고 디스크의 데이터베이스 크기가 현재 엄청나다는 것입니다. 폐쇄시 자동 압축 및 복구를 고려할 수 있지만 더 많은 시간이 추가됩니다. 한숨은 접근이 말이라면 누군가가 지금까지 쐈을 것입니다. – Wilskt

관련 문제