Страница 1 из 1

Помогите студенту!!!!!!!!!!!!

Добавлено: 08 май 2005, 03:56
Анатолий
Помогите студенту. ( у которого защита диплома через уже 4 дня)
Как занести полученную из 1 столбца по запросу информацию из FIBQuery или FIBDataset в StringGrid. Не знаю как обратиться к ней. Пытался так: stringgrid1.Cells[0,0]:=datamodule2.QuerySubProject.FieldValue(NAME_SP,false); - не знаю насколько это соответствует.
Как перемещаться по набору данных FIBQuery или FIBDataset. Next, first и других методов нет. Что делать.
Буду очень ждать ответа......

Re: Помогите студенту!!!!!!!!!!!!

Добавлено: 10 май 2005, 10:02
fraks
Анатолий писал(а):Буду очень ждать ответа......
Блин, чего его ждать-то? Надо читать хелпы и книжки. И будет все ясно.
Анатолий писал(а):Как занести полученную из 1 столбца по запросу информацию из FIBQuery или FIBDataset в StringGrid. Не знаю как обратиться к ней.
К НЕЙ - это к кому?
Анатолий писал(а):Пытался так:

Код: Выделить всё

stringgrid1.Cells[0,0]:=datamodule2.QuerySubProject.FieldValue(NAME_SP,false); 
- не знаю насколько это соответствует.
Соответствует чему? Что не устраивает в текущем коде?
Анатолий писал(а):Как перемещаться по набору данных FIBQuery или FIBDataset. Next, first и других методов нет.
Перемещение по датасетам - First, Last, Next, Prior. Только FIBQuery не является датасетом. Он показывает только одну очерезную отфетченную запись. Поэтому в нем Prior смысла не имеет.

А код я бы привел такой:

Код: Выделить всё

var i: integer;
begin
  i := 0;
  StringGrid.Rows.Count := 0;
  FIBQuery.Transaction.StartTransaction;
  FIBQuery.ExecSQL;
  while not FIBQuery.EOF do begin
    Inc(i);
    StringGrid.Rows.Count := i;
    StringGrid.Cells[i-1, 0]:=DM2.FIBQuery.FieldByName('название поля').AsString;    
    FIBQuery.Next;
  end;{while}
  FIBQuery.Close;
  FIBQuery.Transaction.Commit;
end;
Delphi в этом году еще не открывал поэтому претензии к синтаксису не предъявлять.
Кроме того, использование StringGrid в таком режиме - это бяка. Надо использовать либо Датасеты типа TClientDataSet либо что-то другое - типа типизированных файлов, массивов рекордов и для отображения что-то типа DrawGrid - например VirtualTreeView или GridView.

Кроме того выделение памяти по одной записи в гриде может быть весьма затратной операцией если строк много - тогда лучше сделать побольше Grow что бы выделение памяти было бОльшими кусками. Ну и т.п.