Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  ·...

24
Soluções de Integração e Comunicação Relatório Inteligente Ricardo Ferreira Rodrigues Pinto Julho de 2005

Transcript of Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  ·...

Page 1: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Soluções de Integraçãoe Comunicação

Relatório Inteligente

Ricardo Ferreira Rodrigues PintoJulho de 2005

Page 2: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Relatório Inteligente

Resumo

Este documento apresenta os desenvolvimentos realizados para o módulo de Relatórios, da solução de Processo Clínico, como actividade complementar do estágio curricular na CPCHS.

Após uma breve introdução ao problema, incluindo a identificação dos objectivos pretendidos, este relatório descreve as funcionalidades implementadas, bem como a integração com a aplicação já existente em Oracle Forms na empresa.

É ainda demonstrada a versão realizada para a plataforma .NET, que será integrada numa futura solução. Finalmente, explicitam-se os resultados obtidos e principais conclusões do trabalho.

ii

Page 3: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Relatório Inteligente

Índice

Introdução...........................................................................................................1Funcionalidades desenvolvidas..........................................................................2Integração...........................................................................................................8Versão .NET......................................................................................................11Resultados........................................................................................................14Conclusão.........................................................................................................16Bibliografia.........................................................................................................17

iii

Page 4: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Relatório Inteligente

Introdução

Durante a actividade clínica, é obviamente necessário registar toda a informação relativa às observações médicas efectuadas. Assim, devem ser elaborados vários relatórios, que documentam aspectos tão diversos, como a realização de exames físicos, resultados de análises ou ainda esquemas de imagiologia.

Neste sentido, a aplicação de Processo Clínico recorre ao editor de texto Microsoft Word para apresentar relatórios, gerados automaticamente pela aplicação, a partir de modelos já existentes (um para cada especialidade). Os cabeçalhos dos documentos são preenchidos automaticamente com informação sobre o doente e o episódio clínico a que se referem, facilitando o trabalho do médico.

No entanto, e considerando a grande utilização dos relatórios durante o funcionamento actual do Processo Clínico, mostrou-se necessário adquirir um nível mais elevado de automatização. Desta forma, decidiu-se pela implementação, nos documentos Microsoft Word, de uma série de funcionalidades, que serão identificadas e analisadas ao longo deste manual.

1

Page 5: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Relatório Inteligente

Funcionalidades desenvolvidas

Este capítulo descreve todos os elementos criados nos diversos modelos de relatórios Microsoft Word, seguindo uma ordem cronológica.

Algumas das funcionalidades foram implementadas em todos os modelos, enquanto que outros só se justificaram para uma determinada especialidade.

Apresentam-se então de seguida as funcionalidades desenvolvidas.

Relatório Automático

Analisou-se inicialmente o seguinte problema: apesar dos cabeçalhos serem já preenchidos pela aplicação, os médicos despendiam mais tempo do que o desejado a inserir os conteúdos nos relatórios.

Para resolver esta situação, foi criado um novo elemento: o Relatório Automático. Este consiste num menu flutuante onde, recorrendo à funcionalidade de AutoText, foram incluídos atalhos para parágrafos predefinidos, agrupados por áreas de intervenção. A seguinte imagem constitui um exemplo deste menu e faz parte da template de Imagiologia:

Para inserir os comentários no relatório, basta clicar no botão respectivo, ou escrever as primeiras letras do código de inserção, o que produzirá o seguinte efeito:

2

Page 6: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Relatório Inteligente

Pressionar Enter causará a introdução da seguinte frase: “Não observamos sinais de fractura.”

Os códigos encontram-se num formato normalmente utilizado pelos médicos: duas letras que designam a área de intervenção, duas letras que representam o nome do médico e um número sequencial.

Listagens

De seguida, foi analisada outra questão importante: durante a elaboração do relatório, o médico sentia com frequência necessidade de voltar à aplicação para fazer determinado tipo de operações, como consultas, de forma a obter informação útil à realização do relatório.

No sentido de garantir que, uma vez aberto o documento, este seria completado e encerrado numa única passagem, foi estudada a possibilidade de apresentar informação provenientes da base de dados. Foi decidido apresentar uma listagem dos outros relatórios pendentes para o doente e especialidade associados ao relatório.

