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

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
Анатолий
Сообщения: 4
Зарегистрирован: 04 май 2005, 15:01

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

Сообщение Анатолий » 08 май 2005, 03:56

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

fraks
Сообщения: 12
Зарегистрирован: 03 дек 2004, 15:41

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

Сообщение fraks » 10 май 2005, 10:02

Анатолий писал(а):Буду очень ждать ответа......
Блин, чего его ждать-то? Надо читать хелпы и книжки. И будет все ясно.
Анатолий писал(а):Как занести полученную из 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 что бы выделение памяти было бОльшими кусками. Ну и т.п.

Ответить