Помогите студенту. ( у которого защита диплома через уже 4 дня)
Как занести полученную из 1 столбца по запросу информацию из FIBQuery или FIBDataset в StringGrid. Не знаю как обратиться к ней. Пытался так: stringgrid1.Cells[0,0]:=datamodule2.QuerySubProject.FieldValue(NAME_SP,false); - не знаю насколько это соответствует.
Как перемещаться по набору данных FIBQuery или FIBDataset. Next, first и других методов нет. Что делать.
Буду очень ждать ответа......
Помогите студенту!!!!!!!!!!!!
Модератор: kdv
Re: Помогите студенту!!!!!!!!!!!!
Блин, чего его ждать-то? Надо читать хелпы и книжки. И будет все ясно.Анатолий писал(а):Буду очень ждать ответа......
К НЕЙ - это к кому?Анатолий писал(а):Как занести полученную из 1 столбца по запросу информацию из FIBQuery или FIBDataset в StringGrid. Не знаю как обратиться к ней.
Соответствует чему? Что не устраивает в текущем коде?Анатолий писал(а):Пытался так:- не знаю насколько это соответствует.Код: Выделить всё
stringgrid1.Cells[0,0]:=datamodule2.QuerySubProject.FieldValue(NAME_SP,false);
Перемещение по датасетам - First, Last, Next, Prior. Только FIBQuery не является датасетом. Он показывает только одну очерезную отфетченную запись. Поэтому в нем Prior смысла не имеет.Анатолий писал(а):Как перемещаться по набору данных FIBQuery или FIBDataset. Next, first и других методов нет.
А код я бы привел такой:
Код: Выделить всё
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;
Кроме того, использование StringGrid в таком режиме - это бяка. Надо использовать либо Датасеты типа TClientDataSet либо что-то другое - типа типизированных файлов, массивов рекордов и для отображения что-то типа DrawGrid - например VirtualTreeView или GridView.
Кроме того выделение памяти по одной записи в гриде может быть весьма затратной операцией если строк много - тогда лучше сделать побольше Grow что бы выделение памяти было бОльшими кусками. Ну и т.п.