|
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 |
|
|
start [/forum/topic.php?fid=60&msg=38262037&tid=2156975]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
91ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 211ms |
0 / 0 |