Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];

Вниз

Отчет в WORDе   Найти похожие ветки 

 
silenser   (2003-04-14 09:27) [0]

Вот файл отчета который открывает ворд и вставляет отчет мне нужно чтоб он при открытии открывал заданный шаблон а у меня не открывает в чем ошибка? и как здесь можно развернуть лист Ворда на альбомный без макросов ворда или сменить шрифт и его размер
procedure TFormF1.Button1Click(Sender: TObject);
var kstr1,kstr2,urmax,urt,uro,uro1,i,i1,ii,uroi,kod_kor1,kod_kor2,x1:integer;
f:textfile;
mybookmark : TBookmark;
abs: array of record
np1,np2:integer;
k1,k2,sum1,sum2:real;
naim1,naim2:string;
l1,l2:Boolean;
end;
st,ogl,strv1,strv,indp,ishind,
str1,str2,str3,str4,str5,str6,str7,str8:string;

var Template,NewTemplate,ItemIndex:OleVariant;
begin
if FormNew.MainMenu1.Items.Items[4].Items[1].Checked then
begin
kod_kor1:=1;
kod_kor2:=2;
end
else
begin
kod_kor1:=0;
kod_kor2:=789;
end;
str3:="";
x1:=64;
str4:="|";
for i:=2 to 40 do str4:=str4+"_";
str4:=str4+"|";
if CheckListBox1.Checked[0] then
begin
x1:=x1+26;
for i:=1 to 19 do str4:=str4+"_";
str4:=str4+"|";
end;
for i:=1 to 4 do str4:=str4+"_";
str4:=str4+"|";
for i:=1 to 11 do str4:=str4+"_";
str4:=str4+"|";
if CheckListBox1.Checked[1] then
begin
x1:=x1+20;
for i:=1 to 15 do str4:=str4+"_";
str4:=str4+"|";
end;
if CheckListBox1.Checked[2] then
begin
x1:=x1+10;
for i:=1 to 10 do str4:=str4+"_";
str4:=str4+"|";
end;
if CheckListBox1.Checked[3] then
begin
x1:=x1+5;
for i:=1 to 4 do str4:=str4+"_";
str4:=str4+"|";
end;
for i:=0 to 3 do if CheckListBox1.Checked[i] then str3:=str3+"1" else str3:=str3+"0";
MmItog.Clear;
mybookmark := dm.Table1.GetBookmark;
NewForm.flagotchet:=true;
FormNew.ListBox1.Visible:=false;
FormNew.ListBox2.Visible:=false;
FormNew.DolgGrid.Visible:=false;
str7:="Итого:";
if CheckListBox1.Checked[0] then kstr1:=53 else kstr1:=40;
for i:=1 to kstr1 do str7:=str7+".";
button1.Enabled:=true;
Button2.Enabled:=true;
dm.Table1.first;
ishind:=FormNew.LBindex.Items[0] ;
ogl:=FormNew.ListBox1.Items[0];
uro:=strtoint(FormNew.LBlevel.Items[0]);
strv1:=trim(ishind);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add("select * from newpodr where lev_pod=(select max(lev_pod) from newpodr)");
Query1.Open;
urmax:=Query1.Fieldbyname("lev_pod").AsInteger;
Query1.Close;
SetLength(abs,urmax+1);
strv:="";
for i:=1 to uro do
begin
strv:=strv+copy(strv1,1,pos(" ",strv1));
strv1:=copy(strv1,pos(" ",strv1)+1,length(strv1)-pos(" ",strv1));
end;
strv1:=strv;
uro1:=length(strv);
Button1.Enabled:=false;
Memo1.Clear;
Memo2.Clear;
Memo3.Clear;
Memo4.Clear;
kstr1:=0;
kstr2:=0;
while (strv=strv1) and (not dm.Table1.Eof) do
begin
indp:=FormNew.LBindex.Items[FormNew.ListBox1.itemindex];
urt:=strtoint(FormNew.LBlevel.Items[FormNew.ListBox1.itemindex]);
abs[urt].naim1:=FormNew.ListBox1.Items[FormNew.ListBox1.itemindex];
abs[urt].naim2:=FormNew.ListBox1.Items[FormNew.ListBox1.itemindex];
abs[urt].np1:=0;
abs[urt].np2:=0;
abs[urt].k1:=0;
abs[urt].k2:=0;
abs[urt].sum1:=0;
abs[urt].sum2:=0;
abs[urt].l1:=true;
abs[urt].l2:=true;
while (FormNew.LBindex.Items[FormNew.ListBox1.itemindex]=indp) and (not dm.Table1.Eof) do
begin
if ((dm.Table1.FieldByName("kor").AsInteger=kod_kor1) or(dm.Table1.FieldByName("kor").AsInteger=kod_kor2)) and (dm.Table1.FieldByName("izm").asstring=Edit4.Text) then
begin
str2:="";
str(dm.Table1.fieldbyname("kol").asfloat:5:1,str1);
str2:=str2+str1;
str(dm.Table1.fieldbyname("okl").asfloat:9:1,str1);
str2:=str2+" "+str1;
if CheckListBox1.Checked[1] then
begin
str(dm.TableDolg.FieldByName("n5").asfloat:9:1,str1);
str2:=str2+" "+str1;
str(dm.TableDolg.FieldByName("n6").asfloat:9:1,str1);
str2:=str2+"-"+str1;
end;
if CheckListBox1.Checked[2] then
begin
str(dm.Table1.fieldbyname("nad").asfloat:9:1,str1);
str2:=str2+" "+str1;
end;
if CheckListBox1.Checked[3] then
begin
str(dm.Table1.fieldbyname("tn").AsInteger:5,str1);
str2:=str2+str1;
end;
str1:="";
str5:=trim(dm.Table1.Fieldbyname("naim").AsString);
if Length(str5)>45 then
if pos(" ",str5)<>0 then
begin
str5:=str5+" ";
while Length(str1+copy(str5,1,pos(" ",str5)-1))<=45 do
begin
str1:=str1+copy(str5,1,pos(" ",str5));
str5:=copy(str5,pos(" ",str5)+1,length(str5)-pos(" ",str5));
end;


 
silenser   (2003-04-14 09:33) [1]

Продолжение

end
else
begin
str1:=copy(str5,1,44)+"-";
str5:=copy(str5,45,length(str5)-44);
end
else
begin
str1:=str5;
str5:="";
end;
str1:=trim(str1);
for i:=length(str1)+1 to 40 do str1:=str1+" ";
if CheckListBox1.Checked[0] then
begin
str1:=str1+" "+trim(dm.Table1.Fieldbyname("fio1").AsString);
for i:=length(str1)+1 to 58 do str1:=str1+" ";
end;
str2:=str1+" "+str2;
end;
if (dm.Table1.FieldByName("kor").AsInteger=kod_kor1) and (dm.Table1.FieldByName("izm").asstring=Edit4.Text) then
begin
for i:=urt downto uro do
begin
abs[i].l1:=true;
abs[i].np1:=abs[i].np1+1;
abs[i].sum1:=abs[i].sum1+dm.Table1.fieldbyname("okl").Value*1.15;
abs[i].k1:=abs[i].k1+dm.Table1.fieldbyname("kol").Value;
end;
Memo1.Lines.Add(str2);
if Length(str5)<>0 then Memo1.Lines.Add(str5);
end;
if (dm.Table1.FieldByName("kor").AsInteger=kod_kor2) and (dm.Table1.FieldByName("izm").asstring=Edit4.Text) then
begin
for i:=urt downto uro do
begin
abs[i].l2:=true;
abs[i].np2:=abs[i].np2+1;
abs[i].k2:=abs[i].k2+dm.Table1.fieldbyname("kol").Value;
abs[i].sum2:=abs[i].sum2+dm.Table1.fieldbyname("okl").Value*1.15;
end;
Memo2.Lines.Add(str2);
if Length(str5)<>0 then Memo2.Lines.Add(str5);
end;
dm.Table1.Next;
strv1:=copy(FormNew.LBindex.Items[FormNew.ListBox1.itemindex],1,uro1);
end;
if abs[urt].np1<>0 then
begin
if (kstr1=0) and (kod_kor1=1) then
begin
ii:=trunc((x1-8)/2);
str1:="";
for i:=1 to ii do str1:=str1+" ";
Memo3.Lines.Add(str1+"ВВОДЯТСЯ");
end;
for i:=uro to urt do if Length(abs[i].naim1)<>0 then
begin
kstr1:=kstr1+1;
ii:=trunc((x1-length(abs[i].naim1))/2);
str1:="";
for i1:=1 to ii do str1:=str1+" ";
Memo3.Lines.Add(str1+abs[i].naim1);
abs[i].naim1:="";
end;
for i:=1 to memo1.lines.count do Memo3.Lines.Add(Memo1.Lines[i-1]);
kstr1:=kstr1+memo1.lines.count;
str(abs[urt].k1:5:1,str1);
str(abs[urt].sum1:9:1,str2);
Memo3.Lines.Add(str7+str1+" "+str2);
abs[urt].l1:=false;
end;
if abs[urt].np2<>0 then
begin
if (kstr2=0) and (kod_kor1=1) then
begin
ii:=trunc((x1-11)/2);
str1:="";
for i:=1 to ii do str1:=str1+" ";
Memo4.Lines.Add(str1+"ИСКЛЮЧАЮТСЯ");
end;
for i:=uro to urt do if Length(abs[i].naim2)<>0 then
begin
kstr2:=kstr2+1;
ii:=trunc((x1-length(abs[i].naim1))/2);
str1:="";
for i1:=1 to ii do str1:=str1+" ";
Memo4.Lines.Add(str1+abs[i].naim2);
abs[i].naim2:="";
end;


 
silenser   (2003-04-14 09:35) [2]


for i:=1 to memo2.lines.count do Memo4.Lines.Add(Memo2.Lines[i-1]);
kstr2:=kstr2+memo2.lines.count;
str(abs[urt].k2:5:1,str1);
str(abs[urt].sum2:9:1,str2);
Memo4.Lines.Add(str7+str1+" "+str2);
abs[urt].l2:=false;
end;
Memo1.Clear;
Memo2.Clear;
if (strtoint(FormNew.LBlevel.Items[FormNew.ListBox1.itemindex])<=urt) or (dm.Table1.Eof) then
begin
if (strv<>strv1) or (dm.Table1.Eof) then uroi:=uro else uroi:=strtoint(FormNew.LBlevel.Items[FormNew.ListBox1.itemindex]);
for i:=urt-1 downto uroi do
if (abs[i].np1>abs[i+1].np1) and (abs[i].l1) then
begin
str(abs[i].sum1:9:1,str1);
str(abs[i].k1:5:1,str2);
Memo3.Lines.Add(str7+str2+" "+str1);
abs[i].l1:=false;
end;
for i:=urt-1 downto uroi do
if (abs[i].np2>abs[i+1].np2) and (abs[i].l2) then
begin
str(abs[i].sum2:9:1,str1);
str(abs[i].k2:5:1,str2);
Memo4.Lines.Add(str7+str2+" "+str1);
abs[i].l2:=false;
end;
end;
end;
Memo1.Clear;
if memo5.lines.count<memo6.lines.count then kstr1:=memo6.lines.count else kstr1:=memo5.lines.count;
for i:=0 to kstr1 do
begin
str1:="";
ii:=x1-length(Memo5.Lines[i]+Memo6.Lines[i]);
for kstr2:=1 to ii do str1:=str1+" ";
Memo1.Lines.Add(Memo5.Lines[i]+str1+Memo6.Lines[i]);
end;
if edit4.Text="0" then
begin
edit4.Text:="";
label6.Caption:="";
end
else
begin
edit4.Text:="0";
label6.Caption:="-";
end ;

Memo1.Lines.Add("");
str1:="";
ii:=trunc((x1-length(ogl))/2);
for i:=1 to ii do str1:=str1+" ";
Memo1.Lines.Add(str1+ogl);
Memo1.Lines.Add("");
str1:="";
ii:=trunc((x1-length(label1.caption+" "+edit1.text+" "+Label6.Caption+" "+Edit4.Text))/2);
for i:=1 to ii do str1:=str1+" ";
Memo1.Lines.Add(str1+label1.caption+" "+edit1.text+" "+Label6.Caption+" "+Edit4.Text);
Memo1.Lines.Add(str1+label3.caption+" "+edit2.text+" "+label4.caption);
Memo1.Lines.Add(label2.caption+" "+edit3.text+" "+label5.caption);
str1:=" ";
for i:=1 to x1-15 do str1:=str1+"_";
Memo1.Lines.Add(str1);
str2:="|Наименование структурного подразделения|";
if CheckListBox1.Checked[0] then str2:=str2+" Ф.И.О. |";
str2:=str2+"Кол-|Должностной|";
if CheckListBox1.Checked[1] then str2:=str2+" Схема |";
if CheckListBox1.Checked[2] then str2:=str2+" Надбавка |";
if CheckListBox1.Checked[3] then str2:=str2+"Таб.|";
Memo1.Lines.Add(str2);
str2:="| Наименование должности |";
if CheckListBox1.Checked[0] then str2:=str2+" |";
str2:=str2+" во |оклад, руб.|";
if CheckListBox1.Checked[1] then str2:=str2+" Д/О, руб. |";
if CheckListBox1.Checked[2] then str2:=str2+" руб. |";
if CheckListBox1.Checked[3] then str2:=str2+" № |";
Memo1.Lines.Add(str2);
Memo1.Lines.Add(str4);
str2:="| 1 |";
kstr1:=2;
if CheckListBox1.Checked[0] then
begin
str2:=str2+" "+inttostr(kstr1)+" |";
kstr1:=kstr1+1;
end;
str2:=str2+" "+inttostr(kstr1)+" |";
kstr1:=kstr1+1;
str2:=str2+" "+inttostr(kstr1)+" |";
kstr1:=kstr1+1;
if CheckListBox1.Checked[1] then
begin
str2:=str2+" "+inttostr(kstr1)+" |";
kstr1:=kstr1+1;
end;
if CheckListBox1.Checked[2] then
begin
str2:=str2+" "+inttostr(kstr1)+" |";
kstr1:=kstr1+1;
end;
if CheckListBox1.Checked[3] then str2:=str2+" "+inttostr(kstr1)+" |";
Memo1.Lines.Add(str2);
Memo1.Lines.Add(str4);
Assignfile(f,"c:\fom\res.doc");
Rewrite(f);
for i:=1 to memo1.lines.count do Writeln(f,Memo1.Lines[i-1]);

for i:=1 to memo3.lines.count do Writeln(f,Memo3.Lines[i-1]);

for i:=1 to memo4.lines.count do Writeln(f,Memo4.Lines[i-1]);

closefile(f);
MmItog.Lines.Add(Memo1.text);
MmItog.Lines.Add(Memo4.text);
MmItog.Lines.Add(Memo3.text);

ShellExecute(Handle,nil,"c:\fom\res.doc",nil,nil,sw_restore);

NewForm.flagotchet:=false;
FormNew.ListBox1.Visible:=true;
FormNew.ListBox2.Visible:=true;
FormNew.DolgGrid.Visible:=true;
dm.Table1.GotoBookmark(myBookmark);
begin
Template := EmptyParam;
NewTemplate := True;
ItemIndex := 1;
try
SplashForm.WordApplication1.Connect;
except
MessageDlg("Word may not be installed", mtError, [mbOk], 0);
Abort;
end;
SplashForm.WordApplication1.Caption := "ОТЧЕТ";
if str3="1111" then Template := "C:\fom\Shablon\sh1.dot";
if str3="1110" then Template := "C:\fom\Shablon\sh2.dot";
if str3="1101" then Template := "C:\fom\Shablon\sh3.dot";
NewTemplate := False;
MmItog.SelectAll;
MmItog.CopyToClipboard;
FormNew.MainMenu1.Items.Items[4].Items[0].Items[0].Checked:=false;
FormNew.MainMenu1.Items.Items[4].Items[1].Checked:=false;
button1.Enabled:=true;
FormF1.Close;
ShowMessage("Закрывайте Word только после завершения работы со штатным расписанием");
SplashForm.Wordapplication1.Visible := false;
end;
end;


 
Hooch   (2003-04-14 09:55) [3]

мало исходных данных, давай ещё ! :-)


 
Anatoly Podgoretsky   (2003-04-14 10:02) [4]

Кажется ты не все привел



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.008 c
3-384
AngeL_B
2003-04-14 20:40
2003.05.01
Опять про ошибку открытия базы


14-773
blackman
2003-04-11 12:26
2003.05.01
Почему, каждого кто сидит за компом, называют программистом?


1-581
HotDog
2003-04-18 13:58
2003.05.01
Delphi + Excel


14-753
swordent
2003-04-11 18:40
2003.05.01
Мониторинг


3-465
Сергей Б.
2003-04-14 14:26
2003.05.01
IB: как получить подытог в SQL запросе?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский