Быстрая вставка байтового массива в таблицу

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Быстрая вставка байтового массива в таблицу

Сообщение MOV » 23.03.2005 (Ср) 15:11

Читаю файл, который представляет собой таблицу в байтовый массив всего метра три считывается быстро за доли секунды, а вот потом беру свою структуру (ну или переменную пользовательского типа), котрая представляет собой запись таблицы и выбирая из этого массива строки вставляю их в MSHFlexgrid. В таблице 107 полей и запись всех строк в этот контрол занимает очень много времени особенно если таблица будет в 30 раз больше, а есть и такие. Как бороться с тормознутостью контрола (хочу загружать все записи сразу). Во всяком случае, Access открывает эту таблицу быстрее, правда через ODBC, который может юзать индексы к таблице, но ведь для считывания всех записей индексы ускорения не дадут.

snov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 28.11.2003 (Пт) 10:12
Откуда: Челябинск

Re: Быстрая вставка байтового массива в таблицу

Сообщение snov » 23.03.2005 (Ср) 15:19

MOV писал(а):Читаю файл, который представляет собой таблицу в байтовый массив всего метра три считывается быстро за доли секунды, а вот потом беру свою структуру (ну или переменную пользовательского типа), котрая представляет собой запись таблицы и выбирая из этого массива строки вставляю их в MSHFlexgrid. В таблице 107 полей и запись всех строк в этот контрол занимает очень много времени особенно если таблица будет в 30 раз больше, а есть и такие. Как бороться с тормознутостью контрола (хочу загружать все записи сразу). Во всяком случае, Access открывает эту таблицу быстрее, правда через ODBC, который может юзать индексы к таблице, но ведь для считывания всех записей индексы ускорения не дадут.

Записываем через TextMatrix?
Массив 2умерный?
Делай одномерный! между столбцами помести vbTab и MSHFlexGrid1.AddItem собсно этот элемент массива. так будет быстрее.

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 23.03.2005 (Ср) 15:29

Именно так и делаю, массив одномерный, с vbTab и MSHFlexGrid1.AddItem
Все равно долго. :?

Inferno
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 26.01.2005 (Ср) 1:06

Сообщение Inferno » 24.03.2005 (Чт) 0:26

Может тебе всетаки нужен другой контрол? К примеру DataGrid?
Если ты работаешь с базой, то добавлять элементы через additem немного по извращенски.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 24.03.2005 (Чт) 15:26

Flex.Redraw используешь?

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 27.03.2005 (Вс) 11:38

Flex.Redraw используешь

да. точно redraw отключил стало в два раза быстрее. уже лучше.

Может тебе все-таки нужен другой контрол? К примеру DataGrid?
Если ты работаешь с базой, то добавлять элементы через additem немного по извращенски.


а как лучше добавлять? у меня прсто есть массив байт, куда закачивается вся таблица и потом, зная формат записиси, читаю этот массив по строкам, создав свой тип переменной. поэтому additem. а вообще думаю, API (через виндовские сообщения) должны быстрее. а?


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList