• Nenhum resultado encontrado

Dados de fontes externas

No documento Introdução Ao OpenOffice.org Basic (páginas 93-98)

Uma tarefa comum sobre documentos do Calc é a obtenção de dados de fontes externas. Por exemplo, a vinculação de uma planilha de outro documento ou a importação de dados de um

banco de dados. A seguir, veremos alguns serviços da API do OpenOffice.org, voltados para estas tarefas.

Vínculos

O serviço < com.sun.star.sheet.SpreadsheetDocument > contém as propriedades abaixo, relacionadas com vínculos noutros documentos:

SheetLinks - contém a coleção de vínculos de planilhas no documento AreaLinks - contém a coleção de vínculos de áreas no documento DDELinks - contém a coleção de vínculos DDE do documento Estas coleções podem ser obtidas como abaixo:

oDoc = ThisComponent

oVinculos = oDoc.SheetLinks ' obtém os vínculos de planilha do documento

A interface < com.sun.star.sheet.XSheetLinkable > possui os seguintes métodos para definir vínculos com planilhas de outros documentos:

getLinkMode ( ) As < com.sun.star.sheet.SheetLinkMode > setLinkMode ( nModo As < com.sun.star.sheet.SheetLinkMode > ) obtém ou define o modo do vínculo

getLinkUrl ( ) As String setLinkUrl ( sURL As String )

obtém ou define a URL do recurso ( o documento vinculado ) getLinkSheetName ( ) As String

setLinkSheetName ( sPlanilha As String )

obtém ou define o nome da planilha dentro do documento vinculado

link ( sURL As String, sPlanilha As String, sFiltro As String, sOpcoes As String, nModo As < com.sun.star.sheet.SheetLinkMode > )

cria um vínculo com uma planilha, em outro documento, se ele não existir

Os valores possíveis para LinkMode, estão em < com.sun.star.sheet.SheetLinkMode >: NONE - sem vínculo

NORMAL - copia os valores e as fórmulas

VALUE - copia os valores, inclusive o resultado das fórmulas

Eis alguns nomes de filtros do OpenOffice.org:

StarOffice XML (Calc) - documentos do Calc no formato XML MS Excel 97 - documentos do Excel 97/2000/XP MS Excel 95 - documentos do Excel 5.0 / 95

Para estes filtros, podemos passar uma cadeia vazia como opção do filtro. Vejamos um exemplo:

Versão 2 Documentos do Calc

'

Dim oDoc As Object Dim oPlan As Object '

oDoc = ThisComponent oPlan = oDoc.Sheets(0)

' edite sURL para seu sistema:

sURL = "file:///d:/nad/openoffice/Intro_OOo_Basic/novo_mat/editaPlan.sxc" sOrigem = "Planilha1"

sFiltro = "StarOffice XML (Calc)" sOpcoes = ""

' define o modo

nModo = com.sun.star.sheet.SheetLinkMode.NORMAL ' estabelece o vínculo

oPlan.link(sURL, sOrigem, sFiltro, sOpcoes, nModo) ' desativa o vínculo

oPlan.setLinkMode(com.sun.star.sheet.SheetLinkMode.NONE) '

End Sub

Note que definimos os parâmetros e estabelecemos o vínculo. Após executar esta macro, a planilha vinculada será carregada para o documento.

Além de planilhas, é possível vincular uma ou mais áreas de um documento externo a um outro documento.

A principal interface usada para isto, < com.sun.star.sheet.XAreaLinks >, tem os métodos: insertAtPosition ( aPos As <com.sun.star.table.CellAddress >, sArq As String,

sFonte As String , sFiltro As String, sFiltroOp As String ) insere uma área vínculada na coleção. Os parâmetros tem os significados: aPos – posição da célula inicial no documento de destino (estrutura). sArq – Url do recurso (documento de origem).

sFonte – endereço da área no documento de origem (por ex: “Planilha1.A1:D10”). sFiltro – nome do filtro usado para converter os dados.

sFiltroOp – opções para o filtro

as opções de filtro são específicas para alguns tipos de filtro. removeByIndex ( nIndex )

remove a área vinculada da coleção.

Vamos apresentar um exemplo simples, demonstrando esta possibilidade:

Sub vinculoArea '

Dim oDoc As Object Dim oPlan As Object Dim oLinks As Object

Dim aPos As New com.sun.star.table.CellAddress

oDoc = ThisComponent oPlan = oDoc.Sheets(1)

sURL = "file:///d:/nad/openoffice/Intro_OOo_Basic/novo_mat/editaPlan.sxc" sFonte = "Planilha1.A1:E8"

sFiltro = "StarOffice XML (Calc)" sOpcoes = ""

' define a origem da área no destino aPos.Sheet = 1

aPos.Column = 0 aPos.Row = 0 ' obtém coleção

