2
두 테이블에서 데이터를 가져 와서 Excel 매크로를 통해 쿼리를 실행하려고합니다. 그리고 두 테이블을 비교해보고 싶습니다. 나는 100 개의 칼럼에 각각 두 개의 레코드를 설정했습니다. 레코드 세트를 비교하고 불일치 레코드를 반환해야합니다. 아래의 조건으로,VBA : 두 레코드 집합을 비교하고 레코드 집합 1에서 사용할 수 있고 레코드 집합 2에서는 사용할 수없는 레코드를 반환합니다.
- 열 이름은 동적이며
- 열 수는 우리가 레코드 개수가 더있을 수 있으며, 우리가 복사 안
- 전달 된 쿼리에 따라 다를 수 정적 정의 할 수 없습니다 모든 레코드를 엑셀 시트로 설정하십시오.
다음 코드를 통해 레코드 세트를 생성 중입니다. 사람이 열을 정의하지 않고이 레코드 집합을 비교에서 나를 도울 수 동의
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
당신이 SQL 쿼리를 처리 할 수있는 작업 DB 서버가있는 것 같다. 그렇다면 왜 VBA를 사용하여 Excel에서 (DB 서버를 사용하여)보다 빠르고 효율적으로 작업하려고합니까? – Ralph
좋은 질문 ..! 위 코드는 샘플 코드입니다. 내가 실제로하려고했던 것은 SQL 서버와 Sybase의 두 테이블에서 데이터를 꺼내서 둘 다 비교하는 것입니다. 어느 정도는 마이그레이션 된 데이터의 유효성 검사와 비슷합니다. 내 작업 시스템에서 서버를 추가하거나 수정할 수 없었으며 VBA를 사용하는 것이 더 간단하다고 생각할 수 있습니다. 당신이 나에게 해결책을 줄 수 있기를 바랍니다. – Ram
[SQL 서버와 Sybase 서버 사이에 연결된 서버 연결] (https://support.microsoft.com/en-us/kb/280102)을 설정 한 다음 SQL을 사용하여 비교하십시오. – Ralph