2016-06-02 6 views
2

두 테이블에서 데이터를 가져 와서 Excel 매크로를 통해 쿼리를 실행하려고합니다. 그리고 두 테이블을 비교해보고 싶습니다. 나는 100 개의 칼럼에 각각 두 개의 레코드를 설정했습니다. 레코드 세트를 비교하고 불일치 레코드를 반환해야합니다. 아래의 조건으로,VBA : 두 레코드 집합을 비교하고 레코드 집합 1에서 사용할 수 있고 레코드 집합 2에서는 사용할 수없는 레코드를 반환합니다.

  1. 열 이름은 동적이며
  2. 열 수는 우리가 레코드 개수가 더있을 수 있으며, 우리가 복사 안
  3. 전달 된 쿼리에 따라 다를 수 정적 정의 할 수 없습니다 모든 레코드를 엑셀 시트로 설정하십시오.

다음 코드를 통해 레코드 세트를 생성 중입니다. 사람이 열을 정의하지 않고이 레코드 집합을 비교에서 나를 도울 수 동의

Dim conn As ADODB.Connection 
Dim rs As ADODB.Recordset 
Dim rs1 As ADODB.Recordset 
Dim sConnString As String 
Dim sql As String 


sConnString = "Provider=ASEOLEDB;Data Source=<Servername> Initial Catalog=<DB Name>;User Id=<UserID> Password=<Pwd>" 

Set conn = New ADODB.Connection 
Set rs = New ADODB.Recordset 
Set rs1 = New ADODB.Recordset 
conn.Open sConnString 
If conn.State = adStateOpen Then 
MsgBox ("Success") 
End If 

Set rs = conn.Execute("SELECT * FROM Table1;") 
Set rs1 = conn.Execute("SELECT * FROM Table2;") 
rs.Close 
rs1.Close 
conn.Close 
+2

당신이 SQL 쿼리를 처리 할 수있는 작업 DB 서버가있는 것 같다. 그렇다면 왜 VBA를 사용하여 Excel에서 (DB 서버를 사용하여)보다 빠르고 효율적으로 작업하려고합니까? – Ralph

+0

좋은 질문 ..! 위 코드는 샘플 코드입니다. 내가 실제로하려고했던 것은 SQL 서버와 Sybase의 두 테이블에서 데이터를 꺼내서 둘 다 비교하는 것입니다. 어느 정도는 마이그레이션 된 데이터의 유효성 검사와 비슷합니다. 내 작업 시스템에서 서버를 추가하거나 수정할 수 없었으며 VBA를 사용하는 것이 더 간단하다고 생각할 수 있습니다. 당신이 나에게 해결책을 줄 수 있기를 바랍니다. – Ram

+0

[SQL 서버와 Sybase 서버 사이에 연결된 서버 연결] (https://support.microsoft.com/en-us/kb/280102)을 설정 한 다음 SQL을 사용하여 비교하십시오. – Ralph

답변

0

(즉., 전체 기록이 아닌 열을 기준으로 열을 비교할 필요). Excel에서이 작업을 수행 할 수는 있지만 그 이유는 무엇입니까? 액세스 '일치하지 않는 쿼리 찾기 마법사'를 실행하십시오. 작동 방식에 대한 간단한 데모는 아래 링크를 참조하십시오.

https://www.youtube.com/watch?v=lktivZpKutc