oLinks = oDoc.AreaLinks

' insere um vínculo com a área sFonte

oLinks.insertAtPosition(aPos, sURL, sFonte, sFiltro, sOpcoes) 'remove o ultimo link

oLinks.removeByIndex(oLinks.Count - 1) '

End Sub

Inicialmente definimos os parâmetros, depois obtemos a coleção de vínculos, adicionamos o novo vínculo e, por fim, removemos o vínculo.

Se um vínculo permanecer ativo, na próxima carga do documento destino, o operador será informado da sua existência e questionado se deseja, ou não, atualizá-los.

Importando dados de um banco de dados

É possível importar dados, de uma fonte de dados registrada no OpenOffice.org, para uma planilha do Calc. Estes dados podem ser o conteúdo de uma tabela, o resultado de uma consulta ou de um comando SQL.

Esta tarefa é executada pelos métodos da interface com.sun.star.util.XImportable, suportada pelo serviço com.sun.star.sheet.SheetCellRange.

Os métodos de XImportable são:

createImportDescriptor ( bVazio As Boolean ) As < com.sun.star.beans.PropertyValue > Se bVazio for True, cria um descritor vazio, senão retorna as propriedades da última importação.

doImport ( oDescritor ( ) As < com.sun.star.beans.PropertyValue > ) importa os dados conforme o descritor

O serviço com.sun.star.sheet.DatabaseImportDescriptor possui as propriedades abaixo:

Propriedade Descrição

SourceType Tipo da fonte (com.sun.star.sheet.DataImportMode) DatabaseName Cadeia com o nome da fonte de dados registrada no

OOo

SourceObject Cadeia com o nome do objeto dentro da fonte de dados

Os valores possíveis para SourceType são (com.sun.star.sheet.DataImportMode): NONE - nada será importado

Versão 2 Documentos do Calc

SQL - um comando SQL será passado para SourceObject TABLE - o nome de uma tabela será passado para SourceObject

QUERY - o nome de uma consulta da fonte de dados será passado para SourceObject

Agora um exemplo. A macro abaixo importa todos os registros resultantes do comando SQL para uma planilha.

Sub importaDadosParaPlanilha '

Dim oCelOrigem As Object Dim oDescritor As Variant Dim sFonteDados As String Dim sOrigemDados As String Dim iTipo As Long

' obtem a célula da origem na planilha

oCelOrigem = ThisComponent.Sheets(1).getCellByPosition(0,0) ' cria um descritor de importação

oDescritor = oCelOrigem.createImportDescriptor(True) ' inicializa variáveis

iTipo = com.sun.star.sheet.DataImportMode.SQL sFonteDados = "Bibliography"

sOrigemDados = "Select * From biblio" ' define as propriedades do descritor oDescritor(0).Name = "DatabaseName" oDescritor(0).Value = sFonteDados oDescritor(1).Name = "SourceType" oDescritor(1).Value = iTipo oDescritor(2).Name = "SourceObject" oDescritor(2).Value = sOrigemDados ' importa os dados oCelOrigem.doImport(oDescritor()) ' End Sub

Como exercício, altere os valores das variáveis oCelOrigem, iTipo e sOrigemDados, executando novamente a macro.

8 Banco de Dados

8.1 Introdução

O OpenOffice.org traz um poderoso sistema de conexão com banco de dados. O seu principal objetivo é oferecer uma independência de plataforma, permitindo o acesso a banco de dados de diversos fabricantes.

O mecanismo que o OpenOffice.org usa para atingir o seu objetivo é chamado SDBC (Star Database Connectivity), que permite a escrita de “drivers” SDBC específicos para diferentes fontes de dados. Estes “drivers” podem, inclusive, usar padrões de acesso a dados bem estabelecidos, como ODBC e JDBC.

Deste modo, qualquer banco de dados que suporte um dos padrões acima, pode ser definido como uma fonte de dados para o OpenOffice.org. O OpenOffice.org também acessa, nativamente, tabelas do Dbase e Planilhas do Calc, como fonte de dados.

Dentre as facilidades de acesso a banco de dados do OpenOffice.org podemos citar: o uso da SQL (Linguagem de Consulta Estruturada) para consultas e o uso de vínculos e formulários baseados em documentos do OpenOffice.org.

Se você não tem experiência com banco de dados, antes de continuar, procure se familiarizar com as ferramentas gráficas do OpenOffice.org para acesso a fonte de dados. Selecione Ver –

Navegador Fonte de Dados. Nesta janela, podemos selecionar uma fonte de dados registrada

e operar sobre suas tabelas, consultas e vínculos. Para administrar as fontes de dados, selecione Ferramentas – Fonte de Dados.

No documento Introdução Ao OpenOffice.org Basic (páginas 93-98)