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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.03.2018, 21:45
Аватар для son_yaa
son_yaa son_yaa вне форума
Прохожий
 
Регистрация: 10.03.2018
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Передача данных в Exel (закрывается рабочая форма при открытии Exel)

Помогите пожалуйста. почему закрывается моя форма при открытии Exel?
Ответить с цитированием
  #2  
Старый 14.03.2018, 21:46
Аватар для son_yaa
son_yaa son_yaa вне форума
Прохожий
 
Регистрация: 10.03.2018
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от son_yaa
Помогите пожалуйста. почему закрывается моя форма при открытии Exel?
Код:
procedure TForm26.suiButton22Click(Sender: TObject);
const Months:array [1..12] of string[8]=('Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь');
Var y:Word;
i, s, s1:integer;
XL: variant;
data1, data2: string;

begin
 if (Form26.QueryPoliMes.RecordCount<=0) then begin
 Application.MessageBox('Извините, Заказов нет!','Предупреждение',MB_OK);
 end
 else if (Form26.QueryPoliMes.RecordCount>0) then begin try
    if Application.MessageBox('Вы уверены?'+#13+'Сделать расчет для Бухгалтера?',
    'Расчет Полиграфия',MB_OKCANCEL)=1 then
    Close;
    XL := CreateOleObject('Excel.Application');
    XL.DisplayAlerts := false;
    XL.WorkBooks.Add;
    XL.Visible := true;
 //   XL.Selection.WrapText:=True; // перенос по словам
    XL.Worksheets[1].PageSetup.Orientation := 1;  // Ориентация бумаги: 1=Книжная, 2=Альбомная
    XL.Worksheets[1].PageSetup.PaperSize := 9; // Указать размер бумаги. 8=А3, 9=А4, 11=А5
      XL.WorkBooks[1].WorkSheets[1].PageSetup.LeftMargin := 70;
      XL.WorkBooks[1].WorkSheets[1].PageSetup.RightMargin := 10;
      XL.WorkBooks[1].WorkSheets[1].Name := 'Расчет' ;
      XL.WorkBooks[1].WorkSheets[1].PageSetup.PrintTitleRows := '$3:$3';
      XL.WorkBooks[1].WorkSheets[1].PageSetup.PrintTitleColumns := '$A:$A';
        XL.WorkBooks[1].WorkSheets[1].Columns[1].ColumnWidth := 9;
        XL.WorkBooks[1].WorkSheets[1].Columns[2].ColumnWidth := 25;
        XL.WorkBooks[1].WorkSheets[1].Columns[3].ColumnWidth := 4;
        XL.WorkBooks[1].WorkSheets[1].Columns[4].ColumnWidth := 7;
        XL.WorkBooks[1].WorkSheets[1].Columns[5].ColumnWidth := 7;
        XL.WorkBooks[1].WorkSheets[1].Columns[6].ColumnWidth := 7;
    //    XL.WorkBooks[1].WorkSheets[1].Columns[7].ColumnWidth := 6;


           XL.WorkBooks[1].WorkSheets[1].Rows[2].Font.Bold := True;
         //  XL.WorkBooks[1].WorkSheets[1].Rows[2].Font.Bold := True;
           XL.WorkBooks[1].WorkSheets[1].Rows[2].Font.Size := 14;
           XL.WorkBooks[1].WorkSheets[1].Rows[1].Font.Color := clBlack;
           XL.WorkBooks[1].WorkSheets[1].Rows[1].Font.Size := 13;
           XL.WorkBooks[1].WorkSheets[1].Rows[1].Font.Name := 'Monotype Corsiva';
           XL.WorkBooks[1].WorkSheets[1].Rows[6].Font.Underline := True;
           XL.WorkBooks[1].WorkSheets[1].Rows[6].Font.Color := clBlack;
           XL.WorkBooks[1].WorkSheets[1].Rows[6].Font.Size := 8;
           XL.WorkBooks[1].WorkSheets[1].Rows[6].Font.Name := 'Times New Roman';

           XL.WorkBooks[1].WorkSheets[1].Cells[1, 1] := 'Расчет '+ Months[MonthOf(Now)]+' '+IntToStr(YearOf(Now))+' года';
           XL.WorkBooks[1].WorkSheets[1].Cells[2, 1] := 'ФИО/Организация';
           XL.WorkBooks[1].WorkSheets[1].Cells[3, 1] := 'Контактное Лицо';
           XL.WorkBooks[1].WorkSheets[1].Cells[3, 5] := 'Телефон';
           XL.WorkBooks[1].WorkSheets[1].Cells[4, 1] := 'Реквизиты';
           XL.WorkBooks[1].WorkSheets[1].Cells[6, 1] := 'Дата зак.';
           XL.WorkBooks[1].WorkSheets[1].Cells[6, 2] := 'Описание';
           XL.WorkBooks[1].WorkSheets[1].Cells[6, 3] := 'Колич.';
           XL.WorkBooks[1].WorkSheets[1].Cells[6, 4] := 'Стоим.';
           XL.WorkBooks[1].WorkSheets[1].Cells[6, 5] := 'Себест.';
           XL.WorkBooks[1].WorkSheets[1].Cells[6, 6] := 'Приб.';
           Form26.QueryPoliMes.First;
    s1:=0;
    For i:=0 to  Form26.QueryPoliMes.RecordCount-1 do begin
    XL.WorkBooks[1].WorkSheets[1].Cells[i+2,3]:=Form26.QueryPoliMes.FieldByName('FIO').AsString;
    XL.WorkBooks[1].WorkSheets[1].Cells[i+3,3]:=DataModule3.Tklient.FieldByName('КонтактноеЛицо').AsString;
    XL.WorkBooks[1].WorkSheets[1].Cells[i+3,6]:=DataModule3.Tklient.FieldByName('Номертел').AsString;
    XL.WorkBooks[1].WorkSheets[1].Cells[i+4,4]:=DataModule3.Tklient.FieldByName('Реквизиты').AsString;
    XL.WorkBooks[1].WorkSheets[1].Cells[i+4,4].WrapText:=True;//перенос по словам
    XL.WorkBooks[1].WorkSheets[1].Cells[i+7,1]:=Form26.QueryPoliMes.FieldByName('Data').AsString;
    XL.WorkBooks[1].WorkSheets[1].Cells[i+7,2]:=Form26.QueryPoliMes.FieldByName('Описание').AsString;
    XL.WorkBooks[1].WorkSheets[1].Cells[i+7,2].WrapText:=True;//перенос по словам
    XL.WorkBooks[1].WorkSheets[1].Cells[i+7,3]:=Form26.QueryPoliMes.FieldByName('КолВо').AsString;
   // XL.WorkBooks[1].WorkSheets[1].Cells[i+7,3]:=Form26.QueryPoliMes.FieldByName('КолВо').AsInteger;
    XL.WorkBooks[1].WorkSheets[1].Cells[i+7,4]:=Form26.QueryPoliMes.FieldByName('Стоимость').AsCurrency;
    XL.WorkBooks[1].WorkSheets[1].Cells[i+7,5]:=Form26.QueryPoliMes.FieldByName('Себестоимость').AsCurrency;
    XL.WorkBooks[1].WorkSheets[1].Cells[i+7,6]:=Form26.QueryPoliMes.FieldByName('Прибыль').AsCurrency;
   end;
   except
