![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ну слишком медленный StringGrid. Что делать? [D7]
DmitrichJ © (2007-01-17 05:07:00)Вопрос в том, что вывожу данные в StringGrid. При около 100 записей это дело слишком затягивается. Делаю так:
form1.IBQuery1.First;
while not form1.IBQuery1.Eof do begin
count:=count+1;
StringGrid1.RowCount:=count+1;
StringGrid1.Cells[0,count]:=Form1.IBQuery1.FieldByName('npfiz').AsString;
StringGrid1.Cells[1,count]:=Form1.IBQuery1.FieldByName('fizfamil').AsString+' '+
Form1.IBQuery1.FieldByName('fizname').AsString+' '+
Form1.IBQuery1.FieldByName('fizotch').AsString;
end;
Примерно так.
Подскажите как выводить данные лучше? Или каки компонентом воспользоваться, кроме DBGrid.
Спасибо.
Fredy314 (2007-01-17 13:12:00) [21]> [6] DmitrichJ (17.01.07 12:02)
примерно так
mySQLResult := MysqlClient.query(s, true, ok);
................
For i := 0 To mySQLResult.RowsCount - 1 Do
Begin
For j := 0 To mySQLResult.FieldsCount - 1 Do
Begin
SG.Cells[j, i] := mySQLResult.FieldValue(j);
...........
Врятли парадокс тормознее мускула, скорее всего прав: > [9] Сергей М. © (17.01.07 12:18)
а StringGrid я юзаю потому что ненашёл в DBGrid-е OnDrawCell мне нужно поразному отрисовырать разные данные(Раравнивание по запятой например).
Сергей М. (2007-01-17 13:04:00) [22]
> Думкин © (17.01.07 12:59) [12]
Ну и Next, конечно же.
Но есть большие подозрения, что StringGrid (или любой другой виз.компонент) здесь ни при чем, засада - в самом запросе и/или том что за ним скрывается.
Думкин (2007-01-17 12:59:00) [23]
> Сергей М. © (17.01.07 12:18) [9]
А где Next?
DmitrichJ (2007-01-17 12:45:00) [24]Amoeba. Да знаю я SQL. Это я самый простой пример написал. А то что мне нужно сделать работает ещё медленнее.=(
Amoeba (2007-01-17 12:41:00) [25]
> DmitrichJ (17.01.07 12:02) [6]
>
> Fredy314, и как ты это делаешь?
>
> Amoeba, больше нравится в ручную делать и к томуже в одно
> из полей нужно собрать данные из разных таблиц. Легче всё
> таки в StringGrid.
Конечно, вольному воля. Но, вообще-то, такие вещи легко и эффективно делаются запросами к базе. Изучай SQL.
Сергей М. (2007-01-17 12:18:00) [26]Пробуй:
with form1.IBQuery1, StringGrid1 do begin
Last;
RowCount := RecordCount;
First;
while not Eof do begin
Inc(count);
Cells[0,count]:= Fields[0].AsString;
Cells[1,count]:= Fields[1].AsString+' '+ Fields[2].AsString + ' ' Fields[3].AsString + ' ' + Fields[4].AsString;
end;
end;
Если "тормоза" по-прежнему ощутимы, то проблема не иначе как в тексте самого запроса или в БД/СУБД
evvcom (2007-01-17 12:08:00) [27]> [6] DmitrichJ (17.01.07 12:02)
> в одно из полей нужно собрать данные из разных таблиц
А Query у тебя на что? Ты, видимо, не умеешь им пользоваться?
DmitrichJ (2007-01-17 12:06:00) [28]В цикле, конечно же form1.IBQuery1.Next. =)
DmitrichJ (2007-01-17 12:02:00) [29]Fredy314, и как ты это делаешь?
Amoeba, больше нравится в ручную делать и к томуже в одно из полей нужно собрать данные из разных таблиц. Легче всё таки в StringGrid.
Amoeba (2007-01-17 10:48:00) [30]
> вывожу данные в StringGrid
Какая цель преследуется этим если отображаются даные из базы данных? Объясни честнОму народу. Есть ведь DBGrid, и не надо городить огород.
Fredy314 (2007-01-17 10:04:00) [31]а что за запрос? у меня 4,5 тис записей выводится в StringGrid обновляется постоянно изменяется запрос(фильтруется часть записей в запросе) и никаких тормозов незамечено.
Loginov Dmitry (2007-01-17 07:44:00) [32]> Подскажите как выводить данные лучше?
Довольно цивильно получается с помощью TListView
ASoft (2007-01-17 07:25:00) [33]
DmitrichJ (17.01.07 05:07)
> Примерно так.
хорошо, что "примерно" так, а то из цикла не выйдешь :)
А DBGrid чем не устраивает?
Virgo_Style (2007-01-17 06:37:00) [34]попробуй BeginUpdate - EndUpdate