Pergunte aqui
2

Conectar a banco "externo" via Basic

perguntadas 2016-10-31 12:14:54 +0200

imagem do gravatar de Fábio de Salles

updated 2016-11-18 17:27:15 +0200

imagem do gravatar de Grafeno

Olá a todos! Uso o LO 4.4.7.2, com banco HSQLDB externo, em Ubuntu 12.04.

Preciso rodar uma consulta contra este banco a partir de um módulo BASIC. Eu consegui escrever a consulta apelando para este código:

DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("DVMan")

If Not DataSource.IsPasswordRequired Then
  Connection = DataSource.GetConnection("","")
Else
  InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
  Connection = DataSource.ConnectWithCompletion(InteractionHandler)
End If

Statement = Connection.createStatement()
ResultSet = Statement.executeQuery("SELECT * FROM TB_DBT_DBTYPE") 

If Not IsNull(ResultSet) Then
  While ResultSet.next
    MsgBox ResultSet.getString(1) +" - " + ResultSet.getString(2)
  Wend
End If

Apesar de funcionar, ele depende de o banco de dados estar "registrado" no LO. Pergunta: há como estabelecer uma conexão com um banco, e depois rodar SQL contra ele, sem que ele esteja registrado no LibreOffice?

Preciso disso porque não quero depender que o cliente no qual o Base vai ser executado dependa de registrar o banco.

Grato pela atenção,

Fábio

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

1 Resposta

2

respondidas 2016-11-03 14:27:21 +0200

imagem do gravatar de Grafeno

Olá,


É possível estabelecer uma conexão com um banco não registrado ao se fornecer o caminho completo (incluindo o nome do arquivo mais extensão) ao método getByName() do DatabaseContext. O caminho deve estar no formato URL, então utiliza-se a função convertToURL():

DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
sCaminho = convertToURL( "/home/Nome_Usuário/Documentos/Exemplo.odb" )
DataSource = DatabaseContext.getByName( sCaminho )


Atte,

editar assinalar como ofensivo Excluir Link mais

Comentários

1

Obrigado de novo, Grafeno. Ainda não testei, mas pelo que eu aprendi sobre registrar bases, deve funcionar. ;-) (Inclusive estou vendo que precisarei montar o caminho, já que ora rodo numa máquina, ora em outra.

imagem do gravatar de Fábio de SallesFábio de Salles ( 2016-11-14 20:34:53 +0200 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2016-10-31 12:14:54 +0200

Lidas: 43 vezes

Última atualização: Nov 03 '16