Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Экспорт из MSHFlexGrid / 23 сообщений из 23, страница 1 из 1
09.04.2008, 15:11
    #35245635
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
Подскажите, пожалуйста можно ли как то сделать быстрый экспорт из MSHFlexGrid в Excel
не используя цикл?
Код: plaintext
1.
2.
3.
4.
For i =  1  To FG.Rows -  1 
For j =  1  To FG.Cols -  1 
objEx.Worksheets( 1 ).Cells(i, j).Value = FG.TextMatrix(i, j)
Next j, i
...
Рейтинг: 0 / 0
09.04.2008, 15:13
    #35245640
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
Clip
CopyFromRecordset
GetString
...
Рейтинг: 0 / 0
09.04.2008, 15:17
    #35245650
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
а если рекордсет не один и к тому же еще закрыт
...
Рейтинг: 0 / 0
09.04.2008, 15:20
    #35245664
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
Выбрать нужный и открыть.
...
Рейтинг: 0 / 0
09.04.2008, 15:26
    #35245684
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
понял
а с Clip как?
...
Рейтинг: 0 / 0
09.04.2008, 15:35
    #35245721
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
это массив строк обычный, как и GetString
...
Рейтинг: 0 / 0
09.04.2008, 15:47
    #35245796
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
Спасибо
CopyFromRecordset-оптимальное решение
...
Рейтинг: 0 / 0
10.04.2008, 10:25
    #35247262
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
CopyFromRecordset-работает быстро, но вот проблема
если recordcount больше ~1100(точно не проверял, 1100 выгружает, а 3000 нет) то вываливается по ошибке:
80004005
Method CopyFromRecordset of object Range failed

Кто нибудь сталкивался с такой ошибкой?
...
Рейтинг: 0 / 0
10.04.2008, 10:28
    #35247280
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
Вот здесь все посмотрели ?
...
Рейтинг: 0 / 0
10.04.2008, 10:38
    #35247320
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
помотрел, но понял только то что в поле Memo слишком большая запись, так ли это?
...
Рейтинг: 0 / 0
10.04.2008, 10:40
    #35247327
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
A null у вас есть в рекордсете ? Какой эксель ? У меня работало и на 50 000 записей .
...
Рейтинг: 0 / 0
10.04.2008, 10:42
    #35247334
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
Null присутствует, Excel 2003
Но Null присутствует и при выгрузке записей <=~1100 и всё работает
...
Рейтинг: 0 / 0
10.04.2008, 12:28
    #35247826
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
вычислил поле на котором обрывается рекордсет, это поле Memo
но закономерности не понял в одном случае длина поля 960 в другом 255 очистив поля ошибка пропадает
почему такое происходит
...
Рейтинг: 0 / 0
10.04.2008, 12:49
    #35247923
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
это ограничение у экселя с полями мемо, где-то на просторах мсдн даже есть КБ по этому вопросу, сейчас уже не найду, но если вам интересно сами можете поискать.
...
Рейтинг: 0 / 0
10.04.2008, 17:23
    #35249270
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
тогда не пойму почему
Код: plaintext
1.
2.
3.
4.
For i =  1  To Рекордсет.recordcount -  1 
For j =  1  To Рекордсет.fields.count -  1 
objEx.Worksheets( 1 ).Cells(i, j).Value = FG.TextMatrix(i, j)
Next j, i
обрабатывает все записи в рекордсете без ошибки
...
Рейтинг: 0 / 0
10.04.2008, 17:26
    #35249281
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
потому-что там берется текстовое предствление данных, а вы blob-поле считываете в excel напрямую через copyfromrecordset
...
Рейтинг: 0 / 0
10.04.2008, 17:46
    #35249372
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
Ну тогда, по моему мнению этот способ
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
For i =  1  To rs.RecordCount -  1 
For j =  1  To rs.Fields.Count -  1 
    DoEvents
    If strin <> "" Then
    strin = strin & vbTab & rs.Fields(j)
    Else
    strin = rs.Fields(j)
    End If
Next j
    Clipboard.Clear
    Clipboard.SetText strin
    objEx.Worksheets( 1 ).Cells(i,  1 ).Select
    objEx.Worksheets( 1 ).Paste
    MainFrm.Caption = i
    strin = ""
    rs.MoveNext
Next i
самый быстрый получается
только с кириллицей траблы при вставке
...
Рейтинг: 0 / 0
10.04.2008, 22:48
    #35249812
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
timtimтогда не пойму почему
Код: plaintext
1.
2.
3.
4.
For i =  1  To Рекордсет.recordcount -  1 
For j =  1  To Рекордсет.fields.count -  1 
objEx.Worksheets( 1 ).Cells(i, j).Value = FG.TextMatrix(i, j)
Next j, i
обрабатывает все записи в рекордсете без ошибки

Я имел в виду это
Код: plaintext
1.
2.
3.
4.
5.
For i =  1  To rs.RecordCount -  1 
For j =  1  To rs.Fields.Count -  1 
objEx.Worksheets( 1 ).Cells(i, j).Value = rs.Fields(j)
rs.MoveNext
Next j, i
но это тоже не работает
...
Рейтинг: 0 / 0
11.04.2008, 15:08
    #35250082
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
blob-поля через GetChunk
...
Рейтинг: 0 / 0
14.04.2008, 11:12
    #35252881
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
GetChunk-ругается ошибкой 3219, операция не допускается в данном контексте

рекордсет открываю так:
rs.Open sqlStr, cn, adOpenDynamic, adLockPessimistic

что ему нехватает?
...
Рейтинг: 0 / 0
14.04.2008, 11:17
    #35252900
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
cn активно ?
Курсор на клиенте ?
...
Рейтинг: 0 / 0
14.04.2008, 11:18
    #35252905
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
cn-активно
курсор и так и так пробовал
...
Рейтинг: 0 / 0
14.04.2008, 11:54
    #35253008
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Экспорт из MSHFlexGrid
This error usually means that you're trying to use GetChunk to read data from a field that doesn't support it.
вот в чём дело аказывается
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Экспорт из MSHFlexGrid / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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