Pergunte aqui
1

Como Salvar Dados do Calc no Base através de Macro ???

perguntadas 2017-02-02 19:31:45 +0100

imagem do gravatar de tarcisiopimenta07

updated 2019-03-11 12:13:50 +0100

Tenho uma planilha(calc) com uma macro que salva os dados digitados numa outra planilha. Porem quero salvar estes dados num banco de dados (base). Não encontrei nada a respeito na internet de como fazer esta macro e conexão com o base. Como fazer esta conexao com o base e como fazer esta macro para poder inserir os dados no base.

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

1 Resposta

3

respondidas 2017-02-10 17:40:38 +0100

imagem do gravatar de Grafeno

Use uma macro que execute uma instrução SQL INSERT INTO no Banco de Dados.

Veja o exemplo abaixo. Você pode adaptar para pegar os valores das células do Calc e inserir no BD.

Sub SalvarDadosBD()
Dim oDBC As Object
Dim oBD As Object
Dim oConexao As Object
Dim oDeclaracao As Object
Dim sBancoDados As String
Dim sSQL As String

   sBancoDados = "Empresa" '<< Nome do banco de dados registrado'     
   oDBC = createUnoService( "com.sun.star.sdb.DatabaseContext" )    
   oBD = oDBC.getByName( sBancoDados )
   oConexao = oBD.getConnection( "","" )
   oDeclaracao = oConexao.createStatement()

   sNome_Tabela = " ""Empregados"" " '<< Nome da tabela'
   sCampos =" ""Nome"",""Cod-Departamento"",""Salário"", ""Data Admissão"" " '<< Nome dos Campos'
   sValores =" 'Fulano de Tal', 1, 1000.10,'2017-02-01'  " '<< Valores para os campos'

   sSQL = "INSERT INTO " & sNome_Tabela & "(" & sCampos & ") VALUES (" & sValores & ")"      
   oDeclaracao.executeUpdate( sSQL )

   oDeclaracao.close()
   oConexao.close()
   oDeclaracao = Nothing
   oConexao = Nothing

   MsgBox "Concluído!",0,"Salvar Dados"
 End Sub

Atte,

editar assinalar como ofensivo Excluir Link mais

Comentários

Funcionou perfeitamente! Muito obrigado. Para fazer o Select é a mesma ideia, né?

imagem do gravatar de tarcisiopimenta07tarcisiopimenta07 ( 2017-02-17 12:47:11 +0100 )editar

Só que agora, vou tentar adaptar para receber os dados digitados no calc.

imagem do gravatar de tarcisiopimenta07tarcisiopimenta07 ( 2017-02-17 12:49:26 +0100 )editar

sValores =" oDados.getCellByPosition( 1,1).String, oDados.getCellByPosition( 1,2).String, oDados.getCellByPosition( 1,3).String "

COMO FAZER ESSA ADAPTAÇÃO?????? ESSA AI NAO ESTA CERTA, MAS A LOGICA SERIA MAIS OU MENOS ISSO.

imagem do gravatar de tarcisiopimenta07tarcisiopimenta07 ( 2017-02-17 15:02:05 +0100 )editar
1

.

   oDoc = ThisComponent
   oCadas = oDoc.Sheets.getByName( "teste" )

   VALOR1 = oCadas.getCellRangeByName( "A1").String
   VALOR2 = oCadas.getCellRangeByName( "B1").String
   VALOR3 = oCadas.getCellRangeByName( "C1").String

   sNome_Tabela = " ""cliente"" " '<< Nome da tabela'
   sCampos =" ""nome"",""end"", ""fone"" " '<< Nome dos Campos'
   sValores = "('" & VALOR1 &"'),('" & VALOR2 &"'),('" & VALOR3 &"')"

CONSEGUI!!! MUITO OBRIGADO!!!

imagem do gravatar de tarcisiopimenta07tarcisiopimenta07 ( 2017-02-17 19:33:16 +0100 )editar

Primeiramente Parabéns!

Para um instrução SELECT vc precisaria do método executeQuery() invés de executeUpdate(). Além disso, é preciso "navegar" no Resultset retornado para pegar o(s) valores(s). Veja esse exemplo (inglês).

imagem do gravatar de GrafenoGrafeno ( 2017-02-17 19:42:36 +0100 )editar

@Marco Salles, comentou.......

*"@Grafeno

Bom dia . Desculpe voltar neste tópico . E que já coloquei duas postagens semelhantes no forum e não tive reposta talves não soube explicar e não fui compreendido . Bem ....

Uso este esquema para salvar os dados do Calc no Base ... O Problema que eu estou tendo e que os Dados "Salvos" no Calc so sáo EFETIVADOS no Base se eu abri o Base e das um SALVAR no próprio BASE ...

Ha alguma configuração para evitar evitar isso , para que seja de modo independente ??? obg"*

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2019-03-11 12:23:22 +0100 )editar

@marco Salles, por favor não use "Adicionar resposta" para fazer perguntas ou comentários.....

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2019-03-11 12:24:39 +0100 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2017-02-02 19:31:45 +0100

Lidas: 444 vezes

Última atualização: Mar 11