Boa noite,
Veja a resposta (e comentários) da questão abaixo :
Edição 13/08: Correção do exemplo
BancoDefeitos.odb (Exemplo - Registre antes de usar a planilha)
PlanilhaFonte.ods (Com a macro abaixo)
Sub SalvarDadosBD()
Dim oPlan As Object, oDBC As Object, oBD As Object, oConexao As Object, oDeclaracao As Object
Dim oBloco As Object, vData As Double
Dim sData As String, sTurno As String, sCodigo As String, sMaquina As String
Dim sDefeitoA As String, sDefeitoB As String, sDefeitoC As String, sDefeitoD As String
Dim sQtdTotalRef As String, sTotal As String, sNome_Tabela As String, sCampos As String
Dim sValores As String, sSQL As String, sBanco As String
' Obter a planilha com campos'
oPlan = ThisComponent.Sheets.getByName("PlanForm")
' Pegar o valor do campo data'
vData = oPlan.getCellRangeByName("C2").Value
' Sair se o campo data estiver vazio'
If vData = 0 Then Exit Sub
' Formatar a data para inserir no banco'
sData = Year(vData) & "-" & Month(vData) & "-" & Day(vData)
' Recuperar os demais campos da planilha'
sTurno = oPlan.getCellRangeByName("C3").String
sCodigo = oPlan.getCellRangeByName("C4").String
sMaquina = oPlan.getCellRangeByName("C5").String
sDefeitoA = oPlan.getCellRangeByName("C6").String
sDefeitoB = oPlan.getCellRangeByName("C7").String
sDefeitoC = oPlan.getCellRangeByName("C8").String
sDefeitoD = oPlan.getCellRangeByName("C9").String
sQtdTotalRef = oPlan.getCellRangeByName("C10").String
sTotal = oPlan.getCellRangeByName("C11").String
' Preparar a instrução SQL'
sNome_Tabela = " ""Defeitos"" "
sCampos = """Data"",""Turno"",""Codigo"",""Maquina"",""DefeitoA""," & _
"""DefeitoB"",""DefeitoC"",""DefeitoD"",""QtdTotalRef"",""Total"""
sValores = "'" & sData & "','" & sTurno & "','" & sCodigo & "','" & sMaquina & _
"','" & sDefeitoA & "','" & sDefeitoB & "','" & sDefeitoC & "','" & _
sDefeitoD & "','" & sQtdTotalRef & "','" & sTotal & "'"
' Tratar as células em branco com Null'
sValores = Replace( sValores, "''","Null")
' Configurar a cláusura INSERT INTO'
sSQL = "INSERT INTO " & sNome_Tabela & " (" & sCampos & ") VALUES (" & sValores & ")"
' Obter a conexão ao Banco Defeitos'
sBanco = "BancoDefeitos" 'O banco PRECISA estar registrado.
oDBC = createUnoService( "com.sun.star.sdb.DatabaseContext" )
If Not oDBC.hasByName( sBanco ) Then
Msgbox "É preciso registrar o banco '" & sBanco & "' antes de prosseguir.",64
Exit Sub
End If
oBD = oDBC.getByName( sBanco )
oConexao = oBD.getConnection( "","" )
' Executar o SQL'
oDeclaracao = oConexao.createStatement()
oDeclaracao.executeUpdate( sSQL )
' Fechar a conexão e liberar a memória'
oDeclaracao.close()
oConexao.close()
oDeclaracao = Nothing
oConexao = Nothing
MsgBox "Dados salvos na tabela '" & sNome_Tabela & "'!",0
' Limpar as células'
' Parâmetro: Valor(1)+Data/Hora(2)+Texto(4) = 7'
oBloco = oPlan.getCellRangeByName("C2:C11")
oBloco.ClearContents( 7 )
End Sub
Para resgatar as informações, você pode usar o método descrito na resposta a:
Atte,