Pergunte aqui
1

PROCV no BASE

perguntadas 2018-03-19 19:55:00 +0200

imagem do gravatar de Conrado

updated 2019-03-01 19:09:08 +0200

Olá galera....estou com um probleminha.

Tenho uma tabela onde contém as seguintes informações:

Código / Descrição / Linha / Seguimento

Em um formulário, vou realizar lançamentos de inspeção de qualidade, onde minha rastreabilidade é pelo código.

Como faço para que no momento que eu colocar o código de um produto (caixa de combinação), ele me retorne nos demais campos as informações de Descrição / Linha / Seguimento?

Sei que em consulta consigo trazer estas informações, mas preciso disto no ato do lançamento para que o colaborador avalie se as informações batem.

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

Comentários

1

Creio que o PROCV só funcione no Calc, no Base é de outra maneira, talvez por SQL, etc, não tenho certeza pois não uso o Base.

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2018-03-19 21:06:22 +0200 )editar

@Conrado, parece que vc já criou uma pegunta antes similar a essa. Seria melhor você disponibilizar um modelo do seu banco, com dados fictícios, com os formulários para facilitar a ajuda.

imagem do gravatar de GrafenoGrafeno ( 2018-03-19 22:31:36 +0200 )editar

@Gilberto Schiavinatto está certo, não existem funções do Calc no Base. Vc pode usar macro com SQL pare resolver a questão.

imagem do gravatar de GrafenoGrafeno ( 2018-03-19 22:35:41 +0200 )editar

@Gilberto Schiavinatto e @Grafeno ...obrigado pela prontidão. Sei que não tem o PROCV no Base, mas passei desta forma para melhor entender o assunto. A questão anterior era sobre Caixa de Combinação em Cascata, que resolvi de outra forma num outro banco. Vou arrumar as informações e disponibilizar para vocês darem uma olhada.

imagem do gravatar de ConradoConrado ( 2018-03-21 20:41:03 +0200 )editar

2 Respostas

1

respondidas 2018-03-23 02:00:16 +0200

imagem do gravatar de Grafeno

Boa noite,

A macro busca o código do produto colocado na caixa de combinação e preenche as caixas de texto descrição, linha e seguimento. Ela precisa estar associada dois eventos:

  • "Texto modificado" do controle txtCódigo.
  • "Após alteração do registro" formulário MainForm.

.

Um consideração que faço é que com o código você verá que é desnecessário armazenar a descrição, a linha e o seguimento na tabela Lançamento. Na verdade, não faz sentido repetir o armazenamento destes dados para cada vez que o produto aparecer num lançamento se eles já existem na tabela Produtos.

.

Sub PreencherCampos()
Dim oForm as Object, oCodigo as Object, oDescricao as Object
Dim oLinha as Object, oSeguimento as Object, oConexao as Object
Dim oSQL as Object, oResultado as Object
Dim sCodigo as String, sSQL as String

   oForm = ThisComponent.Drawpage.Forms.getByName("MainForm") 
   oCodigo = oForm.getByName("txtCódigo")
   oDescricao = oForm.getByName("txtDescrição")
   oLinha = oForm.getByName("txtLinha")
   oSeguimento = oForm.getByName("txtSeguimento")

   On Error goto TratarErro

   oConexao = oForm.ActiveConnection
   oSQL = oConexao.createStatement()

   sCodigo = oCodigo.Text
   sSQL = "SELECT ""Descricao"", ""Linha"", ""Segmento"" FROM ""Produtos"" WHERE ""Codigo"" = '" & sCodigo & "'"
   oResultado = oSQL.executeQuery( sSQL )
   oResultado.Next

   oDescricao.Text = oResultado.getString(1)
   oLinha.Text = oResultado.getString(2)
   oSeguimento.Text = oResultado.getString(3)

Exit Sub
TratarErro:
  oDescricao.text = ""
  oLinha.text = ""
  oSeguimento.text = ""
End Sub

.

Arquivo com a macro: meu_banco_macro.odb

.

Atte,

editar assinalar como ofensivo Excluir Link mais

Comentários

1

@Grafeno , ficou perfeito...agradeço muito a ajuda e a sugestão (vou acatá-la).

Ainda estou tendo dificuldades em entender a linguagem do LibreOffice, estou nos estudos ainda.

imagem do gravatar de ConradoConrado ( 2018-03-23 13:36:26 +0200 )editar

@Conrado, que bom que atendeu seu objetivo. E sobre a "linguagem do LibreOffice", só para esclarecer, ela é a linguagem Basic comum para macros. A dificuldade que temos está nos objetos, métodos, propriedades, ou seja na API do Libreoffice, chamada API UNO que é totalmente diferente das outras suítes de escritório.

imagem do gravatar de GrafenoGrafeno ( 2018-03-24 16:00:06 +0200 )editar

@Grafeno. Entendo. Aos poucos quando vou estudando vejo que tem semelhança com o Basic, mais ainda me perco um pouco na parte de objetos etc.

imagem do gravatar de ConradoConrado ( 2018-03-26 12:25:26 +0200 )editar
0

respondidas 2018-03-21 20:51:55 +0200

imagem do gravatar de Conrado

Segue o arquivo do banco @Grafeno e @Gilberto Schiavinatto.

C:\fakepath\meu_banco.odb

Agradeço a atenção

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

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2018-03-19 19:55:00 +0200

Lidas: 106 vezes

Última atualização: Mar 23 '18