|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
У меня есть два заполненных объекта типа RecordSet. Набор полей идентичен. Код: vbnet 1. 2. 3.
Как мне вывести на лист или в новый RecordSet те из записей rs2, которых нет в rs ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 08:55 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
как именно рекордсеты заполняются данными? гораздо проще и сильно быстрее сделать запрос к БД для выборки таких записей ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 09:08 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Shocker.Pro, А какая разница? Заполнены они на 100% без ошибок. Если возможно применить SQL к RecordSet так же легко, как к файлам реальной БД - записи в студию. А обращаться для этого непосредственно к БД я не хочу, так как получится слишком громоздкая конструкция, там и так сложные выборки. Не проще ли поработать с уже отобранными значениями в RecordSet? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 10:55 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Shizuku, Shocker.Pro, прав, я подобное использовал бы исключительно методом sql конструкции: Код: plsql 1.
И это "нагромождение" будет в разы эффективнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 11:00 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
ShizukuНе проще ли поработать с уже отобранными значениями в RecordSet?не проще. Применить SQL-запрос к рекордсету не получится. Если выборки сложные, существуют механизмы представлений, хранимых процедур, временных таблиц и т.п., в любом случае такие вещи делаются на сервере. Например, никто не мешает сделать две временных таблицы, слить туда результаты и потом сделать выборку, раз уж запросы такие сложные, что нельзя их сравнить как два подзапроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 11:05 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
ShizukuЕсли возможно применить SQL к RecordSet так же легко, как к файлам реальной БД - записи в студию. мечтатель ... kiv-1980И это "нагромождение" будет в разы эффективнее. если ТС не врёт, и там действительно, "суровые" выборки, то, всё таки, будет проще "сработать" всё на клиенте - сохранить данные из рекордсетов в файл, и потом, открыть новый рекордсет на этом файле, выбрав только различающиеся записи ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 11:09 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
qwerty112если ТС не врёт, и там действительно, "суровые" выборки, то, всё таки, будет проще "сработать" всё на клиентекакие бы ни были суровые выборки, никто не мешает работать с ними на сервере, а не на клиенте. Что если в исходных выборках будет по миллиону записей, а на выходе всего десять? зачем гнать это на клиента и там обрабатывать? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 11:11 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
qwerty112, Как-то сталкивался с подобным, практика показывает, если есть возможность использовать запрос, ею надо пользоваться, есть масса конструкций, которые позволят избежать потери при запросах. А правильные планы, выруливают любые выборки. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 11:12 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Shocker.Proqwerty112если ТС не врёт, и там действительно, "суровые" выборки, то, всё таки, будет проще "сработать" всё на клиентекакие бы ни были суровые выборки, никто не мешает работать с ними на сервере, а не на клиенте. Что если в исходных выборках будет по миллиону записей, а на выходе всего десять? зачем гнать это на клиента и там обрабатывать? на сколько я понял стартовый пост, - обе выборки УЖЕ на клиенте а "суровость" выборки - может быть разной, может там и возвращается в итоге 10-ть записей, но делает этот возврат ХП, которая выполняется полчаса ... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 11:16 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
И каждая выборка у меня в пределах своего Connection через Connection.Execute("My SQL String") Как я сделаю выборку сразу из двух Connection? Они на разных наборах данных построены, а не на одних и тех же таблицах, хотя структура и одинакова. Каждый из двух Connection имеет свой Data Source - не один и тот же. А если опустить все вложенные и прочие сложности выборок, то мне нужно: Код: sql 1.
Таблицы табл_источник_rs и табл_источник_rs2 - имеют одинаковые структуру, но хранятьсчя в разных папках, и имеют соотвественно разные данные (почему собственно и нужно их сравнить). Если бы это были две таблицы в пределах одного Data Source (в одной папке), то можно было бы попытаться такой запрос сделать. А так... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 11:57 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
причем тут коннекшены и датасоурсы???? БД одна или разные? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 12:02 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Если очень хочется все-таки сравнивать рекордсеты, то самый быстрый способ (но при этом оба рекордсета должны быть отсортированы по полю, по которому идет сравнение) идти двумя курсорами по двум рекордсетам последовательно. Если при очередной итерации в одном рекордсете сравниваемое поле становится больше другого, то значит в том другом есть запись, которая отсутствует в первом. Соответственно, вычленяем эту запись и двигаем курсор только на втором рекордсете. Ну и, разумеется, зеркально. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 12:06 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Shocker.Pro, Это dBase IV - dbf файлы. Да, если брать так, то одна папка - одна БД. Я беру из разных папок, значит из разных БД ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 12:09 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
ShizukuЭто dBase IV - dbf файлы. Да, если брать так, то одна папка - одна БД. Я беру из разных папок, значит из разных БДв аксессе можно объединять запросы к разным файлам с помощью IN (SELECT ... FROM .... IN ("c:\1.mdb")...). Что-то подобное есть и в дибейсе, но тут я не силен, возможно точно такая-же конструкция. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 12:17 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Shocker.ProЕсли очень хочется все-таки сравнивать рекордсеты, то самый быстрый способ... Код: vbnet 1. 2. 3. 4. 5. 6.
Так что-ли ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 12:18 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Нет, тут, честно говоря, написан сущий бред ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 12:19 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Можно объединить оба рекордсета в один xml-документ и сделать xpath-запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 12:26 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
как-то так. Но сюда еще надо дописать алгоритм, если, к примеру, rs2 уже закончился, а в rs еще есть записи, то все их надо тоже скопировать, так как их нет в rs2. Ну и наоборот. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 12:28 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Shocker.ProЕсли очень хочется все-таки сравнивать рекордсеты, то самый быстрый способ (но при этом оба рекордсета должны быть отсортированы по полю, по которому идет сравнение)ИМХО. Первое - сравнивать рекордсеты всё-таки нужно по всем полям. Второе - при наличии полностью дублирующихся строк в каждом рекордсете, возможно, должно совпадать также их количество. Я уж не говорю о том, что должны полностью совпадать их структуры - по именам, типам и размерам полей. Возможно, допустим различный порядок полей - но и тут я бы поостерёгся. Хотя для именно поставленной задачи порядком можно пренебречь. Однако всё это должен чётко указать ТС. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 12:38 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Shocker.Proкак-то так. Но сюда еще надо дописать алгоритм, если, к примеру, rs2 уже закончился, а в rs еще есть записи, то все их надо тоже скопировать, так как их нет в rs2. Ну и наоборот.Да уж, проще xml. 1. Загрузить первый рекордсет в первый документ 2. Загрузить второй рекордсет во второй документ 3. Скопировать строки из первого во второй, но в отдельную ноду (любую, можно создать новую в корне документа). 4. Выбрать с помощью xpath те записи, которые дублируются в этой ноде. 5. Удалить их. 6. Очистить/удалить отдельную ноду 7. Загрузить xml обратно в рекордсет ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 12:40 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
AkinaОднако всё это должен чётко указать ТС.А ТС и указал четко: набор полей одинаков, проверять наличие записей, а не отличие, то есть лишь по ключевым полям. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 12:43 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Shocker.ProShizukuЭто dBase IV - dbf файлы. Да, если брать так, то одна папка - одна БД. Я беру из разных папок, значит из разных БДв аксессе можно объединять запросы к разным файлам с помощью IN (SELECT ... FROM .... IN ("c:\1.mdb")...). Что-то подобное есть и в дибейсе, но тут я не силен, возможно точно такая-же конструкция. да, точно такая же конструкция и для dBase 7608932 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 12:44 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Akina, Структуры идентичны, а количество записей может несовпадать (почему и сравниваем). В принципе, меня не интересует изменилось там какое-то поле или нет. Меня интересуют новые строки, и есть ключ в первом столбце, по которому можно было бы отобрать такие строки запросом типа SELECT ... NOT IN SELECT... как я писал выше. Но для сравнения RecordSet это конечно не применимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 12:45 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Я когда-то пробовал вариант типа Код: sql 1. 2. 3. 4.
Попробую еще раз. Запросик, конечно, будет аховый - строчек на 10-15 )) - но лишь бы работал. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 12:49 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
ShizukuСтруктуры идентичны... и есть ключ в первом столбцетогда вполне подойдет мой алгоритм, так как будет сделан только один проход по каждому рекордсету. Мне кажется, он отработает быстрее, чем через xml, так как не будет ворочаться лишний объем данных ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 12:50 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
AntonariyShocker.Proкак-то так. Но сюда еще надо дописать алгоритм, если, к примеру, rs2 уже закончился, а в rs еще есть записи, то все их надо тоже скопировать, так как их нет в rs2. Ну и наоборот.Да уж, проще xml. ... проще csv :) 1 выгружаем оба рекордсета в csv-файл Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
2 запросом к csv, получаем "разницу" в записях в новый рекордсет Код: vbnet 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 12:59 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Shocker.ProShizukuСтруктуры идентичны... и есть ключ в первом столбцетогда вполне подойдет мой алгоритм, так как будет сделан только один проход по каждому рекордсету. Мне кажется, он отработает быстрее, чем через xml, так как не будет ворочаться лишний объем данныхЕсли эта операция происходит раз в несколько минут, то какая разница, пол-секунды она займет или две трети? Зато код более короткий и понятный. Но рекордсет это реально быстрая штука. Хранилище типа key-value на рекордсете уверенно уделывает обычную коллекцию. Проверял не тестами, а профайлом реального проекта. На специальных тестах всякое может быть, но код будет жить не в тестах. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 13:01 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
qwerty112проще csv :)красивое решение!!! но опять же, если данных много, то это будут ощутимые по времени дисковые операции ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 13:07 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
qwerty112Antonariyпропущено... Да уж, проще xml. ... проще csv :) 1 выгружаем оба рекордсета в csv-файлВыгрузка в xml делается в одну строчку. А в csv? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 13:12 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
qwerty1122 запросом к csv, получаем "разницу" в записях в новый рекордсет Код: vbnet 1. 2. 3. 4. 5. 6. 7.
А запрос-то не правильный. Нужны только ключевые поля, а тут вылезут и одинаковый ключи с отличающимися прочими данными. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 13:19 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
AntonariyА запрос-то не правильный. Нужны только ключевые поля, а тут вылезут и одинаковый ключи с отличающимися прочими данными. хорошо, тогда ещё проще Код: vbnet 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 13:29 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Shocker.Proтогда вполне подойдет мой алгоритм... См. прилагаемый скриншот ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 13:34 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Antonariyqwerty112пропущено... проще csv :) 1 выгружаем оба рекордсета в csv-файлВыгрузка в xml делается в одну строчку. А в csv? количество строк кода - это, конечно, "ещё тот показатель" :) но, в принципе, в 3-и можно "уложится" Код: vbnet 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 13:36 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Shizuku, в догонку http://shot.qip.ru/00cbDh-4o8tiVLki/ Не заходит в Case хотя проверка rs.RecordCount - rs2.RecordCount > 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 13:40 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
qwerty112Antonariyпропущено... Выгрузка в xml делается в одну строчку. А в csv? количество строк кода - это, конечно, "ещё тот показатель" :) но, в принципе, в 3-и можно "уложится"Годится :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 13:41 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
а) скиншоты можно прикладывать прямо к сообщению на форуме б) текст сообщения обошибке можно скопировать в буфер с помощью Ctrl+C ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 13:47 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
fix qwerty112 Код: vbnet 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 13:57 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
тьху ! :) fix qwerty112fix qwerty112 Код: vbnet 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 13:59 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Shocker.Proа) скиншоты можно прикладывать прямо к сообщению на форуме Прикреплял - ушел только текст Shocker.Proб) текст сообщения обошибке можно скопировать в буфер с помощью Ctrl+C Конкретно для этой ошибки не сработало ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 14:12 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Shocker.Pro, Ошибка была потому что надо было в RecordSet на первую запись перевестись. А так... Трудно сказать. Вроде работает. Еще же "хвосты" обрезаные ловить... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 14:19 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
ShizukuShocker.Proа) скиншоты можно прикладывать прямо к сообщению на форуме Прикреплял - ушел только текстИсчезает, если перед постом делал предварительный просмотр сообщения. Профиль - Настройки форума - Включи "Стандартный дизайн" и "Включить быстрый ответ и цитирование" - глюк пропадет. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 14:21 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
ShizukuОшибка была потому что надо было в RecordSet на первую запись перевестись.вообще, при открытии рекордсета он и так стоит на первой записи... если только ничего с ним не делали до этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 14:22 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Если настаиваете на реализации в вб, тогда как-то так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
На мой взгляд конструкция в сквл и меньше и эстетичней, но для крутых мега громоздких выборок, такое наверное попроще. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 16:26 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Ох, тут уже много ответов, увидел только обновив ) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 16:28 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
И прошу прощения пропустил, отходил от компа: Код: plsql 1. 2. 3. 4.
Не по теме: жаль что нельзя редактировать свой топик. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 16:32 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Shocker.ProShizukuОшибка была потому что надо было в RecordSet на первую запись перевестись.вообще, при открытии рекордсета он и так стоит на первой записи... если только ничего с ним не делали до этого. Выгружалось на лист, и еще сохранялось в переменные RecordCount. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 17:09 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
kiv-1980, У вас, так же как и у Shocker.Pro, находит 200 записей. Я сделал сравнение вручную, и насчитал 535 записей. Т.е. больше половины остались неучтенными... :( При этом разница в количестве записей между rs и rs2 составляет 126! Получается, что "хвост" тоже тут не виноват (200+126=326<535). ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 17:56 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
ShizukuУ вас, так же как и у Shocker.Pro, находит 200 записей. Я сделал сравнение вручную, и насчитал 535 записей.если два абсолютно разных алгоритма работают одинаково, а алгоритм ручного сравнения - по-другому, повод задуматься над вторым, а не над первыми Ну а вообще, скорее всего проблема в ТЗ - мы выполняем ТЗ так, как оно написано, а подразумевается, видимо, что-то еще. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 18:07 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
ShizukuВыгружалось на листтак если данные уже на листе, можно формулами их сравнить ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 18:24 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Shocker.Pro, Да понятно, что по глобальной сети не отладишь. Вроде все то сделано. Сижу, дзенствую.... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 18:37 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
ShizukuShocker.Proпропущено... вообще, при открытии рекордсета он и так стоит на первой записи... если только ничего с ним не делали до этого. Выгружалось на лист, и еще сохранялось в переменные RecordCount.Не обязательно даже сравнивать формулами - тогда эти листы и есть две готовые "таблицы", и нужные данные вы можете получить своим одним SQL-запросом... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 19:03 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Shocker.Pro, kiv-1980 Нашел ошибку. Оба примера я трассирую через Debug.Print - как у kiv-1980. Оказывается, лог в окне Immediate обрезает всё, что больше 200 строк, т.е. начала я просто не видел. Есть возможность убрать ограничение Debug.Print в 200 строк? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 19:09 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Внимание, барабанная дробь! Первый рабочий вариант: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Изменения: Переписал на поиск в rs2, поиск в rs мне не нужен. Во вложенном цикле не хватало возврата на первую запись для rs. Теперь можно пробовать переделывать другие варианты, и оптимизировать по скорости. Перебор по циклу заметно притормаживает... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 19:43 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Вместо внутреннего цикла: Код: vbnet 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 19:52 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
AntonariyВместо внутреннего цикла: Код: vbnet 1. 2.
Не пошло. В переменной ass насчитало всё подряд, а не найденные ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 20:10 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
ShizukuAntonariyВместо внутреннего цикла: Код: vbnet 1. 2.
Не пошло. В переменной ass насчитало всё подряд, а не найденныеПолностью код покажите. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 20:26 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Antonariy, Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 20:41 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Еще маленький вопрос не по теме. У меня rs.CursorType = adOpenStatic Для добавления найденных записей в это набор, я должен сменить тип на обновляемый. Вопрос. Мои добавления и обновления этого rs останутся только в Excel или попортят таблицы -источник в БД, из которой я выборку делал? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 20:46 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
ShizukuAntonariy, Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Что за кривая логика? Если Find_result = False, то что-то там найдено. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 20:47 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
ShizukuЕще маленький вопрос не по теме. У меня rs.CursorType = adOpenStatic Для добавления найденных записей в это набор, я должен сменить тип на обновляемый. Вопрос. Мои добавления и обновления этого rs останутся только в Excel или попортят таблицы -источник в БД, из которой я выборку делал?CursorType не отвечает за возможность редактирования записей, он отвечает за способ. Если со static курсором не делать Update, то изменения рекордсета в базе не зафиксируются. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 20:50 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
AntonariyCursorType не отвечает за возможность редактирования записей, он отвечает за способ. Если со static курсором не делать Update, то изменения рекордсета в базе не зафиксируются. В моем случае, ничего не поможет... При использовании метода Execute установки CursorType игнорируются: http://support.microsoft.com/kb/188857/en ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 21:19 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
AntonariyЧто за кривая логика? Если Find_result = False, то что-то там найдено. Не так... Тут стоит условие rs2("n_ls") = rs("n_ls") И мы получаем список тех полей, значения которых в обоих сэтах равны. А надо список тех полей, которых в rs вообще нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 21:34 |
|
VBA - Сравнить RecordSets
|
|||
---|---|---|---|
#18+
Внимание, рабочий вариант №2! Оптимизированный Antonariy и исправленный мной. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Antonariy решил сыграть на том, что Find либо становится на первую найденную запись, либо уходит в BOF/EOF. И это красиво, но мы не поняли друг друга с логикой... Теперь порядок. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 21:53 |
|
|
start [/forum/topic.php?all=1&fid=60&tid=2156975]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
83ms |
get tp. blocked users: |
2ms |
others: | 321ms |
total: | 495ms |
0 / 0 |