Показать сообщение отдельно
  #1  
Старый 07.12.2012, 00:43
Аватар для Paskal
Paskal Paskal вне форума
Новичок
 
Регистрация: 28.09.2010
Сообщения: 93
Репутация: 12
Вопрос Скорость заполнения из dbgid в stringgrid

Очень срочно нужна помощь.
Писал софт под учет товара + продажа, тестировал прогу на своей бд до 30 позиций. Все работало как нужно но
дали мне почти 7000 позиций и на 11 столбиков. Тут я и
Ближе к теме: загружаю из dbgid в stringgrid все позиции и [b] жду жду ....
Результат открывается но проходит много времени.
Вопрос как можно быстрей выгрузить данные из dbgid в stringgrid
Знаю что подход неправильный но переделывать очень много а времени как всегда нет. (
Мой код:
Код:
procedure TForm3.N7Click(Sender: TObject);
var
i200, j200:Integer;
begin
      ADOQuery3.Active:=False;
      AdoQuery3.SQL.Clear;
      ADOQuery3.SQL.Text:='SELECT COUNT (*) FROM Products;';
      ADOQuery3.Active:=true;


      if not ADOQuery3.Eof then
         begin
           if not ADOQuery3.FieldByName('Expr1000').IsNull then
           begin
             dbCountInt23:=ADOQuery3.fieldbyname('Expr1000').AsInteger;
           end
           else
           begin
           ShowMessage('Ошибка! При выборке данных 00EX0CN');
           end;
         end;
         ADOQuery3.Close;
         StringGrid2.RowCount:=2;
         StringGrid2.RowCount:=dbCountInt23 +1;

  AdoQuery3.Close;
  AdoQuery3.SQL.Clear;
  AdoQuery3.SQL.Add('SELECT Products.Kod, Products.Articul, Products.Positions, Products.Cols, Products.Warehouse, Products.PresentPrice, Products.Comment FROM Products;');
  ADOQuery3.Open;


  j200 := 1;
 DBGrid1.DataSource.DataSet.First;
  while not DBGrid1.DataSource.DataSet.Eof do
  begin
    for i200 := 0 to DBGrid1.Columns.Count -1 do
    begin
     StringGrid2.Cells[0,0]:='КОД';
     StringGrid2.Cells[1,0]:='АРТИКЛ';
     StringGrid2.Cells[2,0]:='НАИМЕНОВАНИЕ ПОЗИЦИИ';
     StringGrid2.Cells[3,0]:='КОЛИЧЕСТВО';
     StringGrid2.Cells[4,0]:='СКЛАД';
     StringGrid2.Cells[5,0]:='ЦЕНА';
     StringGrid2.Cells[6,0]:='КОМЕНТАРИЙ';
     StringGrid2.Cells[i200, j200] := DBGrid1.DataSource.DataSet.Fields[i200].AsString;
     //------------------------------------->
    Form3.Repaint;
    StringGrid2.Repaint;
    end;
    Inc(j200);
    DBGrid1.DataSource.DataSet.Next;
   end;
   end;
Ответить с цитированием