Notifications
Clear all

Carregar Textbox com seleção Combobox

5 Posts
3 Usuários
0 Likes
1,991 Visualizações
 ACG
(@acg)
Posts: 6
Active Member
Topic starter
 

Bom dia a todos.

Estou com 02 duvidas em meu projeto, e elas são a seguintes:

1- no projeto possui uma "combobox" que referencia uma tabela access conforme código abaixo.

sql = "SELECT produto FROM insumocad"
    sql = sql & " ORDER BY produto"
    
    cx.Conectar
    
    Set banco = New ADODB.Recordset
    
    banco.Open sql, cx.conn
    
    Do While Not banco.EOF
        Me.cboDescriçao.AddItem banco!produto
        banco.MoveNext
    Loop
    cx.Desconectar
    Set banco = Nothing

Este procedimento funciona corretamente, contudo preciso que uma textbox seja carregada
com o valor correspondente ao produto selecionado da tabela, já que os valores também estão
na mesma tabela access. Na internet não encontrei nada sobre o assunto.

2- em outro momento gostaria de criar um Modulo de Classe ou Modulo que aplica-se
todas as formatações diretamente no projeto sem a necessidade de aplica-las no formulário.
Já tentei com diversas sugestões encontradas na internet, e nada.

Exemplo:

txtCustoNF.Value = Fix(txtTotal1.Value) + Fix(txtTotal2.Value) + Fix(txtTotal3.Value) + Fix(txtTotal4.Value) + Fix(txtTotal5.Value) + Fix(txtTotal6.Value) + Fix(txtTotal7.Value) + Fix(txtTotal8.Value) + Fix(txtTotal9.Value) + Fix(txtTotal10.Value) + Fix(txtTotal11.Value) + Fix(txtTotal12.Value) + Fix(txtTotal13.Value) + Fix(txtTotal14.Value) + Fix(txtTotal15.Value)

Desde já agradeço qualquer ajuda, pois neste inicio neste aprendizado tudo é novo.

Abçs.

Fiquem com Deus.

 
Postado : 31/10/2019 9:44 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 4062
Illustrious Member
 

ACG,

Boa tarde!

Com relação a primeira parte da sua dúvida, não é no mesmo procedimento que você vai carregar o valor do produto pois no código específico que carrega a descrição dos produtos no combo é feita uma varredura (laço do while) em todos os produtos e os mesmos são carregados no combo. Para mostrar o valor dos produtos, você deve fazer um código semelhante, associado ao evento Change do comboBox, mais ou menos assim:

sql = "SELECT produto, valor FROM insumocad" 'Verifique se o nome do campo valor é escrito dessa forma mesmo
   
    cx.Conectar
   
    Set banco = New ADODB.Recordset
   
    banco.Open sql, cx.conn
   
    Do While Not banco.EOF
        If Me.cboDescriçao.Value = banco!produto then
             Me.Txt_Valor.Text = banco!valor 'Verifique se o nome da caixa de texto se chama Txt_Valor
             Exit Do
        End If
        banco.MoveNext
    Loop
    cx.Desconectar
    Set banco = Nothing

A segunda parte da sua demanda, confesso que não entendi o que você quer.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 07/11/2019 2:14 pm
 ACG
(@acg)
Posts: 6
Active Member
Topic starter
 

Bom dia!
Wagner Morel

Desde já agradeço muito a força, e vou aprimorar o código para a 1ª duvida com sua dica.
Quanto a segunda duvida tentarei explicar melhor o objetivo.

Bom possuo 15 textboxes que apresentam resultados de multiplicação isolado em cada uma,
e outra textboxSOMA conterá a soma das 15 textboxes, contudo ao colocar a formula dentro
do formulário

txtCustoNF.Value = Fix(txtTotal1.Value) + Fix(txtTotal2.Value) + Fix(txtTotal3.Value) + Fix(txtTotal4.Value) + Fix(txtTotal5.Value) + Fix(txtTotal6.Value) + Fix(txtTotal7.Value) + Fix(txtTotal8.Value) + Fix(txtTotal9.Value) + Fix(txtTotal10.Value) + Fix(txtTotal11.Value) + Fix(txtTotal12.Value) + Fix(txtTotal13.Value) + Fix(txtTotal14.Value) + Fix(txtTotal15.Value)

