Pergunte aqui
1

COMO SALVAR DADOS DO CALC NO BASE ATRAVES DE MACRO???

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

imagem do gravatar de tarcisiopimenta07

updated 2018-04-16 20:21:35 +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

2

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
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

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

Lidas: 369 vezes

Última atualização: Feb 10 '17