|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Добрый день, уважаемые форумчане) Подскажите как вставить все содержимое record в документ excel Код: vbnet 1. 2. 3. 4. 5. 6. 7.
А вот дальше проблема возникает, как вставить записи из рекорда по порядку как они в нем записаны? и как вставить записи из рекорда в нужном мне порядке? Например, в первом случае нужно вставить поля p1,p2,p4,p6,p7,p10 в A1,B1,C1,D1,E1 соответственно, а во втором случае эти же поля нужно вставить в A1,С1,D1,F1,G1 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2015, 18:17 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&Дейл, Есть у объекта Range метод CopyFromRecordset. Им можно вставить данные в том порядке, в котором они получены. А для вставки в несмежные диапазоны остается только перебор записей и вставка в ячейки последовательно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2015, 18:50 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Перебор я так понимаю делать через do while? а как указывать нужные мне ячейки в данном случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2015, 19:01 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&Дейл, Тут я не очень знаю какие у Вас данные. В общем случае делаете цикл по строкам Recordset. Что-то типа: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
где lRecCnt - количество строк в Recordset. lc - это как раз Ваши поля. lcol - используется для назначения соответствия номера поля столбцу ячейки. Я привел топорно с Select Case, но если полей много - лучше запихать соответствия в массивы или словари. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2015, 19:30 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Сделал как сказали, выдает ошибку "Sub or Function not defined" и выделяет слово "Cells" Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Когда делаю вот так, выходит ошибка "object required" и выделяет всю строку начиная с ActiveSheets Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2015, 06:46 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Подключил библиотеку в tools заработало, правда только одну строчку вставляет, а в рекорде их 8 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2015, 07:25 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&ДейлПодключил библиотеку в tools заработало, правда только одну строчку вставляет, а в рекорде их 8 замените Код: vbnet 1.
на Код: vbnet 1.
или же, если оставите первый вариант, сделайте перед циклом Код: vbnet 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2015, 08:06 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
c While а после Loop что писать в конце цикла или while без него может работать? c rs все работает, спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2015, 08:18 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&Дейл, я имел ввиду Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2015, 08:21 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&Дейлвыдает ошибку "Sub or Function not defined" и выделяет слово "Cells"Библиотеку можно было не подключать, а делать так: Код: vbnet 1.
Чип&Дейлправда только одну строчку вставляет lRecCnt - я обычно получал количество записей отдельной функцией, что-то вроде: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
objRecSet - это должен быть новый экземпляр Recordset, а не тот, что уже используется. Правда я использовал ADODB.Recordset, который несколько отличается от DAO. Но все равно вроде как уже сами разобрались. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2015, 11:12 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
НУ еще не совсем раозобрался, остался вопрос как начать вставку с именнованной ячейки? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2015, 11:49 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
это я уже понял, проблема в том что вставку из рекорд надо начать с ячейки с именем "start" а она может быть как на 1 строке так и на 25. Если ручками написать например Range("start")=5 он вставит "5" где бы не была ячейка ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2015, 12:23 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&Дейл, значит плохо поняли :) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2015, 12:24 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Сделал немного по другому, работает Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2015, 12:29 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&Дейл, Это называется не совсем вставкой, начиная с именованной ячейки. Это вставка, начиная со значения, записанного в именованной ячейке :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2015, 12:49 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Буду знать, еще такая проблемка вышла Код: vbnet 1. 2. 3.
Добавил строчку чтобы после заполнения добавилась новая строчка, но почему то первые 3 записи вставляются как надо а остальные лесенкой) С чем это может быть связано и как исправить? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2015, 14:17 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&Дейл, видимо где-то не там меняете значение lcol. Приведите весь код по заполнению. По этому куску не понять где ошибка. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2015, 16:29 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
The_Prist, плюс Вы вставляете строку после каждой итерации цикла по столбцам. Видимо, правильнее вынести за цикл по столбцам и сделать её в цикле по строкам. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2015, 16:30 |
|
Вставка Recordset
|
|||
---|---|---|---|
#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. 24.
Вот последняя версия кода вставки.8878 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 06:03 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Проблема немного изменилась) первые 3 записи из рекорда переносятся нормально, потом просто пустые строки и потом последняя снова нормально вставляется ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 06:21 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Может ли быть проблема из за документа? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 08:57 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&ДейлДобрый день, уважаемые форумчане) Подскажите как вставить все содержимое record в документ excel Код: vbnet 1. 2. 3. 4. 5. 6. 7.
А вот дальше проблема возникает, как вставить записи из рекорда по порядку как они в нем записаны? и как вставить записи из рекорда в нужном мне порядке? Например, в первом случае нужно вставить поля p1,p2,p4,p6,p7,p10 в A1,B1,C1,D1,E1 соответственно, а во втором случае эти же поля нужно вставить в A1,С1,D1,F1,G1 Возвратите два рекордсета и, как Вам посоветовал The_Prist, примените CopyFromRecordset к ним обоим. Цикл не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 11:14 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&Дейл, В запросе используйте ORDER BY ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 11:16 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Не совсем понятно, зачем 2 рекордсета? Второму присвоить значение первого или просто в оба рекорда записать одинаковые запросы? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 11:30 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&ДейлНе совсем понятно, зачем 2 рекордсета? Второму присвоить значение первого или просто в оба рекорда записать одинаковые запросы? Разные запросы - для тех полей и в том порядке, которые Вы хотите. Вы же хотите разные. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 11:33 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&Дейл, Для несмежных диапазонов можно возвращать индивидуальные рекордсеты, состоящие из одного поля. Это может оказаться быстрее, чем организация циклов. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 11:48 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Понял, но тогда останется проблема как не трогать определенные записи? Сейчас сделано с циклом но не совсем правильно работает именно в плане вставки пустой строки ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 12:11 |
|
Вставка Recordset
|
|||
---|---|---|---|
#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. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 12:17 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&ДейлПонял, но тогда останется проблема как не трогать определенные записи? Сейчас сделано с циклом но не совсем правильно работает именно в плане вставки пустой строки Неясно, что такое "определенные записи" и что значит их не трогать. Циклы не нужны, для этого можно использовать запросы и метод CopyFromRecordset. Вам требуется вставка пустой строки посреди рекордсета? Вставьте ее после отработки метода туда, куда хотите. Или сделайте запрос так, чтобы он возвратил пустую строку где Вы желаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 12:20 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
The_Prist, Я вставлял ее туда, но там она тоже не так работает) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
Результат на скрине ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 12:34 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Начальный вид документа ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 12:35 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Извиняюсь за размеры скринов. Вот те строки которые покрашены должны опускаться но этого не происходит ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 12:36 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&ДейлИзвиняюсь за размеры скринов. Вот те строки которые покрашены должны опускаться но этого не происходит У Вас нет покрашенных строк, вместо них - покрашенные отдельные ячейки. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 12:40 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&Дейл, И зачем в коде Selection? Надо при обработке кода успеть что-то выделить?? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 12:42 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&Дейлно там она тоже не так работаетТак Вы скажите как надо. Чего Вы с нами в угадай-ку играете? Она работает ровно так, как сами запрограммировали. 1. Где ячейка с именем "start"? Какое в ней значение? 2. Строку Вы вставляете в ячейку с выделенным диапазоном(Selection.EntireRow.Insert). Зачем? Ведь запись идет не в выделенные ячейки, а на основании адресации в цикле. 3. В отчете уже есть пустые строки. Вы их никак не определяете. Зачем они тогда нужны? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 12:45 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&Дейл, А, понял, Вам надо итоговую часть сохранить? А Вы ее вообще уберите и после этого закодируйте. :0) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 12:53 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Ячейка "start" это A9 она пустая, других способов вставить пустую строку я не нашел поэтому Selection.EntireRow.Insert , наличие или отсутствие пустых выше окрашенных ячеек не меняет картины ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 12:59 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
i45Чип&Дейл, А, понял, Вам надо итоговую часть сохранить? А Вы ее вообще уберите и после этого закодируйте. :0) как вариант конечно можно ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 13:01 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&Дейл, А зачем Вам Selection? В принципе, если нет желания кодировать итоговую часть, можно вернуть число записей из Вашего рекордсета и сразу вставить столько пустых строк, сколько записей в нем. А потом - CopyFromRecordset (по-моему, этот метод сам строки не вставляет, а лишь кидает результат на страницу). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 13:05 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&Дейл, Нет смысла делать сто вставок по одной строке, если можно это сделать один только раз и сразу для ста строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 13:09 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
i45Чип&Дейл, А зачем Вам Selection? В принципе, если нет желания кодировать итоговую часть, можно вернуть число записей из Вашего рекордсета и сразу вставить столько пустых строк, сколько записей в нем. А потом - CopyFromRecordset (по-моему, этот метод сам строки не вставляет, а лишь кидает результат на страницу). Сейчас попробую) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 13:12 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&Дейлi45Чип&Дейл, А зачем Вам Selection? В принципе, если нет желания кодировать итоговую часть, можно вернуть число записей из Вашего рекордсета и сразу вставить столько пустых строк, сколько записей в нем. А потом - CopyFromRecordset (по-моему, этот метод сам строки не вставляет, а лишь кидает результат на страницу). Сейчас попробую) Для узнавания числа записей в рекордсете цикл не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 13:19 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Но один цикл ведь будет для вставки количества строк до тех пор пока не достигнем значения rs.RecordCount, верно? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 13:27 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&Дейл, перед циклом: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 13:43 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
И тогда не надо будет вставлять строки внутри цикла. Вставили один раз и все. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 13:43 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Если делаю без цикла то картина не меняется Код: vbnet 1. 2. 3. 4.
Если делаю вот так Код: vbnet 1. 2. 3. 4. 5. 6. 7.
Вставляет все что нужно и не портит Итог, но бывает выходит ошибка run-time error '1004 method 'rows' of object ' _global' failed Где я опять неправильно делаю? Выделяет строку Rows("9:9").Insert Shift:=xlDown ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 14:00 |
|
Вставка Recordset
|
|||
---|---|---|---|
#18+
Чип&Дейл, Может у Вас rs.RecordCount возвращает 1, откуда знать? Вы проверьте: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Сама вставка строк работает и проблема может быть только в том, что Вы перед вычислением строк Recordset не переходите на последнюю запись и как следствие всегда возвращается 1. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2015, 14:22 |
|
|
start [/forum/topic.php?all=1&fid=60&tid=2155773]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 160ms |
0 / 0 |