o resultado ao abrir o formulário é o esperado, mas não se mantem quando se busca o próximo registro.
Diante disto acredito que a criação de um modulo simples ou modulo de classe seja a solução onde a cada seleção
de registro a formula seja executada automaticamente na textboxSOMA sem a necessidade da formula dentro
do formulário.

Mais uma vez agradeço a enorme ajuda.
Fique com Deus.

Atenciosamente.

André Guedelha

 
Postado : 09/11/2019 8:58 am
Reinaldo
(@rlm)
Posts: 246
Estimable Member
 

"...o resultado ..." Ao abrir o formulário provavelmente a rotina que dispara o calculo e executada, por isso do resultado esperado.
"...acredito que a criação de um..." Independentemente de onde for alocada a soma, se a mesma não for devidamente "chamada" não irá produzir efeito algum.
Primeiro deve definir/decidir quando a txtCustoNF deva ser calculada/recalculada; como não conhecemos seu projeto/modelo cabe a ti essa decisão/definição.
definido esse ponto pode-se: Montar uma rotina no próprio modulo do formulário (creio eu ser o mais recomendado)
algo +/- assim:

Private Sub soma()
Dim stTotal As Double, x As Integer
For x = 1 To 15
stTotal = stTotal + Fix(Controls("txtTotal" & x).Value)
Next
txtCustoNF.Value = stTotal
End Sub

Para chamar a execução algo +/- assim
(apenas exemplo)

Private Sub cboDescriçao_Change()
CALL soma
End Sub

Reinaldo

 
Postado : 09/11/2019 10:33 am
 ACG
(@acg)
Posts: 6
Active Member
Topic starter
 

Boa tarde
Desde já agradeço imensamente as ajudas, e com seus apoios criei o seguinte código que esta funcionando.

'------------------------------------------------------------------------------------------
Private Sub UserForm_Initialize()

    sql = "SELECT Codigo FROM InsumoInv"
    sql = sql & " ORDER BY Codigo"
    
    cx.Conectar
    
    Set banco = New ADODB.Recordset
    
    banco.Open sql, cx.conn
    
    Do While Not banco.EOF
        Me.cboCod1.AddItem banco!Codigo
        Me.cboCod2.AddItem banco!Codigo
        Me.cboCod3.AddItem banco!Codigo
        Me.cboCod4.AddItem banco!Codigo
        Me.cboCod5.AddItem banco!Codigo
        Me.cboCod6.AddItem banco!Codigo
        Me.cboCod7.AddItem banco!Codigo
        Me.cboCod8.AddItem banco!Codigo
        Me.cboCod9.AddItem banco!Codigo
        Me.cboCod10.AddItem banco!Codigo
        Me.cboCod11.AddItem banco!Codigo
        Me.cboCod12.AddItem banco!Codigo
        Me.cboCod13.AddItem banco!Codigo
        Me.cboCod14.AddItem banco!Codigo
        Me.cboCod15.AddItem banco!Codigo
   
        banco.MoveNext
    Loop
    cx.Desconectar
    Set banco = Nothing
'------------------------------------------------------------------------------------------

e já no código no Combobox ficou assim.

Private Sub cboCod1_change()
    
    Dim cx As New ClasseConexao
    Dim banco As ADODB.Recordset
    Dim sql As String
    
    sql = "SELECT Codigo, Produto, UnidadeEstoque, PerdaTotal, EstoqueMaximo, EstoqueMinimo, Resuprimento, SomaDeQtdCompra, SomaDeTotCompra, SomaDeQtdVenda, SomaDeTotVenda, EstoqueQtd, EstoqueVal, CustoMedio FROM InsumoInv"
    sql = sql & " WHERE Codigo = " & Me.cboCod1
    
    Set banco = New ADODB.Recordset
    
    cx.Conectar
    
    On Error Resume Next
    banco.Open sql, cx.conn
    
    Dim Produto As String
    Dim EstoqueQtd As String
    Dim CustoMedio As String
    
    Produto = banco.Fields("Produto")
    EstoqueQtd = banco.Fields("EstoqueQtd")
    CustoMedio = banco.Fields("CustoMedio")
    
    Me.cboDescriçao1.Text = Produto
    Me.txtEst1.Text = EstoqueQtd
    Me.txtValor1.Text = CustoMedio
    
    Set banco = Nothing
    cx.Desconectar

End Sub

Este ultimo código apliquei em cada um dos Comboboxes do formulário.

Grato.

Fiquem todos com Deus.

 
Postado : 12/11/2019 11:28 am