Bom dia galera!
Estou com um problema aqui, as vezes vocês conseguem me ajudar. É o seguinte: tenho uma tela aqui onde vou colocar um botão para gerar um documento do word, tipo um artigo, trabalho escolar, etc. O problema é que esse documento tem que seguir algumas formatações específicas, por isso preciso que seja possível usar as funcionalidades do word. Utilizo o forms 6i e gostaria de saber se ele me dá essa possibilidade ou se existe algum complemento que me possibilite fazer isso. Se sim, como faço? Se não, alguém conhece alguma ferramenta que me dê essa possibilidade?
Desde já agradeço.
Gerar documento word através do Forms
-
- Rank: Estagiário Pleno
- Mensagens: 4
- Registrado em: Qua, 15 Jun 2011 5:56 pm
- Localização: PATOS DE MINAS
José Borges
Analista de Sistemas / Programador PL/SQL
Analista de Sistemas / Programador PL/SQL
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother,
Dá uma olhada aqui no fórum mesmo, por OLE2.
Achei um código (abaixo) na internet, procurando por "Ole2 word" e, em alguns resultados, achei este código abaixo:
Acho que através deste exemplo , dá pra modificar alguns elementos dele.
Fonte: Link
Qualquer coisa, manda pra gente.
Dá uma olhada aqui no fórum mesmo, por OLE2.
Achei um código (abaixo) na internet, procurando por "Ole2 word" e, em alguns resultados, achei este código abaixo:
DECLARE
hApplication OLE2.OBJ_TYPE;
hDocuments OLE2.OBJ_TYPE;
hDocument OLE2.OBJ_TYPE;
hSelection OLE2.OBJ_TYPE;
hRange OLE2.OBJ_TYPE;
hTables OLE2.OBJ_TYPE;
hTable OLE2.OBJ_TYPE;
hCells OLE2.OBJ_TYPE;
hRows OLE2.OBJ_TYPE;
hShading OLE2.OBJ_TYPE;
hParagraphFormat OLE2.OBJ_TYPE;
hFont OLE2.OBJ_TYPE;
args OLE2.LIST_TYPE;
---- wdDefaultTableBehavior Class members
wdWord8TableBehavior CONSTANT number(5) := 0; --Default
wdWord9TableBehavior CONSTANT number(5) := 1;
---- wdAutoFitBehavior Class members
---- (only works when DefaultTableBehavior = wdWord9TableBehavior)
wdAutoFitContent CONSTANT number(5) := 1;
wdAutoFitFixed CONSTANT number(5) := 0;
wdAutoFitWindow CONSTANT number(5) := 2;
---- wdUnits Class members
wdCell CONSTANT number(5) := 12;
wdCharacter CONSTANT number(5) := 1; --Default
wdWord CONSTANT number(5) := 2;
wdSentence CONSTANT number(5) := 3;
wdLine CONSTANT number(5) := 5;
---- wdMovementType Class members
wdExtend CONSTANT number(5) := 1;
wdMove CONSTANT number(5) := 0; --Default
---- WdParagraphAlignment Class members
wdAlignParagraphCenter CONSTANT number(5) := 1;
wdAlignParagraphLeft CONSTANT number(5) := 0;
wdAlignParagraphRight CONSTANT number(5) := 2;
---- HexColor = BBGGRR
myLightBlue CONSTANT number(8) := 16755370; --FFAAAA
CURSOR c IS
SELECT typ product, amt amount, rownum
FROM myTable
WHERE rownum < 100;
BEGIN
hApplication := OLE2.CREATE_OBJ('Word.Application');
OLE2.SET_PROPERTY(hApplication, 'Visible', 1);
hDocuments := OLE2.GET_OBJ_PROPERTY(hApplication, 'Documents');
hDocument := OLE2.INVOKE_OBJ(hDocuments,'Add');
------------------------------
-------- Create Table --------
------------------------------
hSelection := OLE2.GET_OBJ_PROPERTY(hApplication, 'Selection');
hTables := OLE2.GET_OBJ_PROPERTY(hDocument , 'Tables' );
hRange := OLE2.GET_OBJ_PROPERTY(hSelection, 'Range');
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG_OBJ(args, hRange); --Range
OLE2.ADD_ARG(args, 3); --NumRows
OLE2.ADD_ARG(args, 2); --NumColumns
OLE2.ADD_ARG(args, wdWord9TableBehavior); --DefaultTableBehavior
OLE2.ADD_ARG(args, wdAutoFitContent); --AutoFitBehavior
hTable := OLE2.INVOKE_OBJ(hTables, 'Add', args);
OLE2.DESTROY_ARGLIST(args);
OLE2.RELEASE_OBJ(hTable);
OLE2.RELEASE_OBJ(hRange);
OLE2.RELEASE_OBJ(hTables);
------------------------------------------
-------- Create and Format Header --------
------------------------------------------
---- Select 2 cells at the top of table
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, wdCharacter); --Unit
OLE2.ADD_ARG(args, 2); --Count
OLE2.ADD_ARG(args, wdExtend); --Extend
OLE2.INVOKE(hSelection, 'MoveRight', args);
OLE2.DESTROY_ARGLIST(args);
---- Merge those 2 cells into 1 cell
hcells := OLE2.GET_OBJ_PROPERTY(hSelection, 'Cells');
OLE2.INVOKE(hCells, 'Merge');
---- Add next 2 cells to the selection
---- (next 2 cells are actually row 2)
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, wdCharacter); --Unit
OLE2.ADD_ARG(args, 2); --Count
OLE2.ADD_ARG(args, wdExtend); --Extend
OLE2.INVOKE(hSelection, 'MoveRight', args);
OLE2.DESTROY_ARGLIST(args);
---- Set color of selected cells
hcells := OLE2.GET_OBJ_PROPERTY(hSelection, 'Cells');
hShading := OLE2.GET_OBJ_PROPERTY(hCells, 'Shading');
OLE2.SET_PROPERTY(hShading, 'BackgroundPatternColor', myLightBlue);
OLE2.RELEASE_OBJ(hShading);
OLE2.RELEASE_OBJ(hCells);
---- Set selected cells to be Bold Header
hrows := OLE2.GET_OBJ_PROPERTY(hSelection, 'Rows');
OLE2.SET_PROPERTY(hRows, 'AllowBreakAcrossPages', True);
OLE2.SET_PROPERTY(hRows, 'HeadingFormat', True);
OLE2.RELEASE_OBJ(hRows);
hFont := OLE2.GET_OBJ_PROPERTY(hSelection, 'Font');
OLE2.SET_PROPERTY(hFont, 'Bold', True);
OLE2.RELEASE_OBJ(hFont);
---- Move to Header row 1, set text and center
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, wdCharacter);
OLE2.ADD_ARG(args, 1);
OLE2.ADD_ARG(args, wdMove);
OLE2.INVOKE(hSelection, 'MoveLeft', args);
OLE2.DESTROY_ARGLIST(args);
hParagraphFormat := OLE2.GET_OBJ_PROPERTY(hSelection, 'ParagraphFormat');
OLE2.SET_PROPERTY(hParagraphFormat, 'Alignment', wdAlignParagraphCenter);
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, 'Sales');
OLE2.INVOKE(hSelection, 'TypeText', args);
OLE2.DESTROY_ARGLIST(args);
---- Move to Header row 2/cell 1, set text
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, wdCell);
OLE2.ADD_ARG(args, 1);
OLE2.ADD_ARG(args, wdMove);
OLE2.INVOKE(hSelection, 'MoveRight', args);
OLE2.DESTROY_ARGLIST(args);
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, 'Product');
OLE2.INVOKE(hSelection, 'TypeText', args);
OLE2.DESTROY_ARGLIST(args);
---- Move to Header row 2/cell 2, set text and right align
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, wdCell);
OLE2.ADD_ARG(args, 1);
OLE2.ADD_ARG(args, wdMove);
OLE2.INVOKE(hSelection, 'MoveRight', args);
OLE2.DESTROY_ARGLIST(args);
hParagraphFormat := OLE2.GET_OBJ_PROPERTY(hSelection, 'ParagraphFormat');
OLE2.SET_PROPERTY(hParagraphFormat, 'Alignment', wdAlignParagraphRight);
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, 'Amount');
OLE2.INVOKE(hSelection, 'TypeText', args);
OLE2.DESTROY_ARGLIST(args);
---- Move row 3/cell 2, right align
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, wdLine);
OLE2.ADD_ARG(args, 1);
OLE2.ADD_ARG(args, wdMove);
OLE2.INVOKE(hSelection, 'MoveDown', args);
OLE2.DESTROY_ARGLIST(args);
hParagraphFormat := OLE2.GET_OBJ_PROPERTY(hSelection, 'ParagraphFormat');
OLE2.SET_PROPERTY(hParagraphFormat, 'Alignment', wdAlignParagraphRight);
---- Move back to first cell
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, wdCell);
OLE2.ADD_ARG(args, 1);
OLE2.ADD_ARG(args, wdMove);
OLE2.INVOKE(hSelection, 'MoveLeft', args);
OLE2.DESTROY_ARGLIST(args);
-------------------------------------------
-------- Populate rows from cursor --------
-------------------------------------------
FOR v IN c
LOOP
IF v.rownum != 1 THEN
---- create new line by moving over 1 cell
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, wdCell);
OLE2.ADD_ARG(args, 1);
OLE2.ADD_ARG(args, wdMove);
OLE2.INVOKE(hSelection, 'MoveRight', args);
OLE2.DESTROY_ARGLIST(args);
END IF;
---- Print product, move over a cell
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, v.product);
OLE2.INVOKE(hSelection, 'TypeText', args);
OLE2.DESTROY_ARGLIST(args);
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, wdCell);
OLE2.ADD_ARG(args, 1);
OLE2.ADD_ARG(args, wdMove);
OLE2.INVOKE(hSelection, 'MoveRight', args);
OLE2.DESTROY_ARGLIST(args);
---- Print amt
args := OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(args, to_char(v.amount, '9,999,999.00'));
OLE2.INVOKE(hSelection, 'TypeText', args);
OLE2.DESTROY_ARGLIST(args);
END LOOP;
--------------------------
--------------------------
OLE2.RELEASE_OBJ(hParagraphFormat);
OLE2.RELEASE_OBJ(hSelection);
OLE2.RELEASE_OBJ(hDocument);
OLE2.RELEASE_OBJ(hDocuments);
OLE2.RELEASE_OBJ(hApplication);
message('Task is Done.');
message('Task is Done.');
EXCEPTION
WHEN others THEN
message('Error');
message('Error');
END;
Fonte: Link
Qualquer coisa, manda pra gente.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Bing [Bot] e 24 visitantes