ATUALIZAR CAMPOS LOGICA

ADRIANOM 03/02/2014 22:05:19
#434171
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.

FILMAN 03/02/2014 22:58:36
#434172
Resposta escolhida
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
ADRIANOM 03/02/2014 23:24:41
#434175
FILMAN... Grande guru!

Segue o exemplo... não deixe de ler o arquivo leia-me!

Conto, mais uma vez, contigo!!!
ADRIANOM 04/02/2014 08:22:40
#434181
Aguardo o retorno de vocês!!!
MARCELO.TREZE 04/02/2014 09:14:56
#434185
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

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
FILMAN 04/02/2014 11:30:43
#434196
Cara eu fiz dessa maneira veja se te ajuda.
ADRIANOM 04/02/2014 11:50:58
#434202
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?

FILMAN 04/02/2014 12:09:22
#434205
Bom no evento Click() do combo você pode fazer a busca na tabela e retornar as informações necessária!

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
ADRIANOM 04/02/2014 16:39:54
#434236
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...
MARCELO.TREZE 04/02/2014 16:44:18
#434237
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.
ADRIANOM 05/02/2014 09:39:33
#434276
Bem...

MARCELOTREZE e FILMAN

Conforme orientado, a respeito do combo, posto o código da forma que fiz.

Não deu certo.

Onde errei?
Página 1 de 3 [28 registro(s)]
Tópico encerrado , respostas não são mais permitidas