Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel, VBA (вывод 250 тыс строк из рекордсета) / 22 сообщений из 22, страница 1 из 1
10.06.2009, 15:32
    #36035785
Нович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
Столкнулся с пределом вывода строк на Экселевский лист из рекордсета. Есть ли стандартное решение на VBA, чтобы при заполнении одного листа (~65 тыс. строк) переходил на заполнение последующих?
...
Рейтинг: 0 / 0
10.06.2009, 17:03
    #36036042
nporaMep
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
а как выводится на один лист хотя бы?
...
Рейтинг: 0 / 0
10.06.2009, 17:26
    #36036116
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
НовичСтолкнулся с пределом вывода строк на Экселевский лист из рекордсета. Есть ли стандартное решение на VBA, чтобы при заполнении одного листа (~65 тыс. строк) переходил на заполнение последующих?Мазохист. Не занимайся ерундой. Никто твои тысячи строк читать не будет.
...
Рейтинг: 0 / 0
10.06.2009, 17:57
    #36036209
f
f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
Делай рекордсеты поменьше. Создай несколько и разбрасывай по разным листам.
...
Рейтинг: 0 / 0
10.06.2009, 17:58
    #36036217
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
НовичСтолкнулся с пределом вывода строк на Экселевский лист из рекордсета
не удивительно, если excel 2000, как по-вашему он распихает 250 тыс. строк в 65 тысяч максимальных на листе????

PS. не предназначен excel для этого...
...
Рейтинг: 0 / 0
11.06.2009, 09:03
    #36036785
Нович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
nporaMepа как выводится на один лист хотя бы?

Код: 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.
 
    Dim server As String:   server = "s.org"
    Dim UserId As String:   UserId = "r"
    Dim Passwo As String:   Passwo = "r"
    
    Dim con As ADODB.Connection
    Dim rst As ADODB.Recordset
    
    Set con = New ADODB.Connection
    Set rst = New ADODB.Recordset
    
    
    con.Open "Provider=SQLOLEDB;Persist Security Info=False;Password=" & Passwo & ";User ID=" & UserId & ";Data Source=" & server
    Set rst.ActiveConnection = con
    rst.Open "select * from n '", con, adOpenStatic, adLockOptimistic, adCmdText
   
    Dim i As Integer
    Do While Not rst.EOF
        i = i +  1 
        Cells(i +  1 ,  1 ).Value = i
        Cells(i +  1 ,  2 ).Value = rst.Fields![pr]
        Cells(i +  1 ,  3 ).Value = rst.Fields![dr]
        Cells(i +  1 ,  4 ).Value = rst.Fields![nm]        
        rst.MoveNext
    Loop
  
    rst.Close:  Set rst = Nothing
    con.Close:  Set con = Nothing

Довольно всё простенько, теперь нужно бы добавить счётчик в запрос и порезать рекордсет на части. Вопрос в том, что не понятно сколько рекордсетов будет всего.
...
Рейтинг: 0 / 0
11.06.2009, 10:47
    #36037051
Korcar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
если так уж очень надо, то введи счетчик, который после каждой 65536-й записи будет создавать новый лист.
+ в выводе, обращайся к ачейкам начиная с листа, чтобы можно было управлять ходом вывода: на какой лист записывать

только 250 тыс записей перекидывать таким образом в эксель займет тучу времени. выспаться можно будет))) имхо
...
Рейтинг: 0 / 0
11.06.2009, 12:12
    #36037320
f
f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
Вот в этой строке
Код: plaintext
rst.Open "select * from n '", con, adOpenStatic, adLockOptimistic, adCmdText
нужно добавить критерий отбора

Код: plaintext
select * from n Where...
...
Рейтинг: 0 / 0
16.06.2009, 11:39
    #36043036
nporaMep
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
Код: 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.
 Dim server As String:   server = "s.org"
    Dim UserId As String:   UserId = "r"
    Dim Passwo As String:   Passwo = "r"
    
    Dim con As ADODB.Connection
    Dim rst As ADODB.Recordset
    
    Set con = New ADODB.Connection
    Set rst = New ADODB.Recordset
    
    
    con.Open "Provider=SQLOLEDB;Persist Security Info=False;Password=" & Passwo & ";User ID=" & UserId & ";Data Source=" & server
    Set rst.ActiveConnection = con
    rst.Open "select * from n '", con, adOpenStatic, adLockOptimistic, adCmdText
   
    Dim i As Long
    Dim j as Long
    j= 0 
    Dim ws as Worksheet
    set ws = ActiveSheet
    Do While Not rst.EOF
        i = i +  1 
        if i =  65537  then
           set ws = worksheets.add
           i= 1 
           j=j+ 65536 
        end if
        ws.Cells(i +  1 ,  1 ).Value = i+j
        ws.Cells(i +  1 ,  2 ).Value = rst.Fields![pr]
        ws.Cells(i +  1 ,  3 ).Value = rst.Fields![dr]
        ws.Cells(i +  1 ,  4 ).Value = rst.Fields![nm]        
        rst.MoveNext
    Loop
  
    rst.Close:  Set rst = Nothing
    con.Close:  Set con = Nothing