A solução encontrada passou novamente por desenvolver um menu, mas com características diferentes. Neste caso, foram utilizadas macros em Visual Basic, de modo a criar este elemento em runtime, ao abrir o documento.

Deste modo, seguiu-se este procedimento:

1. Criação do menu

Set cmd = CommandBars.Add("Relatórios Pendentes", MsoBarPosition.msoBarFloating, False, True)

2. Ligação à base de dados

Public oCn As New ADODB.ConnectionPublic oRs As New ADODB.RecordsetoCn.Open "Driver={Microsoft ODBC for Oracle};" & _ "Server=hsdemo.world;" & _ "Uid=gh_pc;" & _ "Pwd=gh_pc"

3. Execução do comando

Set oRs = oCn.Execute("select ... from … where … and …”)

4. Leitura dos dados e criação dos botões

While Not oRs.EOF Set rel1 = cmd.Controls.Add(msoControlButton) rel1.Caption = oRs.Fields(1).Value rel1.TooltipText = "Acto médico realizado em: " & oRs.Fields(0).Value rel1.Style = msoButtonIconAndCaption rel1.FaceId = 31 rel1.BeginGroup = True oRs.MoveNextWend

O resultado obtido foi o seguinte:

3

Page 7: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Relatório Inteligente

Um melhoramento possível poderá ser a implementação de um evento associado a pressionar no botão, como por exemplo criar um novo documento word para o relatório pendente.

Opções

No sentido de obter uma maior personalização do relatório, foi criada uma barra de ferramentas com algumas opções específicas, como se pode observar:

A primeira funcionalidade é um botão para gravar o documento e sair, como se pode ver na imagem. Esta opção tem como vantagem pedir a palavra-chave do médico, validando-a de seguida na base de dados.

Em caso de sucesso, o documento é encerrado, sendo visionada a seguinte mensagem:

Se a palavra-chave introduzida não for a correcta, o utilizador depara-se com uma indicação de erro:

4

Page 8: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Relatório Inteligente

Logo, o utilizador pode gravar o relatório com mais segurança, uma vez que, desta forma, o documento gerado pela aplicação só é guardado se for alterado por uma pessoa autorizada.

Para além disso, esta opção arquiva ainda o relatório e um ficheiro de indexação com meta-informação num servidor específico para este efeito.

Todo este esquema recorre também a uma macro, designada por GravarDoc, na qual são seguidos os seguintes passos:

1. Criar a caixa para inserção da palavra-chave

Text$ = InputBoxDK("Insira a sua password:", "Gravar", "Password")

2. Verificar a validade da palavra-chave

Set oRs = oCn.Execute("select … from … where … and …") If Not oRs.EOF Then If oRs.Fields(0).Value = pass Then MsgBox "Assinatura concluída com sucesso" Else MsgBox "Assinatura inválida!" End If oRs.MoveNext Else MsgBox "Assinatura inválida!" End If

3. Criar ficheiro de indexação

nomeFile = docOrigin & "_" & docType & "_" & rel & ".txt"Set fs2 = CreateObject("Scripting.FileSystemObject")Set TextStream = fs2.CreateTextFile("c:\saude\" & nomeFile)TextStream.WriteLine ("« ORIGEM »[" & docOrigin & "]") …..

4. Copiar os ficheiros para o servidor

ChDir pathDim nomeDoc As StringnomeDoc = rel & ".doc"FileCopy path & nomeDoc, pathEresults & "\" & nomeDoc

5. Gravar e fechar o relatório

ActiveDocument.SaveActiveDocument.Close

A segunda opção disponível no menu é utilizada para abandonar a aplicação sem gravar. Neste caso, apenas é necessário explicitar uma flag para garantir que as alterações não são guardadas:

5

Page 9: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Relatório Inteligente

ActiveWindow.Close SaveChanges:=wdDoNotSaveChanges

Finalmente, a terceira opção permite exportar os conteúdos do relatório, excluindo os cabeçalhos, para um ficheiro de texto. O procedimento utilizado na macro TxtExport passa por:

1. Posicionar o cursor numa bookmark criada no início da área dedicada ao relatório

Selection.GoTo What:=wdGoToBookmark, Name:="Texto"

2. Estender a selecção até ao final da linha e depois até ao final do documento

Selection.GoTo What:=wdGoToLine, Which:=wdGoToRelative, Count:=1 Selection.EndKey Unit:=wdStory, Extend:=wdExtend

3. Criar um ficheiro com o conteúdo

Set fs2 = CreateObject("Scripting.FileSystemObject")Set TextStream = fs2.CreateTextFile("c:\saude\" & rel & "Content.txt")TextStream.WriteLine (conteudo)TextStream.Close

Imagens

Verificou-se também que alguns documentos poderiam sofrer ligeiras variações consoante o sexo do paciente. Tal é o caso do relatório de Uretrocistocopia: o esquema do sistema urinário apresentado para uma mulher não será igual ao incluído para um homem.

No sentido de evitar a duplicação do número de modelos em função do sexo, ou a alteração dos relatórios por parte dos médicos, foi pesquisado um modo de actualizar a imagem em runtime, tendo em conta a informação adquirida da base de dados.

Deste modo, a solução encontrada passou por implementar uma macro, designada Imagem que, logo na abertura do documento, verificava qual o sexo do doente e inseria o esquema adequado, de acordo com o protocolo seguinte:

1. Procurar no documento a palavra “Feminino”

Selection.Find.ClearFormattingWith Selection.Find .Text = "Feminino" .Forward = TrueEnd WithSelection.Find.Executesexo = Selection.Text

2. Inserir a imagem

Selection.GoTo What:=wdGoToBookmark, Name:="Imagem"If sexo = "Feminino" Then Selection.InlineShapes.AddPicture FileName:="C:\saude\esquemaFem.bmp", LinkToFile:=False, SaveWithDocument:=True

6

Page 10: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Relatório Inteligente

Else Selection.InlineShapes.AddPicture FileName:="C:\saude\esquemaMasc.bmp", LinkToFile:=False, SaveWithDocument:=TrueEnd If

Para garantir a correcta implementação deste mecanismo foram posicionados dois marcadores no documento: o primeiro foi colocado no cabeçalho junto à definição do sexo do paciente (deste modo, garante-se que a pesquisa dura apenas uma iteração, ganhando em eficiência); o segundo foi associado à própria imagem (de forma a manter um correcto alinhamento gráfico dos conteúdos).

Esta funcionalidade não estava prevista inicialmente, funcionando apenas nos relatórios que incluem esquemas.

Player

Finalmente, surgiu mais um desafio aliciante: integrar no Microsoft Word a audição de ficheiros com informação médica útil para a elaboração do relatório.

A ideia passava por, ao abrir o documento, iniciar a leitura de um ficheiro WAV, com o mesmo nome do relatório. Este teria uma nova toolbar com os típicos botões de play, pause e stop. Apresenta-se assim o aspecto deste menu:

Para este efeito, foi efectuada a integração com um componente OCX já desenvolvido na empresa. Esta aplicação baseia-se na utilização da biblioteca de comandos MCI para controlar o objecto WAV. Assim, descrevem-se de seguida as diferentes funções criadas:

1. Open

Dim retval As DoubleChDir "C:\Program Files\AudioRelatForm 1.10"retval = Shell("C:\Program Files\AudioRelatForm 1.10\AudioRelatForm.exe c:\Startup.wav; 15; 15; Player; Ricardo; SIM", vbNormalFocus)

2. Play

Dim retval As DoubleChDir "C:\Program Files\AudioRelatForm 1.10"retval = Shell("AudioRelatForm.exe -play", vbNormalFocus)

3. Pause

Dim retval As DoubleChDir "C:\Program Files\AudioRelatForm 1.10"retval = Shell("AudioRelatForm.exe -pausa", vbNormalFocus)

4. Stop

7

Page 11: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Relatório Inteligente

Dim retval As DoubleChDir "C:\Program Files\AudioRelatForm 1.10"retval = Shell("AudioRelatForm.exe -pausa", vbNormalFocus)

5. Close

Dim retval As DoubleChDir "C:\Program Files\AudioRelatForm 1.10"retval = Shell("AudioRelatForm.exe -finalizar", vbNormalFocus)

Um melhoramento sugerido será a inclusão de uma opção para abrir outros ficheiros WAV.

8

Page 12: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Relatório Inteligente

Integração

Após a análise de todo o desenvolvimento efectuado, torna-se fundamental abordar a interligação entre a aplicação de Processo Clínico, implementada em Oracle Forms Builder e os relatórios Microsoft Word.

Neste sentido, deve ser explicado o funcionamento deste processo:

1. O médico abre o seu desktop, interface em que podem ser visualizados os actos médicos marcados, de acordo com o calendário;

2. Seleccionando um doente com duplo clique é apresentado um novo ecrã, onde o médico pode observar toda a informação relativa ao paciente escolhido;

3. Uma das opções consiste em pressionar o botão “Relatórios”, que gera a interface responsável pela integração com o Microsoft Word:

4. Após efectuar uma pesquisa dos actos médicos pendentes para o doente pode então gerar o(s) relatório(s) pretendido(s), bastando para tal seleccionar a incidência e clicar no botão com o símbolo do Word.

9

Page 13: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Relatório Inteligente

E chegado a este ponto, qual o funcionamento do mecanismo despoletado por esta acção? Com efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca do Oracle denominada OLE2 (neste caso, através de uma biblioteca da empresa, OLEWORD).

Deste modo, o procedimento de integração segue estes passos:

1. Criação do objecto Word

pk_param_base_manutencao('GHPC_PATH_DOC_BASE', w_path_doc_base);pk_gr_dados_word.OLEWORD_LANG:= 'INGLES';pk_gr_dados_word.OLEWORD_VER := '7.0'; oleword.CRIA_word(pk_gr_dados_word.ow);

2. Criação de dois ficheiro de texto: um para fazer mail merge e outro com dados usados na criação dos novos menus

w_nome_merge := 'c:\saude\doc_word.txt';merge_file := TEXT_IO.FOPEN(w_nome_merge, 'w');w_nome_var := 'c:\saude\var_file.txt';var_file := TEXT_IO.FOPEN(w_nome_var, 'w');

3. Abertura do ficheiro a partir da template existente

oleword.fileopen(pk_gr_dados_word.ow, pk_gr_dados_word.OLEWORD_VER,pk_gr_dados_word.OLEWORD_LANG, origem||nome||'.DOT');

4. Mail merge

oleword3.mailmergeopendtsrc(ow,oleword_ver,oleword_lang,drive_dir_nome_datasource);oleword2.mail_merge0(ow,oleword_ver,oleword_lang);oleword.selectall(ow,oleword_ver,oleword_lang);

10

Page 14: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Relatório Inteligente

oleword2.unlinkfields(ow,oleword_ver,oleword_lang);5. Gravação do relatório

oleword.filesaveas(ow,oleword_ver,oleword_lang,drive_dir_resultado);oleword.fileclose(ow,oleword_ver,oleword_lang);

6. Invocação do Microsoft Word

ConvID := DDE.App_Begin(word_path||'\WINWORD.EXE '||destino|| w_n_relat ||'.doc /l' || origem||nome||'.DOT',DDE.App_Mode_Normal);

Este processo está actualmente a ser alterado, no âmbito da Versão .NET, apresentada de seguida.

11

Page 15: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Relatório Inteligente

Versão .NET

No sentido de tornar mais apelativo o novo relatório, surgiu a ideia de criar uma barra personalizada, que incluiria todos os componentes desenvolvidos previamente.

Esta deveria ser posicionada do lado direito do documento, de um modo semelhante à Task Pane:

No entanto, verificou-se que este objectivo só poderia ser realmente conseguido com recurso ao desenvolvimento de um componente .NET, e nunca através das macros em VBA.

Assim, e tendo em conta a arquitectura de serviços que está a ser implementada actualmente, no âmbito do projecto Microsoft, decidiu-se optar pelas tecnologias desta empresa. Foi então levada a cabo uma análise da

12

Page 16: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Relatório Inteligente

melhor solução, que demonstrou ser a Visual Studio Tools for Office, add-in para o Visual Studio .NET.

O resultado obtido foi o seguinte:

Analisando agora o componente desenvolvido, apresenta o seguinte esquema de arquitectura física:

13

Page 17: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Relatório Inteligente

O funcionamento deste processo passa por:

1. Inicialização dos componentes gráficos;2. Obtenção de alguns dados através de um ficheiro gerado pela

aplicação de Processo Clínico;3. Ligação à base de dados Oracle, através do protocolo ODBC;4. Criação do menu de auto textos, a partir de uma estrutura de

ficheiros instalada no servidor:

Home Especialidade Autotextos.txt

Em termos de desenvolvimento, destaca-se a função responsável pela criação do menu de auto textos.

public ArrayList readAutoText(string spec)

De acordo com a especialidade actual (obtida do ficheiro lido inicialmente), acede-se ao servidor, mais especificamente à pasta com esse nome. Aí está guardado um ficheiro txt com as entradas de auto texto a incluir, de forma estruturada:

<autotext><grupo id="Vesicula">

<entrada cod="VB01RP">Vesícula regularmente contrastada, homogénea, sem imagens suspeitas de cálculos, e

hipoquinética.</entrada><entrada cod="VB02RP">

Vesícula regularmente contrastada, homogénea, sem imagens suspeitas de cálculos, e respondendo satisfatoriamente ao estímulo colecistoquinético.

</entrada></grupo>

</autotext>

O ficheiro é percorrido, sendo guardada num array a informação necessária: a designação do grupo, bem como dos códigos e respectivas entradas.

14

Page 18: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Relatório Inteligente

Finalmente a estrutura de dados é percorrida procedendo-se à criação, para cada entrada, de um elemento na barra. A cada um é associado um EventHandler responsável pela inserção do Auto texto:

Globals.ThisDocument.Application.Selection.InsertAfter(lbl.Name);

Esta barra permite assim uma melhor organização dos diferentes menus, garantindo um espaço próprio para a implementação das novas funcionalidades. Isto garante que a área do documento propriamente dito esteja totalmente desocupada, facilitando a elaboração do relatório.

15

Page 19: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Relatório Inteligente

Resultados

Em função dos objectivos propostos, os resultados atingidos podem ser considerados bastante positivos.

Assim, foram desenvolvidas todas as funcionalidades previstas, bem como alguns mecanismos não previstos, como é o caso da actualização dinâmica dos esquemas.

Para além disso, foi ainda efectuada uma versão específica para a plataforma de desenvolvimento .NET, pensando já na arquitectura de serviços em construção.

Desta forma, os documentos que resultaram deste projecto são os que se apresentam de seguida:

16

Page 20: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Relatório Inteligente

17

Page 21: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Relatório Inteligente

Conclusão

Após a realização deste projecto, conclui-se que o módulo de relatórios da solução de Processo Clínico da CPCHS está mais completo e personalizado, apresentando agora um vasto conjunto de funcionalidades, pensadas e desenvolvidas à medida dos clientes.

Desta forma, as novas features são:

1. Escrita de relatórios mais rápida e eficiente, através da utilização de auto textos;

2. Apresentação de listagens com informação carregada da base de dados, tornando desnecessário o retorno à aplicação;

3. Escolha de várias opções, como gravar, abandonar e exportar, incluídas numa nova toolbar;

4. Reestruturação dos modelos em runtime, incluindo alteração dinâmica de imagens;

5. Controlo de um ficheiro áudio com informação médica auxiliar, recorrendo a um player criado para o efeito;

Estas medidas poderão contribuir para a melhoria dos serviços de saúde prestados pelos clientes da empresa, mediante uma maior eficácia e eficiência na elaboração de relatórios, permitindo assim que os médicos dediquem mais tempo aos seus doentes.

18

Page 22: Capa - paginas.fe.up.ptpaginas.fe.up.pt/~ei00066/Assets/Documents/Relatorio Inteligente.doc  · Web viewCom efeito, a manipulação do Word é levada a cabo com recurso a uma biblioteca

Relatório Inteligente

Bibliografia

1. MCI Commands: WAV file - http://www.geocities.com/smigman.geo/mci/wav.html

2. VBA code for beginners - http://www.jojo-zawawi.com/code-samples-pages/code-samples.htm;

3. MSDN: Command and menu bars - http://msdn.microsoft.com/library/default.asp?url=/archive/en-us/dnaro97ta/html/ofcmdbar.asp;

4. Connection Strings – http://www.carlprothman.net/Default.aspx?tabid=81;

5. Microsoft VSTO for VS. NET - http://blogs.msdn.com/vsto2;

6. Actions Pane Overview - http://msdn2.microsoft.com/library/7we49he1(en-us,vs.80).aspx;

7. Working with Microsoft Word templates, The foundation - http://msdn.microsoft.com/library/en-us/dnword2k2/html/odc_wdtemp.asp?frame=true;

19