end;
 end;

end;
Админ: Пользуемся тегами при оформлении кода!

Последний раз редактировалось Admin, 14.03.2018 в 21:49.
Ответить с цитированием
  #3  
Старый 15.03.2018, 00:59
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Оффтоп:
Цитата:
Сообщение от son_yaa
...почему закрывается моя форма при открытии Exel?
Код:
procedure TForm26.suiButton22Click(Sender: TObject);
...
Оу, какие же циклопические портянки создаются, Дарвин, со своей теорией природной простоты отдыхает: форма26 и баттонка22нажалась,- была у меня когда-то, давно сборка одна, с номерами кнопок аж больше 101-го, но форм всёж было намного меньше :-)

Потеме:

Видимо в таком куске ответ
Код:
...
if Application.MessageBox('Вы уверены?'+#13+'Сделать расчет для Бухгалтера?',
    'Расчет Полиграфия',MB_OKCANCEL)=1 then
    Close;
...
очевидно ведь, закрывается форма а не диалог - он уже закрыт, раз результат вернулся
Ответить с цитированием
  #4  
Старый 16.03.2018, 01:25
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 339
Версия Delphi: 10.4
Репутация: 429
Сообщение

Хочу еще добавить, что Excel лучше всего показывать (XL.Visible := true) после того, как в него будут переданы все данные. Это позволит увеличить быстродействие.

P.S.: если у Вас все данные хранятся в базе данных, то разумнее всего, было бы научиться работать с конструкторами отчетов (FastReport, коим пользуюсь я сам, QuickReport).
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.

Последний раз редактировалось Kailon, 16.03.2018 в 01:30.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter