Pergunte aqui
0

No basic uma macro para importar os campos de uma tabela ou consulta

perguntadas 2018-06-05 04:57:30 +0200

imagem do gravatar de Ronaldo Elias

updated 2018-06-05 17:41:10 +0200

Olá, gostaria de saber como escrever no BASIC uma macro para importar os campos de uma tabela ou consulta para os campos de uma caixa de diálogo, similar ao código abaixo:

Function AlterarDados()
    'On Error Goto Sair
    Dim oPlan as Object, oDBC as Object, oBD as Object, oConexao as Object, oDeclaracao as Object
    Dim sProtocolo as String, sData as String, sUsuario as String, sCadastro as String 
    Dim sNProcesso as String, sLocalizacao as String, sDocumento as String, sNomeTabela as String, sCampos as String
    Dim sValores as String, sSQL as String, sBanco as String
        dfData = dlg.getControl("dfData")
        sData = dfData.Text
        lbUsuario = dlg.getControl("lbUsuario")
        sUsuario = lbUsuario.Text
        lbCadastro = dlg.getControl("lbCadastro")
        sCadastro = lbCadastro.Text
        tfNProcesso = dlg.getControl("tfNProcesso")
        sNProcesso = tfNProcesso.Text
        tfLocalizacao = dlg.getControl("tfLocalizacao")
        sLocalizacao = tfLocalizacao.Text
        cbDocumento = dlg.getControl("cbDocumento")
        sDocumento = cbDocumento.Text
        sNomeTabela = """Protocolo""" 

        sCampos = """Data"",""Usuario"",""Cadastro"",""NProcesso"",""Localizacao"",""Documento"""
        sValores = "'" & sData & "','" & sUsuario & "','" & sCadastro & "','" & sNProcesso & "','" & sLocalizacao & "','" & sDocumento & "'"

            sSQL = "UPDATE " & sNomeTabela & " SET (" & sCampos & ") WHERE ""NProcesso"" = " & sNProcesso 
            oDesc.Text = oResultado.getString(1) 'este sSQL não é correto
            ' Obter a conexão ao Banco Defeitos
            sBanco = "Distribuição" '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 Function
                End If
            oBD = oDBC.getByName(sBanco)
            oConexao = oBD.getConnection("","")
            ' Executar o SQL
            oDeclaracao = oConexao.createStatement()
            oDeclaracao.executeUpdate(sSQL)
            'oResultado = oSQL.executeQuery( sSQL )
            'oResultado.Next
            ' Fechar a conexão e liberar a memória
            oDeclaracao.close()
            oConexao.close()
            oDeclaracao = Nothing
            oConexao = Nothing
            MsgBox "Dados salvos na tabela '" & sNomeTabela & "'!",0
End Function
editar alterar tag assinalar como ofensivo fechar mesclar Excluir

Comentários

@Ronaldo Elias, mas dos campos que você quer importar qual é a posição do registro? O último inserido? Uma posição em especial?

imagem do gravatar de GrafenoGrafeno ( 2018-06-06 04:14:44 +0200 )editar

Desculpe a demora Grafeno, funcionou "Graf", mas queria, algo assim: uma busca, por exemplo: Caixa InputBox (simulando um campo de formulário - caixa diálogo) = "123" na primeira coluna (qualquer linha/registro), mostraria a msgbox das colunas e das linhas/registros correspondentes.

     Col1 Col2 Col3
     123   ?    ?

Depois de importar seria possível, depois de alterar, excluir ou atualizar as informações, inserir no mesmo registro. Você é o cara eu sei, vejo suas publicações.

imagem do gravatar de Ronaldo EliasRonaldo Elias ( 2018-06-14 04:40:50 +0200 )editar

@Ronaldo Elias, no caso, poste um banco de exemplo, com dados fictícios, e com o formulário com os campos que deseja preencher/modificar/excluir, para ver se consigo te ajudar.

imagem do gravatar de GrafenoGrafeno ( 2018-06-16 12:47:02 +0200 )editar

1 Resposta

0

respondidas 2018-06-07 00:18:06 +0200

imagem do gravatar de Grafeno

Boa noite,

A macro abaixo retorna o último registro da tabela "Protocolo", e exibe o dado contido na 3ª coluna:

Sub Main2
   sBanco = "Distribuição" 'O banco PRECISA estar registrado.'
   oDBC = createUnoService("com.sun.star.sdb.DatabaseContext")

   oBD = oDBC.getByName(sBanco)
   oConexao = oBD.getConnection("","")

   ' Executar o SQL'
   oDeclaracao = oConexao.createStatement()
   oDeclaracao.ResultSetType = 1004 'Tipo SCROLL_INSENSITIVE'
   sSQL = " SELECT * FROM ""Protocolo"" "
   oResultado = oDeclaracao.executeQuery( sSQL )

   ' Mover o ponteiro para o último registro'
   oResultado.Last()

   ' Exibir o dado da 3ª coluna (campo)'
   msgbox oResultado.getString(3)

   ' Fechar a conexão e liberar a memória'
   oDeclaracao.close()
   oConexao.close()
   oDeclaracao = Nothing
   oConexao = Nothing
End Sub

Atte,

editar assinalar como ofensivo Excluir Link mais
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2018-06-05 04:57:30 +0200

Lidas: 24 vezes

Última atualização: Jun 07