Показать сообщение отдельно
  #24  
Старый 18.05.2008, 16:55
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Цитата:
Сообщение от niqx
Огромное спасибо! Помогло!
И еще последний вопрос. На основании второго случая, что вы написали, у меня получилась вторая таблица, которая, судя по всему нигде не хранится, в которой выводятся результаты за выбранный в комбобоксе месяц. Теперь на основании этого мне нужно сделать отчет именно за выбранный месяц.
Отчеты я делал, но здесь я в тупике. Не знаю что указывать в DataSet QuickRep'a и его компонентов. Подскажите плиз!
С QuickRep я не работал, всегда пользуюсь выводом в Excel.
Вот пример в дополнение к вышепоказанным.

Код:
procedure TFind.ExButClick(Sender: TObject);
var
    XL, Cell1, Cell2, ArrayData: Variant;
    RowCount: integer;
    BeginCol, BeginRow,i,ColCount:byte;
begin
    BeginCol := 1;  // Начальные координаты ячейки
    BeginRow := 3;
    RowCount := DM.Query1.RecordCount; //Количество строк
    ColCount := 3; //Количество столбцов
    XL := CreateOleObject('Excel.Application');  //создаем Excel
    XL.Application.EnableEvents := false;  // Отключаем реакцию Excel на события (для ускорения)
    XL.WorkBooks.Add;   //  Добавляем книгу 
    XL.Rows.Rows[2].Font.Bold:=true; //жирный шрифт
    XL.Rows.Rows[2].Font.Size:=10; //размер шрифта
    XL.Rows.Rows[2].WrapText := True; //перенос текста по словам
    XL.Rows.Rows[2].HorizontalAlignment := 3;//Выравнивание по центру по горизонтали
    XL.Rows.Rows[2].VerticalAlignment := 2;//Выравнивание по центру по вертикали
    XL.Cells[2,1]:= '№';//делаем шапку таблицы
    XL.Cells[2,2]:='Наименование';
    XL.Cells[2,3]:='Примечание’;
    XL.Columns.Columns[1].ColumnWidth:=7;//устанавливаем ширину столбцов
    XL.Columns.Columns[2].ColumnWidth:=29;
    XL.Columns.Columns[3].ColumnWidth:=29;

    ArrayData := VarArrayCreate([1, RowCount, 1, ColCount], varVariant); // созданем вариантный массив для заполнения данных из запроса

    DM.Query1.First;
    for i := 1 to RowCount do  
    begin
        ArrayData[i,1] := DM.Query1['id'];
        ArrayData[i,2] := DM.Query1['name'];
        ArrayData[i,3] := DM.Query1['note'];
        DM.Query1.Next;
    end;
    Cell1 := XL.Cells[BeginRow-1, BeginCol];       // левая верхняя ячейка области в которую будем выводить данные
    Cell2 := XL.Cells[BeginRow+RowCount-1, BeginCol + ColCount-1];//Правая нижняя ячейка области
    XL.Range[XL.Cells[BeginRow, BeginCol], Cell2].Value := ArrayData; //вывод данных
    XL.Visible := true;
end;

Ответить с цитированием