|
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?fid=60&gotonew=1&tid=2156975]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
10ms |
get first new msg: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 157ms |
0 / 0 |