PROCV no BASE

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.

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.

@Conras, 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.

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

@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.

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,

@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.

@Conras, 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.

@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.

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

meu_banco.odb

Agradeço a atenção