2016-06-02 8 views
2

Я пытаюсь запустить запрос с помощью макроса excel, получая данные из двух таблиц. И я бы хотел сравнить таблицу для разницы. У меня есть два набора записей, каждый из которых содержит около 100 столбцов. Мне нужно сравнить набор записей и вернуть записи несоответствия. При указанном ниже условиях,VBA: Сравните два набора записей и записи возврата, которые доступны в наборе записей 1 и недоступны в наборе записей 2

  1. имена столбцов являются динамическими и не могут быть определены статическими
  2. Число столбцов может отличаться в зависимости от запроса мы передавали
  3. Отсчет Записи может быть больше, и мы не должны копировать полный набор записей на любой из листов excel

Через приведенный ниже код я создаю набор записей. Может кто-нибудь помочь мне в сравнении это наборы записей без определения столбцов (т.е.., Мне нужно, чтобы сравнить полную запись и не по столбцам)

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. Итак, почему вы пытаетесь сделать в Excel (используя VBA) то, что должен делать сервер БД (быстрее и эффективнее)? – Ralph

+0

Хороший вопрос ..! Вышеприведенный пример. То, что я на самом деле пытался сделать, это вытащить данные из двух таблиц: один из Sql-сервера и другой из Sybase и пытается сравнить их. Более или менее это похоже на проверку данных. Я не мог добавлять или изменять серверы в своих рабочих системах, и более простой способ, о котором я могу думать, - использовать VBA. Надеюсь, ты сможешь получить мне решение. – Ram

+0

Установите соединение [соединение между сервером SQL Server и Sybase Server] (https://support.microsoft.com/en-us/kb/280102), а затем выполните сравнение с помощью SQL. – Ralph

ответ

0

Я согласен. Я уверен, что вы можете сделать это в Excel, но зачем беспокоиться? Просто запустите Access 'find unmatched query wizard'. См. Приведенную ниже ссылку для краткой демонстрации о том, как она работает.

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