Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 14.05.2008, 12:02
niqx niqx вне форума
Прохожий
 
Регистрация: 10.05.2008
Сообщения: 11
Репутация: 10
По умолчанию

Еще раз спасибо, но мне нужно как просто вызвать и открыть на экране экселевский документ из дельфи. Макросы там все сами сделают...
Ответить с цитированием
  #17  
Старый 15.05.2008, 09:53
Аватар для Thrasher
Thrasher Thrasher вне форума
Illuminati
 
Регистрация: 06.03.2008
Адрес: Крым, г. Симферополь
Сообщения: 348
Репутация: 8808
По умолчанию

Так тебе нужно открыть файл готовый?
Тогда делай так:
ShellExecute(Application.Handle,nil,PChar(DocPath) ,nil,nil,SW_SHOWMAXIMIZED);
__________________
Хорошо написанная программа не требует документации
ICQ 9-184-668.
Ответить с цитированием
  #18  
Старый 15.05.2008, 11:05
niqx niqx вне форума
Прохожий
 
Регистрация: 10.05.2008
Сообщения: 11
Репутация: 10
По умолчанию

Он ругается на ShellExecute... Нужно что-то в uses добавить? или еще что?
И что вместо nil можно написать?
Ответить с цитированием
  #19  
Старый 15.05.2008, 11:50
k@Z@k k@Z@k вне форума
Новичок
 
Регистрация: 31.07.2007
Сообщения: 55
Репутация: 12
По умолчанию

uses
ShellAPI;
Ответить с цитированием
  #20  
Старый 15.05.2008, 13:00
niqx niqx вне форума
Прохожий
 
Регистрация: 10.05.2008
Сообщения: 11
Репутация: 10
По умолчанию

большое спасибо!
Ответить с цитированием
  #21  
Старый 15.05.2008, 14:50
niqx niqx вне форума
Прохожий
 
Регистрация: 10.05.2008
Сообщения: 11
Репутация: 10
По умолчанию

У меня еще два вопроса.
1. Предположим есть простенькая табличка dbgrid, связанная с аксэссовской базой. В ней пять строк и два столбца - число и количество.
Каким способом можно посчитать сумму элементов в столбце количество? SQL - запросом или кодом дельфи? Можно кратенько объяснить?
2. Каким образом извлечь из столбца "число" (в смысле там дата) только месяц, чтобы потом вывести на экран результаты только за май, например?
Надеюсь на вашу помощь...
Ответить с цитированием
  #22  
Старый 15.05.2008, 19:55
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

1. Кидаете на форму ADOQuery и пишем такой код.
Код:
  With ADOQuery1 do
  begin
     Close;
     SQL.Clear;
     SQL.Add('SELECT SUM(kol) FROM main');//поле kol - количество (пишете ваше название)
     Open;
  end;
  Label1.Caption:=ADOQuery1.Fields[0].AsString;//Выводим результат суммирования в Label

2. Напишу частный случай.
Код:
With ADOQuery2 do
  begin
     Close;
     SQL.Clear;
     With Parameters.AddParameter do
     begin
         Name:= 'dt1';
         DataType:=ftDateTime;
         Value:='01.05.2004';
     end;
     With Parameters.AddParameter do
     begin
         Name:= 'dt2';
         DataType:=ftDateTime;
         Value:='31.05.2004';
     end;
     SQL.Add('SELECT * FROM main WHERE date> :dt1 AND date< :dt2');
     Open;
  end;
Подключить этот ADOQuery к DBGrid.
А потом можно довести это безобразие до ума.
Ответить с цитированием
  #23  
Старый 17.05.2008, 13:07
niqx niqx вне форума
Прохожий
 
Регистрация: 10.05.2008
Сообщения: 11
Репутация: 10
По умолчанию

Огромное спасибо! Помогло!
И еще последний вопрос. На основании второго случая, что вы написали, у меня получилась вторая таблица, которая, судя по всему нигде не хранится, в которой выводятся результаты за выбранный в комбобоксе месяц. Теперь на основании этого мне нужно сделать отчет именно за выбранный месяц.
Отчеты я делал, но здесь я в тупике. Не знаю что указывать в DataSet QuickRep'a и его компонентов. Подскажите плиз!
И вот еще - не подскажете почему объект TQRExpr не видет никаких таблиц при нажатии на кнопку Database Field? Как мне сделать так, чтобы он в отчете в каждой строчке суммировал значения в 10 столбцах слева от самого объекта?

Последний раз редактировалось niqx, 17.05.2008 в 13:47.
Ответить с цитированием
  #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;


Последний раз редактировалось MegaPiha, 19.05.2008 в 22:18.
Ответить с цитированием
  #25  
Старый 22.05.2008, 07:21
niqx niqx вне форума
Прохожий
 
Регистрация: 10.05.2008
Сообщения: 11
Репутация: 10
По умолчанию

Спасибо, но это не совсем то, что мне нужно... Особенно не знаю как сделать это в ситуации, которую я описал в начале предыдущего моего поста...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:03.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter