Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Delphi] Код программы


Автор: Отис 8.6.2014, 15:25
Плиззз кто нибудь может по подробней написать комментарий к следующему коду

Код

const
wdAlignParagraphCenter = 1;
wdAlignParagraphLeft = 0;
wdAlignParagraphRight = 2;
wdLineStyleSingle = 1;
 
 
procedure TForm4.Image4Click(Sender: TObject);
var
summ,count,i,k:integer;
MSWord,wdDoc,wdTable,wdRng: Variant;
arr:array[0..3] of string;
Bm : TBookMark;
begin
arr[0]:='№';
arr[1]:='Название блюда';
arr[2]:='Порция';
arr[3]:='Цена';
try
MsWord := CreateOleObject('Word.Application');
MsWord.Visible := True;
    //MsWord := GetActiveOleObject('Word.Application');
except
end;
  ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT SUM(Цена) FROM Заказ_основного_меню WHERE Статус=true and Дата="'+FormatDateTime('dd.mm.yyyy', Now)+'"');
  ADOQuery1.Open;
summ:=ADOQuery1.Fields[0].AsInteger;
  ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Заказ_основного_меню WHERE Статус=true and Дата="'+FormatDateTime('dd.mm.yyyy', Now)+'"');
  ADOQuery1.Open;
count:=ADOQuery1.RecordCount;
wdDoc:=MSWord.Documents.Add;
wdRng:= wdDoc.Content;
wdRng.Start := wdRng.End;
wdRng.InsertAfter('Дата: '+FormatDateTime('dd.mm.yyyy', Now)+#13);
wdRng.InsertAfter('Список заказов(Обычное меню): '+#13);
  //wdRng.InsertAfter('За сегодняшний день('+FormatDateTime('dd.mm.yyyy', Now)+') продано '+inttostr(count)+' товаров'+#13);
wdRng.ParagraphFormat.Reset;
wdRng.ParagraphFormat.Alignment := wdAlignParagraphCenter;
  wdRng.Font.Reset;
wdRng.Font.Size := 14;
wdRng.Font.Bold := False;
wdTable := wdDoc.Tables.Add(wdRng.Characters.Last, 2, 4);
wdTable.columns.item(1).Width:=22;
wdTable.columns.item(2).Width:=200;
wdTable.columns.item(3).Width:=50;
wdTable.columns.item(4).Width:=40;
wdTable.Borders.InsideLineStyle := wdLineStyleSingle;
wdTable.Borders.OutsideLineStyle := wdLineStyleSingle;
    wdRng.ParagraphFormat.Reset;
wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft;
wdRng := wdTable.Rows.Item(1).Range;
wdRng.ParagraphFormat.Alignment := wdAlignParagraphCenter;
wdRng.Font.Size := 10;
wdRng.Font.Bold := True;
wdRng := wdTable.Rows.Item(2).Range;
wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft;
wdRng.Font.Size := 10;
wdRng.Font.Bold := False;
for i := 0 to High(arr)-Low(arr) do
wdTable.Cell(1, i + 1).Range.Text := arr[i];
    ADOQuery1.DisableControls;
Bm := ADOQuery1.GetBookMark;
    ADOQuery1.First;
i := 1;
while not ADOQuery1.Eof do begin
Inc(i);
k:=k+1;
if i > 2 then wdTable.Rows.Add;
wdTable.Cell(i, 1).Range.Text := inttostr(k);
wdTable.Cell(i, 2).Range.Text := ADOQuery1.FieldByName('Наименование_блюда').AsString;
wdTable.Cell(i, 3).Range.Text := ADOQuery1.FieldByName('Порция').AsString;
wdTable.Cell(i, 4).Range.Text := ADOQuery1.FieldByName('Цена').AsString;
      ADOQuery1.Next;
end;
ADOQuery1.GotoBookMark(Bm);
    ADOQuery1.EnableControls;
      ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT SUM(Цена) FROM Заказ_банкетного_меню WHERE Статус=true and Дата="'+FormatDateTime('dd.mm.yyyy', Now)+'"');
       ADOQuery1.Open;
summ:=summ+ADOQuery1.Fields[0].AsInteger;
    ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Заказ_банкетного_меню WHERE Статус=true and Дата="'+FormatDateTime('dd.mm.yyyy', Now)+'"');
    ADOQuery1.Open;
count:=count+ADOQuery1.RecordCount;
wdRng := wdDoc.Content;
wdRng.Start := wdRng.End;
wdRng.InsertAfter(#13#10);
wdRng.InsertAfter('Списокзаказов(Банкетноеменю): '+#13);
  //wdRng.InsertAfter('Засегодняшнийдень('+FormatDateTime('dd.mm.yyyy', Now)+') продано '+inttostr(count)+' товаров'+#13);
  wdRng.ParagraphFormat.Reset;
wdRng.ParagraphFormat.Alignment := wdAlignParagraphCenter;
  wdRng.Font.Reset;
wdRng.Font.Size := 14;
wdRng.Font.Bold := False;
wdTable := wdDoc.Tables.Add(wdRng.Characters.Last, 2, 4);
wdTable.columns.item(1).Width:=22;
wdTable.columns.item(2).Width:=200;
wdTable.columns.item(3).Width:=50;
wdTable.columns.item(4).Width:=40;
wdTable.Borders.InsideLineStyle := wdLineStyleSingle;
wdTable.Borders.OutsideLineStyle := wdLineStyleSingle;
    wdRng.ParagraphFormat.Reset;
wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft;
wdRng := wdTable.Rows.Item(1).Range;
wdRng.ParagraphFormat.Alignment := wdAlignParagraphCenter;
wdRng.Font.Size := 10;
wdRng.Font.Bold := True;
wdRng := wdTable.Rows.Item(2).Range;
wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft;
wdRng.Font.Size := 10;
wdRng.Font.Bold := False;
for i := 0 to High(arr)-Low(arr) do
wdTable.Cell(1, i + 1).Range.Text := arr[i];
    ADOQuery1.DisableControls;
Bm := ADOQuery1.GetBookMark;
    ADOQuery1.First;
i := 1;
while not ADOQuery1.Eof do begin
Inc(i);
k:=k+1;
if i > 2 then wdTable.Rows.Add;
wdTable.Cell(i, 1).Range.Text := inttostr(k);
wdTable.Cell(i, 2).Range.Text := ADOQuery1.FieldByName('Наименование_блюда').AsString;
wdTable.Cell(i, 3).Range.Text := ADOQuery1.FieldByName('Порция').AsString;
wdTable.Cell(i, 4).Range.Text := ADOQuery1.FieldByName('Цена').AsString;
      ADOQuery1.Next;
end;
ADOQuery1.GotoBookMark(Bm);
    ADOQuery1.EnableControls;
wdRng := wdDoc.Content;
wdRng.Start := wdRng.End;
wdRng.InsertAfter(#13#10);
wdRng.InsertAfter('Всегозаказов: '+inttostr(count)+#13);
wdRng.InsertAfter('Итоговаясумма: '+inttostr(summ)+' тенге');
      wdRng.ParagraphFormat.Reset;
wdRng.ParagraphFormat.Alignment := wdAlignParagraphLeft;
  wdRng.Font.Reset;
wdRng.Font.Size := 14;
wdRng.Font.Bold := False;
MSWord.Application.PrintOut(false);
MSWord.Documents.Close(false);
  MSWord.quit;
end;



M
Poseidon
Используйте кнопку user posted image

Автор: bems 8.6.2014, 17:59
Для домашних заданий, контрольных и курсовых существует http://forum.vingrad.ru/Vingrad-help-center.html.

Тема перенесена! 

Автор: Данкинг 8.6.2014, 19:27
Там идёт заполнение таблички в файле WORD из какой-то таблицы, к которой программа подключается через ADO.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)