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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2008, 10:50   #1
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию своеобразный отчёт из бд

начал работать с отчётами, соответственно возникает пару влпросов
вот кусок кода отчёта
Код:
procedure TForm2.spSkinButton1Click(Sender: TObject);
var
 XLApp,Colum,Sheet:Variant;
 index,i:Integer;
 name:string;
begin

 XLApp:= CreateOleObject('Excel.Application');
 XLApp.Visible:=true;
 XLApp.Workbooks.Add(-4167);
 XLApp.Workbooks[1].WorkSheets[1].Name:='Заказ';
 Colum:=XLApp.Workbooks[1].WorkSheets['Заказ'].Columns;
 Colum.Columns[1].ColumnWidth:=60;
 Colum.Columns[2].ColumnWidth:=20;

 Colum:=XLApp.Workbooks[1].WorkSheets['Заказ'].Rows;
 Colum.Rows[2].Font.Bold:=true;
 Colum.Rows[1].Font.Bold:=true;
 Colum.Rows[1].Font.Size:=13;

 Sheet:=XLApp.Workbooks[1].WorkSheets['Заказ'];
 Sheet.Cells[1,1]:='Заказ';
 Sheet.Cells[2,1]:='Название';
 Sheet.Cells[2,2]:='Цена';

 index:=3;
  Sheet.Cells[index,1]:=DBText1.Caption;
  Sheet.Cells[index,2]:=DBText2.Caption;
end;
1) в мой отчёт я добавляю только ту запись, которая выбранная в данный момент в DBGrid'e. Но каждый раз когда я выбираю нужную запись и нажимаю на кнопку откуывается новый Excel. Как дописывать в уже отрытый, а если такового нету, то открыть?

2) в Sheet.Cells[index,2] я добавляю текст из DBText2.Caption, который имеет вид $345, но в Excel вставляется в виде 345р., т.е. он распознаёт это поле как денежное. Как запретить ему это делать?

3) После завершения работы с Excel'ем я сохраняю файл и выхожу, но Excel остаётся висеть в процессах. Как его оттуда кикнуть при завершении работы с программой (делфи)?
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 12.06.2008, 10:57   #2
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

Цитата:
3) После завершения работы с Excel'ем я сохраняю файл и выхожу, но Excel остаётся висеть в процессах. Как его оттуда кикнуть при завершении работы с программой (делфи)?
А кто по твоему будет делать XLApp.Free; , компилятор не такой умный как ты...

Цитата:
2) в Sheet.Cells[index,2] я добавляю текст из DBText2.Caption, который имеет вид $345, но в Excel вставляется в виде 345р., т.е. он распознаёт это поле как денежное. Как запретить ему это делать?
Попробуй назначить тип ячейки текст... Просмотри в гугле, там это точно есть, я помню я тоже такое делал, я там искал.

Цитата:
1) в мой отчёт я добавляю только ту запись, которая выбранная в данный момент в DBGrid'e. Но каждый раз когда я выбираю нужную запись и нажимаю на кнопку откуывается новый Excel. Как дописывать в уже отрытый, а если такового нету, то открыть?
А почему ему бы не открываться новому ты же пишишь
Код:
XLApp:= CreateOleObject('Excel.Application');  
XLApp.Visible:=true;
вот он и создаёться новый. Надо его где то создать один раз, а потом просто к нему обращаться.
Нет невыполнимых задач, всё дело времени...
D-mon вне форума Ответить с цитированием
Старый 12.06.2008, 11:04   #3
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

3) спасибо, понял
2) в бд это поле текстовое
1) так вот это я и хочу узнать, как поставить проверку, открыт этот Excel или нет. тут просто такая ситуация - я же по одной записи добавляю, т.е. сохраняю документ, когда добавлю все нужные мне записи.
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 12.06.2008, 11:19   #4
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

c третим пунктом возники проблемы. у меня главная форма - первая, а эксель открывается на второй форме. Как умудриться освободить XLApp из первой формы?
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 12.06.2008, 11:22   #5
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

Цитата:
2) в бд это поле текстовое
а в экселе та ячейка в которую вставляешь тоже текстовая или какая?
Цитата:
так вот это я и хочу узнать, как поставить проверку, открыт этот Excel или нет.
E := Findwindow(nil, <caption window>);
Нет невыполнимых задач, всё дело времени...
D-mon вне форума Ответить с цитированием
Старый 12.06.2008, 11:29   #6
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

Цитата:
Сообщение от D-mon Посмотреть сообщение
а в экселе та ячейка в которую вставляешь тоже текстовая или какая?
новый файл excelя из делфи создаётся, я не изменяю там ничего. код создания выше.

с файндвиндоу попробую разобраться
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 12.06.2008, 11:33   #7
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

Цитата:
новый файл excelя из делфи создаётся, я не изменяю там ничего. код создания выше.
Ну так не создавай его каждый раз по нажатию на кнопку, пользуйся уже открытим, или открывай(создавай) новый если он не открыт.
Нет невыполнимых задач, всё дело времени...
D-mon вне форума Ответить с цитированием
Старый 12.06.2008, 11:36   #8
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

ты имеешь в виду создать вручную файл. открывать его. заполнять. сохранять в другой?
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Старый 12.06.2008, 11:40   #9
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

Ты как про меня такое мог подумать?
Цитата:
ты имеешь в виду создать вручную файл. открывать его. заполнять. сохранять в другой?
Зачем те в таком случае делфи. Программно всё это надо делать.
Нет невыполнимых задач, всё дело времени...
D-mon вне форума Ответить с цитированием
Старый 12.06.2008, 11:45   #10
TaTT DoGG
Форумчанин
 
Аватар для TaTT DoGG
 
Регистрация: 25.04.2008
Сообщений: 476
По умолчанию

как мне открыть файл tm.xls и присвоить его переменной XLApp
Life if about choices
Make the right choice
TaTT DoGG вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
xlReport (отчёт) SoLL Компоненты Delphi 1 16.07.2008 15:01
Последняя запись из DBGrid в отчёт Raccoon Помощь студентам 2 25.05.2008 13:59
Своеобразный запрос или фильтр ГОСЕАН БД в Delphi 5 27.12.2007 14:52
Отчёт в Word VladimirAleks Общие вопросы Delphi 1 13.09.2007 17:13