Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2007, 02:29   #1
reiserfs
 
Регистрация: 11.11.2007
Сообщений: 5
По умолчанию Просветите по TOCIQuery

Добрый день.
Есть обьект типа TOCIQuery.
Как из него извлечь результат Select после execQuery?
Хотелось бы увидеть пример.
reiserfs вне форума Ответить с цитированием
Старый 14.11.2007, 03:59   #2
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

я так думаю как обычно: соединить TOCIQuery с TDataSources, а TDataSources соединить с гридом. при выполнении запроса и открытия DataSet наборданых который верныл запрос автоматически отобразится в гриде...
dron-s вне форума Ответить с цитированием
Старый 14.11.2007, 11:13   #3
reiserfs
 
Регистрация: 11.11.2007
Сообщений: 5
По умолчанию

Мне надо результаты выкидывать в excel а не в grid.
Вот поэтому и спросил.
reiserfs вне форума Ответить с цитированием
Старый 14.11.2007, 15:42   #4
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

Цитата:
Мне надо результаты выкидывать в excel а не в grid.
в любом случае ты первоначально данные отображаешь в гриде...
а перекинуть можно очень легко
Код:
Procedure SendtoExcel(ShFile: String; Querys: TQuery);
Var
   ExcelApp, Workbook, Range, Cell1, Cell2, ArrayData: Variant;
   BeginCol, BeginRow, j: integer;
   RowCount, ColCount: Integer;
Begin
   BeginCol := 1;
   BeginRow := 3;
   RowCount := Querys.RecordCount;
   ColCount := Querys.FieldDefs.Count;
   ExcelApp := CreateOleObject('Excel.Application');
   ExcelApp.Application.EnableEvents := false;

   Workbook := ExcelApp.WorkBooks.Add(ShFile);
   ArrayData := VarArrayCreate([1, RowCount, 1, ColCount], varVariant);

   Querys.DisableControls;
   Querys.First;
   While Not Querys.eof Do
   Begin
       For J := 1 To Querys.FieldDefs.Count Do
       Begin
           ArrayData[Querys.RecNo, J] :=
            Querys.FieldbyName(Querys.FieldDefs.Items[j - 1].DisplayName).value;
       End;
       Querys.Next;
   End;

   Querys.EnableControls;
   Cell1 := WorkBook.WorkSheets[1].Cells[BeginRow, BeginCol];
   Cell2 := WorkBook.WorkSheets[1].Cells[BeginRow + RowCount - 1,
    BeginCol + ColCount - 1];
   Range := WorkBook.WorkSheets[1].Range[Cell1, Cell2];
   Range.Value := ArrayData;
   ExcelApp.Visible := True;
End;
dron-s вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц