ATUALIZAR CAMPOS LOGICA
Tenho os seguintes campos:
txtCusto
txtOutrosCustos
txtCustoFinal
Na função Lost_Focus do txtOutrosCustos tem umas linhas de código para realizar a soma e determinar o valor do Custo Final,
que será exibida no txtCustoFinal.
txtMPrazo
txTValorP
txtMVista
txtValorV
Na função Lost_Focus, do txtMPrazo e txtMVista, têm linhas de código que realizam o cálculo da porcentagem e multiplicação
para, com o txtCustoFinal, determinar o valor de venda à prazo (txtValorP) e à vista (txtValorV) respectivamente.
Quando dou um duplo click na Grid (do formulário que possui a relação de todos os produtos), ela carrega o formulário de produtos com todos os dados do banco de dados (inclusive os campos acima).
O que me acontece é que se eu mudar os dados de um dos campos, tenho que tabular todos eles para efetivar as devidas alterações dos valores.
Gostaria de uma luz para que, idependentemente do campo que eu modificar (exceto os txtMPrazo e txtMVista, que só será alterado mediante a ciência da mudança das margens de lucro) os demais valores se atualizariam automaticamente.
txtCusto
txtOutrosCustos
txtCustoFinal
Na função Lost_Focus do txtOutrosCustos tem umas linhas de código para realizar a soma e determinar o valor do Custo Final,
que será exibida no txtCustoFinal.
txtMPrazo
txTValorP
txtMVista
txtValorV
Na função Lost_Focus, do txtMPrazo e txtMVista, têm linhas de código que realizam o cálculo da porcentagem e multiplicação
para, com o txtCustoFinal, determinar o valor de venda à prazo (txtValorP) e à vista (txtValorV) respectivamente.
Quando dou um duplo click na Grid (do formulário que possui a relação de todos os produtos), ela carrega o formulário de produtos com todos os dados do banco de dados (inclusive os campos acima).
O que me acontece é que se eu mudar os dados de um dos campos, tenho que tabular todos eles para efetivar as devidas alterações dos valores.
Gostaria de uma luz para que, idependentemente do campo que eu modificar (exceto os txtMPrazo e txtMVista, que só será alterado mediante a ciência da mudança das margens de lucro) os demais valores se atualizariam automaticamente.
cara poste um exemplo ara que eu consiga te ajudar. Não consegui entender muito bem o seu problema.
Mas creio que deverá utilizar o VALIDATE do TextBox, pois o mesmo só entrará em execução caso pressione ENTER
Mas creio que deverá utilizar o VALIDATE do TextBox, pois o mesmo só entrará em execução caso pressione ENTER
FILMAN... Grande guru!
Segue o exemplo... não deixe de ler o arquivo leia-me!
Conto, mais uma vez, contigo!!!
Segue o exemplo... não deixe de ler o arquivo leia-me!
Conto, mais uma vez, contigo!!!
Aguardo o retorno de vocês!!!
Adriano a solução é simples vou até incrementar um pouquinho mais.
porém vamos a algumas situações que percebi no seu código, veja bem.
você possui uma função que permite apenas numeros nos textbox, isso é bom porque evita alguns erros, porém, veja como você está fazendo:
você cria um Variavel do tipo string
Depois você faz uma Conversão para double
sendo que tudo isso é desnecessário, veja ja que você declara uma variável, então ja declare a mesma pro formato correto, como você está trabalhando com valores eu aconselho a declarar como currency, e ficaria assim:
com isso você evita a conversão, que consome o processamento, lógico é imperceptÃvel, mas acontece.
outra coisa, você não precisa colocar (vba) na frente das funções:
vba.Format é apenas Fomat, vba.CDbl é apenas CDbl
bom as dicas acima são para você criar um código mais limpo, agora vamos a solução, veja alterações que fiz no seu código, nele acrescentei mais tres funções muito boas para uso com campos do tipo moeda.
agora veja o que fiz e apenas acrescente ao restante de seu código.
eu basicamente criei uma função para efetuar o calculo e chamei ela no change dos textbox
porém vamos a algumas situações que percebi no seu código, veja bem.
você possui uma função que permite apenas numeros nos textbox, isso é bom porque evita alguns erros, porém, veja como você está fazendo:
você cria um Variavel do tipo string
Dim ValorX As String
Depois você faz uma Conversão para double
ValorX = txtValorx
resultado = vba.CDbl(ValorX)
sendo que tudo isso é desnecessário, veja ja que você declara uma variável, então ja declare a mesma pro formato correto, como você está trabalhando com valores eu aconselho a declarar como currency, e ficaria assim:
Dim Valox As Currency
ValorX = txtValorx
resultado = ValorX
com isso você evita a conversão, que consome o processamento, lógico é imperceptÃvel, mas acontece.
outra coisa, você não precisa colocar (vba) na frente das funções:
vba.Format é apenas Fomat, vba.CDbl é apenas CDbl
bom as dicas acima são para você criar um código mais limpo, agora vamos a solução, veja alterações que fiz no seu código, nele acrescentei mais tres funções muito boas para uso com campos do tipo moeda.
agora veja o que fiz e apenas acrescente ao restante de seu código.
eu basicamente criei uma função para efetuar o calculo e chamei ela no change dos textbox
Cara eu fiz dessa maneira veja se te ajuda.
Vou analisar mais tarde, pois estou agora na net do smartphone. Agradeço à ambos....
MarceloTreze, primeiramente obrigado pela limpeza do código. A respeito do VBA., estou utilizando uma OCX caseira, que lascou com o a simples utilização [Ô]format[Ô], [Ô]UCase[Ô] e etc... para utilizá-los tenho que antecedê-los com [Ô]VBA[Ô]... Vai entender....
---------------------------------------------------------------------- // -------------------------------------------------------------------------
Outra situação dentro deste tópico, porém em campos diferentes.
Tenho uma tabela no firebird RAMALQTD (cod, codprod, identificacao, dtentrada, dtretirada, qtd).
Tenho um combobox (cboIdentificacao).
Gostaria que, ao selecionar um nome listado neste combo, os textbox (txtDTEntradaR, DTRetiradaR e QTDR) fossem preenchidos com os respectivos dados, referentes ao nome selecionado no cboidentificacao.
Pesquisei aqui no fórum, situações até similares, porém as respostas sagradas como corretas não me atenderam.
O máximo que consegui foi preencher com o primeiro item que aparece na cboIdentificacao, porém, ao selecionar outro nome, nada se altera.
Podem me ajudar também?
MarceloTreze, primeiramente obrigado pela limpeza do código. A respeito do VBA., estou utilizando uma OCX caseira, que lascou com o a simples utilização [Ô]format[Ô], [Ô]UCase[Ô] e etc... para utilizá-los tenho que antecedê-los com [Ô]VBA[Ô]... Vai entender....
---------------------------------------------------------------------- // -------------------------------------------------------------------------
Outra situação dentro deste tópico, porém em campos diferentes.
Tenho uma tabela no firebird RAMALQTD (cod, codprod, identificacao, dtentrada, dtretirada, qtd).
Tenho um combobox (cboIdentificacao).
Gostaria que, ao selecionar um nome listado neste combo, os textbox (txtDTEntradaR, DTRetiradaR e QTDR) fossem preenchidos com os respectivos dados, referentes ao nome selecionado no cboidentificacao.
Pesquisei aqui no fórum, situações até similares, porém as respostas sagradas como corretas não me atenderam.
O máximo que consegui foi preencher com o primeiro item que aparece na cboIdentificacao, porém, ao selecionar outro nome, nada se altera.
Podem me ajudar também?
Bom no evento Click() do combo você pode fazer a busca na tabela e retornar as informações necessária!
PS. Não testei o código, pois fiz sem o VB, mas deve servir para dar uma luz
Private Sub Combo1_Click()
Dim vSQL As String
Dim rst As New ADODB.RecordSet
vSQL = [Ô]SELECT dtentrada, dtretirada, qtd FROM RAMALQTD WHERE identificacao = [ô][Ô] & Combo1.Text & [Ô][ô][Ô]
rst.Open vSQL, SeuObjetoConexao
txtDTEntradaR.Text = Format(rst([Ô]dtentrada[Ô]), [Ô]dd/MM/yyyy[Ô])
txtDTRetiradaR = Format(rst([Ô]dtretirada[Ô]), [Ô]dd/MM/yyyy[Ô])
txtQTDR.Text = rst([Ô]qtd[Ô])
rst.Close
set rst = Nothing
End Sub
PS. Não testei o código, pois fiz sem o VB, mas deve servir para dar uma luz
Sobre o projeto que postei, MARCELOTREZE funcionou até o CustoFinal. Os valores finais ainda dependem da tabulação. Agradeço a máscara para formatar em tempo de execução. Valeu pelo incremento!
FILMAN funcionou perfeitamente... Obrigado!
Aguardo o apoio nessa empreitada... sobre o cboIdentificacao... FILMAN...MARCELOTREZE...
FILMAN funcionou perfeitamente... Obrigado!
Aguardo o apoio nessa empreitada... sobre o cboIdentificacao... FILMAN...MARCELOTREZE...
BOM sobre funcionar até o custo final foi o que eu disse ai basta você fazer o que fiz nos outros dois, quanto ao combo o FILMAN postou a resposta, ou seja vc devo colocar no evento click do combo uma query que preencha os campos.
Bem...
MARCELOTREZE e FILMAN
Conforme orientado, a respeito do combo, posto o código da forma que fiz.
Não deu certo.
Onde errei?
MARCELOTREZE e FILMAN
Conforme orientado, a respeito do combo, posto o código da forma que fiz.
Não deu certo.
Onde errei?
Tópico encerrado , respostas não são mais permitidas