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

Вниз

Документ Word не удаляется.   Найти похожие ветки 

 
KiLLiR ©   (2009-06-20 15:19) [0]

Приветствую всех мастеров и начинающих.
Прошу помочь с проблемкой...
Следующий модуль должен:
1)Скопировать исходный файл.
2)В копии произвести изменения (на места закладок в документе вставить значения из таблицы в базе данных).
3)Распечатать копию.
4)Удалить копию.


procedure TMain.PechatBitBtnClick(Sender: TObject);
var
WordApp, BookmarkName, Doc, R: OleVariant;
WordDocument: String;
begin
CopyFile(PChar(GetCurrentDir+"/Shablonii/Blank_zayavki.doc"), PChar(GetCurrentDir+"/Shablonii/Blank_zayavki1.doc"), True);
WordDocument:=GetCurrentDir+"/Shablonii/Blank_zayavki1.doc";
try
WordApp := CreateOleObject("Word.Application");
except
Application.MessageBox("Не удалось запустить приложение Microsoft Word! Проверьте наличие приложения в системе!", "Ошибка другого приложения!", MB_ICONERROR)
end;
WordApp.Documents.Open(WordDocument);
Doc := WordApp.ActiveDocument;

BookmarkName := "zayavka_num";
if Doc.Bookmarks.Exists(BookmarkName) then
begin
R := Doc.Bookmarks.Item(BookmarkName).Range;
R.InsertAfter(Main.Zayavki.FieldValues["Kod"]);
R.Font.Color := clBlack;
end;
BookmarkName := "zayavka_datetime";
if Doc.Bookmarks.Exists(BookmarkName) then
begin
R := Doc.Bookmarks.Item(BookmarkName).Range;
R.InsertAfter(Main.Zayavki.FieldValues["Data_vizova"]+" "+Main.Zayavki.FieldValues["Vremya_vizova"]);
R.Font.Color := clBlack;
end;
BookmarkName := "adres";
if Doc.Bookmarks.Exists(BookmarkName) then
begin
R := Doc.Bookmarks.Item(BookmarkName).Range;
R.InsertAfter("óë."+Main.Zayavki.FieldValues["Ulitsa"]+" ä."+Main.Zayavki.FieldValues["Dom"]+" êâ."+IntToStr(Main.Zayavki.FieldValues["Kvartira"]));
R.Font.Color := clBlack;
end;
BookmarkName := "fio";
if Doc.Bookmarks.Exists(BookmarkName) then
begin
R := Doc.Bookmarks.Item(BookmarkName).Range;
R.InsertAfter(Main.Zayavki.FieldValues["Familiya"]+" "+Main.Zayavki.FieldValues["Imya"]+" "+Main.Zayavki.FieldValues["Otchestvo"]);
R.Font.Color := clBlack;
end;
BookmarkName := "zhalobi";
if Doc.Bookmarks.Exists(BookmarkName) then
begin
R := Doc.Bookmarks.Item(BookmarkName).Range;
R.InsertAfter(Main.Zayavki.FieldValues["Zhalobi"]);
R.Font.Color := clBlack;
end;
Doc.PrintOut;
if not VarIsEmpty(WordApp) then
begin
WordApp.DisplayAlerts:=0;
WordApp.Documents.Item(1).Save;
WordApp.Quit;
BookmarkName:=Unassigned;
R:=Unassigned;
WordApp:=Unassigned;
end;
DeleteFile(GetCurrentDir+"/Shablonii/Blank_zayavki1.doc");
end;


Самый 1-ый запуск прошел как надо, все распечаталось, а вот при каждой последующей распечатке  документ "Blank_zayavki1.doc"  не затирается, а на месте закладок происходит накопление строки и вместе с тем, что мне надо распечатываются все прошлые данные - они идут один за другим.
Т.е. похоже на то, что DeletFile вообще  не работает. Файл как был, так и остается на месте.
Может есть какие то другие методы удаления файлов?


 
KiLLiR ©   (2009-06-20 18:50) [1]

Похоже решение нашел. Не надо сохранять этот файл, точнее надо его не сохранять. Посему переформулирую вопрос. Чем заменить строку

WordApp.Documents.Item(1).Save;

чтобы изменения в файл не вносились?

P.S.
Не знаю почему, но делфи мне даже подсказок не дает в этой процедуре при наборе кода. Как обычно после точки список вариантов вываливаться должен.


 
Andy BitOff ©   (2009-06-20 19:17) [2]

Word Developer Reference
Documents.Close Method
Closes the specified documents.
Syntax

expression.Close(SaveChanges, OriginalFormat, RouteDocument)

expression   Required. A variable that represents a Documents collection.

Parameters

Name Required/Optional Data Type Description
SaveChanges Optional Variant Specifies the save action for the document. Can be one of the following WdSaveOptions constants: wdDoNotSaveChanges, wdPromptToSaveChanges, or wdSaveChanges.
OriginalFormat Optional Variant Specifies the save format for the document. Can be one of the following WdOriginalFormat constants: wdOriginalDocumentFormat, wdPromptUser, or wdWordDocument.
RouteDocument Optional Variant True to route the document to the next recipient. If the document doesn"t have a routing slip attached, this argument is ignored.

© 2007 Microsoft Corporation. All rights reserved.


 
KiLLiR ©   (2009-06-20 20:07) [3]

Andy BitOff спасибо!

WordApp.Documents.Item(1).Save;

заменил на:

WordApp.Documents.Close(wdDoNotSaveChanges, wdWordDocument);

и все пошло как надо. )))


 
Andy BitOff ©   (2009-06-20 20:13) [4]

Ты же используешь OLE объест, по нему нет справки в Дельфи, да и быть не может. Запусти Ворд, нажми Alt+F11, а там уже хелп.



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

Форум: "Начинающим";
Текущий архив: 2009.08.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
15-1244745720
DeadMeat
2009-06-11 22:42
2009.08.16
Чат для локалки


2-1245142539
vitalik200888
2009-06-16 12:55
2009.08.16
печать из delphi.


15-1244925005
Юрий
2009-06-14 00:30
2009.08.16
С днем рождения ! 14 июня 2009 воскресенье


2-1245389217
smolkown
2009-06-19 09:26
2009.08.16
Мониторинг печати


15-1244877671
Dush
2009-06-13 11:21
2009.08.16
исходники к книге





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский