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.
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,
Funcionou perfeitamente! Muito obrigado. Para fazer o Select é a mesma ideia, né?
Só que agora, vou tentar adaptar para receber os dados digitados no calc.
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.
.
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!!!
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).
@MarcoSalles, 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"*
Boa tarde!
Todos
Se eu criar um banco dados no base, como eu poderia criar um formulário de pesquisa?
Ola @Jamilson, crie Pergunta nova, esta já foi Resolvida com uma Resposta aceita, ficará confuso, Perguntas diferentes em única postagem.
Grato.
ok obrigado