...
Рейтинг: 0 / 0
16.06.2009, 12:00
    #36043100
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
nporaMep,
Нет слов !
Про CopyFromRecordset никто не слышал что ли ?
...
Рейтинг: 0 / 0
16.06.2009, 12:18
    #36043156
qwrqwr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
big-dukeНет слов !
Про CopyFromRecordset никто не слышал что ли ?какое там
сюда взгляните (лучше при этом сидеть, а не стоять )
http://www.sql.ru/forum/actualthread.aspx?tid=669310#7261110
...
Рейтинг: 0 / 0
16.06.2009, 13:41
    #36043474
Нович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
big-dukenporaMep,
Про CopyFromRecordset никто не слышал что ли ?
А как им разбить рекордсет на n-цать частей?
...
Рейтинг: 0 / 0
16.06.2009, 13:51
    #36043510
qwrqwr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
Нович, на каждой несломанной клавиатуре имеется кнопка F1
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    Set con = New ADODB.Connection
    Set rst = New ADODB.Recordset

    con.Open "бла-бла-бла"
    rst.Open "select * from Таблица", con

    Dim ws As Worksheet
    Do Until rst.EOF
        Set ws = Worksheets.Add
        ' в 1ую строку названия полей - по желанию
        ws.Range("A2").CopyFromRecordset rst,  65000 
    Loop
    
    rst.Close
    con.Close
...
Рейтинг: 0 / 0
16.06.2009, 14:56
    #36043746
Нович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
Чтобы не плодить новые ветки:
Подскажет ли всезнающий All код вставки последующего листа не до активного, а после него?
...
Рейтинг: 0 / 0
16.06.2009, 15:12
    #36043793
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
Нович,
вам же сказали - купите клавиатуру, на которой есть кнопка ф1.
...
Рейтинг: 0 / 0
15.03.2010, 13:13
    #36520671
РЕС
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
qwrqwrНович, на каждой несломанной клавиатуре имеется кнопка F1
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    Set con = New ADODB.Connection
    Set rst = New ADODB.Recordset

    con.Open "бла-бла-бла"
    rst.Open "select * from Таблица", con

    Dim ws As Worksheet
    Do Until rst.EOF
        Set ws = Worksheets.Add
        ' в 1ую строку названия полей - по желанию
        [SIZE= 3 ]ws.Range("A2").CopyFromRecordset rst[/SIZE],  65000 
    Loop
    
    rst.Close
    con.Close

А вот у меня похожая конструкция не работает (никак не ругается, просто на лист ничего не выводит хоть тресни!). Причем библиотеки вроде все подключены, запрос рабочий, данные в рекордсет возвращаются (проверял). Win XP(sp2), MS Office-2003(sp3), БД Oracle.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub proba() 
Dim sis As New ADODB.Connection 
sis.ConnectionString = "Provider=MSDAORA.1;Password=***;User ID=***;Data Source=***;Persist Security Info=True" 
sis.Open 
Dim ogranMax As New ADODB.Recordset 
ogranMax.CursorType = adOpenStatic 
   ogranMax.Open "SELECT ....", sis 
   ogranMax.MoveFirst 
    
Range("A1").CopyFromRecordset ogranMax 

ogranMax.Close 
sis.Close 
End Sub
...
Рейтинг: 0 / 0
15.03.2010, 13:47
    #36520862
qwrqwr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
РЕС
похожая конструкция не работает
Код: plaintext
1.
2.
3.
...    
Range("A1").CopyFromRecordset ogranMax 
...

Range Property - F1Remarks
When used without an object qualifier, this property is a shortcut for ActiveSheet.Range (it returns a range from the active sheet; if the active sheet isn’t a worksheet, the property fails).
Указывайте к какому листу относится Range("A1").
Код: plaintext
Workbooks("MyBook.xls").Worksheets("Sheet1").Range("A1")
...
Рейтинг: 0 / 0
15.03.2010, 14:06
    #36520919
РЕС
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
Неа, видимо проблема не в этом. Проблема осталась. Не помогает также и создание нового (приложения Экселя/книги/листа) как объекта.
...
Рейтинг: 0 / 0
15.03.2010, 14:15
    #36520946
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
РЕС, а выводить содержимое рекордсета на лист в цикле пробовали?
...
Рейтинг: 0 / 0
15.03.2010, 14:24
    #36520975
РЕС
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
vlthРЕС, а выводить содержимое рекордсета на лист в цикле пробовали?
Хех, с этого и начинал. Не понравилось - долго
...
Рейтинг: 0 / 0
15.03.2010, 15:09
    #36521092
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
РЕС, ясно, что не быстро. Зато очевидно, что рекордсет заполняется.

Попробуйте определить свойство CursorLocation=adUseClient (по умолчанию CursorLocation=adUseServer)
...
Рейтинг: 0 / 0
15.03.2010, 15:44
    #36521214
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel, VBA (вывод 250 тыс строк из рекордсета)
Откуда известно, что она не работает?
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel, VBA (вывод 250 тыс строк из рекордсета) / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]