Pergunte aqui
1

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

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

imagem do gravatar de tarcisiopimenta07

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

imagem do gravatar de Schiavinatto

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 +0200

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 +0200 )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 +0200 )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 +0200 )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 +0200 )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 +0200 )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 SchiavinattoSchiavinatto ( 2019-03-11 12:23:22 +0200 )editar

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

imagem do gravatar de SchiavinattoSchiavinatto ( 2019-03-11 12:24:39 +0200 )editar

Boa tarde! Todos

Se eu criar um banco dados no base, como eu poderia criar um formulário de pesquisa?

imagem do gravatar de JamilsonJamilson ( 2019-05-07 21:46:22 +0200 )editar

Ola @Jamilson, crie Pergunta nova, esta já foi Resolvida com uma Resposta aceita, ficará confuso, Perguntas diferentes em única postagem.

Grato.

imagem do gravatar de SchiavinattoSchiavinatto ( 2019-05-07 23:49:37 +0200 )editar

ok obrigado

imagem do gravatar de JamilsonJamilson ( 2019-05-09 01:28:32 +0200 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

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

Lidas: 799 vezes

Última atualização: Mar 11 '19