|
|
|
Как ADO recordset по-простому выгрузить на лист Эксель?
|
|||
|---|---|---|---|
|
#18+
В recordset засунул результат SELECTа, источником данных для которого является диапазон листа Excel 2003. Теперь нужно этот исходный диапазон листа очистить и ту выборку, которая в рекордсете сидит после SELECTа туда выгрузить. Как-то это поизящней можно сделать, без того, чтобы сначала в Код: plaintext ----- Smooth operator operating correctly. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2010, 00:45 |
|
||
|
Как ADO recordset по-простому выгрузить на лист Эксель?
|
|||
|---|---|---|---|
|
#18+
Как ты думаешь, в какой момент делается практическое наполнение рекордсета данными? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2010, 04:32 |
|
||
|
Как ADO recordset по-простому выгрузить на лист Эксель?
|
|||
|---|---|---|---|
|
#18+
White OwlКак ты думаешь, в какой момент делается практическое наполнение рекордсета данными? Думал, что после Код: plaintext 1. 2. 3. Код: plaintext Если в последнем случае, то есть какой-то ответ на мой вопрос в предыдущем посте? Хочется обойтись без того, чтобы лишние строки кода плодить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2010, 12:36 |
|
||
|
Как ADO recordset по-простому выгрузить на лист Эксель?
|
|||
|---|---|---|---|
|
#18+
кладовщикНа самом деле при Код: plaintext кладовщикЕсли в последнем случае, то есть какой-то ответ на мой вопрос в предыдущем посте? Хочется обойтись без того, чтобы лишние строки кода плодить.Никак. Если у тебя источником данных является лист Экселя, то этот же самый лист не может быть приемником данных. Можешь попытаться сделать клиентский тип курсора, но я сомневаюсь что это поможет. А проще, не париться и сделать по старинке, через промежуточный лист. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2010, 17:44 |
|
||
|
Как ADO recordset по-простому выгрузить на лист Эксель?
|
|||
|---|---|---|---|
|
#18+
А что мешает загнать рекордсет в переменную при помощи: Код: plaintext стереть данные с листа, а затем скопировать из переменной: Код: plaintext 1. 2. ? Код не тестировал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 02:27 |
|
||
|
Как ADO recordset по-простому выгрузить на лист Эксель?
|
|||
|---|---|---|---|
|
#18+
White Owl Open запрашивает рекордсет с сервера и когда сервер готов отдавать строки open завершается, но по сети ничего еще не передается. А вот когда ты вызываешь RecordSet.MoveNext то тогда-то строчки и начинают попадать в память твоего клиента. а разве установка параметра CursorLocation в adUseClient не работает по другому и не все сроки сразу попадают на клиент? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 08:21 |
|
||
|
Как ADO recordset по-простому выгрузить на лист Эксель?
|
|||
|---|---|---|---|
|
#18+
KL (XL) Код: plaintext HandKotа разве установка параметра CursorLocation в adUseClient не работает по другому и не все сроки сразу попадают на клиент?Я же сказал что попробовать это можно, но положительный результат не гарантирован. adUseClient всего-лишь обязан хранить в памяти клиента те строки что уже скачаны с сервера. Но он не обязан делать предварительное скачивание. Поэтому что произойдет в действительности если цель и источник для CopyFromRecordset заданы одни и те же предсказать нельзя и более того, поведение может меняться от одной версии Экселя к другой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 17:41 |
|
||
|
Как ADO recordset по-простому выгрузить на лист Эксель?
|
|||
|---|---|---|---|
|
#18+
KL (XL)А что мешает загнать рекордсет в переменную при помощи: Код: plaintext 1. 2. ? Код не тестировал. У меня при выполнении кода ошибку Type Mysmatch выдает. Где эта ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 22:00 |
|
||
|
Как ADO recordset по-простому выгрузить на лист Эксель?
|
|||
|---|---|---|---|
|
#18+
Без полного кода трудно сказать, но первое, что приходит в голову, это проверить как заявлена переменная arrData. Должна быть типа Variant, т.е.: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 22:23 |
|
||
|
Как ADO recordset по-простому выгрузить на лист Эксель?
|
|||
|---|---|---|---|
|
#18+
Еще неплохо бы проверить, что возвращает сам запрос :) Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 22:45 |
|
||
|
Как ADO recordset по-простому выгрузить на лист Эксель?
|
|||
|---|---|---|---|
|
#18+
KL (XL)Без полного кода трудно сказать, но первое, что приходит в голову, это проверить как заявлена переменная arrData. Должна быть типа Variant, т.е.: Код: plaintext Так точно она и заявлена. И рекордсет (я проверил), корректно в нее выгрузился. В выражении Код: plaintext Где про этот адский Transpose можно прочитать, желательно на русском? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 22:53 |
|
||
|
Как ADO recordset по-простому выгрузить на лист Эксель?
|
|||
|---|---|---|---|
|
#18+
У меня вложенный файл работает без проблем. Application.Transpose - это вызов функции рабочего листа ТРАНСП() (транспонирование) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2010, 23:36 |
|
||
|
Как ADO recordset по-простому выгрузить на лист Эксель?
|
|||
|---|---|---|---|
|
#18+
KL (XL)У меня вложенный файл работает без проблем. Application.Transpose - это вызов функции рабочего листа ТРАНСП() (транспонирование) У меня Ваш файл тоже работает, а вот мой - нет (( Я и корректность рекордсета проверил - циклом вывел все члены массива на лист, и размер диапазона, куда массив выгружается Код: plaintext А при Код: plaintext Буду искать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 01:18 |
|
||
|
Как ADO recordset по-простому выгрузить на лист Эксель?
|
|||
|---|---|---|---|
|
#18+
Без полного кода (и возможно данных) помочь не смогу :-( А может код запускается не из Excel, а лишь извлекает и пишет данные в оный? Тогда конечно Application.Transpose должна давать сбой, правда ошибка "Type Mysmatch" как-то с этим не вяжется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 01:50 |
|
||
|
Как ADO recordset по-простому выгрузить на лист Эксель?
|
|||
|---|---|---|---|
|
#18+
KL (XL)Без полного кода (и возможно данных) помочь не смогу :-( Вот файл с данными и кодом, может Вы незамыленным взглядом сразу же найдете ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 02:22 |
|
||
|
Как ADO recordset по-простому выгрузить на лист Эксель?
|
|||
|---|---|---|---|
|
#18+
Ну вот сразу все прояснилось: у вас есть данные типа Null, а с ними функция Transpose не работает. В таком случае, думаю, придется транспонировать через цикл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 02:59 |
|
||
|
Как ADO recordset по-простому выгрузить на лист Эксель?
|
|||
|---|---|---|---|
|
#18+
Как-то так: Код: plaintext 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 03:31 |
|
||
|
Как ADO recordset по-простому выгрузить на лист Эксель?
|
|||
|---|---|---|---|
|
#18+
Ясно, в пару строк уложиться не получилось. Значит сначала Код: plaintext ЗЫ Я сто лет с массивами ничего не делал и не понял, к чему сущности плодить типа Код: plaintext Код: plaintext При проверке данных рекордсета я тупо циклом элементы массива arrData на лист выводил: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 04:17 |
|
||
|
Как ADO recordset по-простому выгрузить на лист Эксель?
|
|||
|---|---|---|---|
|
#18+
1) Вот так три строки, но можно и меньше ;-) Код: plaintext 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 3) Плодить это - необязательно, но когда много переменных, легко ошибиться с их декларирование, т.ч. рекоммендуется это делать явно 4) ReDim нужен для динамического изменения размеров массива 5) При большом количестве данных, перебор массива в памяти и копирование в диапазон целиком - значительно быстрее, чем копирование в процессе цикла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 09:54 |
|
||
|
Как ADO recordset по-простому выгрузить на лист Эксель?
|
|||
|---|---|---|---|
|
#18+
Кстати, как насчет этого если речь о смысле: Код: plaintext 1. 2. 3. 4. И если памяти не жалко, то так еще короче, хоть это и не предел: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 10:29 |
|
||
|
Как ADO recordset по-простому выгрузить на лист Эксель?
|
|||
|---|---|---|---|
|
#18+
Пардон, отменил случайно несколько изменений: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2010, 10:35 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=36753556&tid=2177858]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
160ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 486ms |

| 0 / 0 |
