Cannot create a document .doc from a template OLE2 problem [message #86645] |
Fri, 15 October 2004 15:23 |
Roger Simms
Messages: 14 Registered: May 2004
|
Junior Member |
|
|
I am unable to save a .doc file from a template using save as from A word document. The form opens a word template and populates the documents bookmarks and saves the file in a default directory with a file name specified form an oracle table however when the user tries to save the document to another folder the option to save it as a doc instead of a template is not available. I can not work out if it is the opening of the template or the saving procedure that is causing the problem I have included the whole package below crossing my fingers that someone could shed some light on the problem
PACKAGE BODY word_document IS
application OLE2.OBJ_TYPE;
documents OLE2.OBJ_TYPE;
document OLE2.OBJ_TYPE;
bookmarks OLE2.OBJ_TYPE;
--forward declaration.
PROCEDURE replace_bookmark( ident IN VARCHAR2, val IN VARCHAR2);
/*
* Function INIT RETURNs BOOLEAN
* TRUE - Successful
* FALSE - error occured
*/
FUNCTION init(filename IN VARCHAR2)
RETURN BOOLEAN
IS
BEGIN
init(filename);
RETURN true;
EXCEPTION
WHEN OTHERS THEN
RETURN FALSE;
END INIT;
/*
* PROCEDURE INIT
* RAISE EXCEPTION ON ERROR
*/
PROCEDURE init(filename IN VARCHAR2)
IS
arglist OLE2.LIST_TYPE;
BEGIN
BEGIN
application := OLE2.Create_Obj('Word.Application');
EXCEPTION
WHEN OLE2.OLE_ERROR THEN
RAISE word_failed;
END;
BEGIN
documents := OLE2.Get_Obj_Property(application,'documents');
arglist := OLE2.create_arglist;
ole2.add_arg(arglist,filename);
document := OLE2.Invoke_obj(documents,'open',arglist);
OLE2.Destroy_Arglist(arglist);
EXCEPTION
WHEN OLE2.OLE_ERROR THEN
RAISE word_doc_not_created;
END;
BEGIN
bookmarks := OLE2.Get_Obj_Property(document,'bookmarks');
EXCEPTION
WHEN OLE2.OLE_ERROR THEN
RAISE word_doc_has_no_bookmarks;
END;
END init;
FUNCTION save(filename IN VARCHAR2)
RETURN BOOLEAN
IS
BEGIN
save(filename);
RETURN TRUE;
EXCEPTION
when OTHERS THEN
RETURN FALSE;
END;
PROCEDURE save(filename IN VARCHAR2)
IS
arglist OLE2.LIST_TYPE;
BEGIN
--####SAVE the new file
arglist := OLE2.create_arglist;
ole2.add_arg(arglist,filename);
OLE2.Invoke(document,'saveAs',arglist);
OLE2.Destroy_Arglist(arglist);
EXCEPTION
WHEN OLE2.OLE_ERROR THEN
RAISE word_doc_not_saved;
END;
PROCEDURE setVisible(b IN BOOLEAN)
IS
tmp OLE2.OBJ_TYPE;
BEGIN
--#Make Word visible
OLE2.set_Property(application,'visible',b);
-- 'ActiveWindow.ActivePane.View.ShowAll = TRUE'
tmp := OLE2.get_Obj_property(application,'ActiveWindow');
tmp := OLE2.get_Obj_property(tmp,'ActivePane');
tmp := OLE2.get_Obj_property(tmp,'View');
OLE2.set_Property(tmp,'ShowAll','FALSE');
EXCEPTION
WHEN OTHERS THEN NULL;
END;
PROCEDURE finish
IS BEGIN
--#Clean up references
OLE2.Release_Obj(bookmarks);
OLE2.Release_Obj(document);
OLE2.Release_Obj(documents);
OLE2.Release_Obj(application);
EXCEPTION
WHEN OLE2.OLE_ERROR THEN
NULL;
END;
PROCEDURE quit
IS
BEGIN
IF application IS NOT NULL THEN
OLE2.Invoke(application,'Quit');
END IF;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
PROCEDURE process_bookmarks(mark_data iss_report.data_table)
IS
data_label VARCHAR2(255);
data_value VARCHAR2(2000);
BEGIN
FOR loop_index in mark_data.first .. mark_data.last LOOP
replace_bookmark(
mark_data(loop_index).data_name,
mark_data(loop_index).data_value);
END LOOP;
END;
PROCEDURE replace_bookmark
(
ident IN VARCHAR2,
val IN VARCHAR2)
IS
arglist OLE2.LIST_TYPE;
bookmark OLE2.OBJ_TYPE;
BEGIN
arglist := OLE2.create_arglist;
ole2.add_arg(arglist,ident);
bookmark := OLE2.Invoke_Obj(bookmarks,'Item',arglist);
OLE2.Destroy_Arglist(arglist);
OLE2.set_property(bookmark,'Range',val);
EXCEPTION
-- ignore all errors
WHEN OTHERS THEN NULL;
END;
PROCEDURE setStyleSize(stylename IN VARCHAR2, fontsize IN PLS_INTEGER)
IS
styles OLE2.OBJ_TYPE;
style OLE2.OBJ_TYPE;
font OLE2.OBJ_TYPE;
arglist OLE2.LIST_TYPE;
BEGIN
styles := OLE2.get_Obj_property(document,'styles');
arglist := OLE2.create_arglist;
ole2.add_arg(arglist,stylename);
style := OLE2.Invoke_Obj(styles,'Item',arglist);
OLE2.Destroy_Arglist(arglist);
font := OLE2.get_Obj_property(style,'font');
OLE2.set_property(font,'size',fontsize);
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
END;
|
|
|