Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Função Parecida Com A "nz"


Miqueias Micheletti

Pergunta

Olá pessoal, estou com um grande problema: num mesmo campo posso ter número bem como também texto(no caso sempre será NT). O que está acontecendo: quando somo os três campos e os mesmos sejam numéricos, tranquilo; o problema é quando um campo tem número e um outro tem texto (NT). O que eu preciso seria o seguinte: quando o encontrar NT em algum campo, trocar por zero ou desprezar o seu valor, para que não infrinja no resultado da somatória.

A função "nz" faz algo bem similar, porém ela troca nulo por zero e o que eu preciso é trocar NT por zero.

alguém pode me ajudar esclarecendo que caminho eu tomar para que eu consiga uma solucionar esse problema?

Obrigado.

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Bom seu problema me parece simples basta antes de realizar o calculo você testar o conteúdo, vou dar um exemplo utilizando a função IsNumeric( ) que verifica se o conteudo da caixa de texto (campo) é numerico ou não:

if IsNumeric( me.seuCampo) then

faça seu código caso o campo seja numerico

end if

Como você pode notar é bem simples, agora basta você adequar isso a sua necessidade...

Espero ter ajudado e por favor avise se deu certo!

Link para o comentário
Compartilhar em outros sites

  • 0

Estive verificando e me parece que essa função não está presente no meu access... é esse nome mesmo?

O que eu preciso é somar três campos e quando um deles não for numérico eu tenho que somar os outros dois, ou seja, só não irei somar os três campos do registro quando os três não forem numéricos...

obrigado...

Link para o comentário
Compartilhar em outros sites

  • 0

Bom essa função é nativa do VB e deveria estar funcionando, eu estou utilizando o access2000, bom mais continuando vou chamar seus campos de txt1,txt2 e txt3 para poder exemplificar pra você, bom utilize o código na propriedade de evento "Após atualizar" do txt3 e vou chamar seu campo resultado de txtSoma:

if IsNumeric(me.txt1) then

me.txtSoma.value=cdbl(me.txt1)

end if

if IsNumeric(me.txt2) then

me.txtSoma.value=cdbl(me.txtSoma)+cdbl(txt2)

end if

if IsNumeric(me.txt3) then

me.txtSoma.value=cdbl(me.txtSoma)+cdbl(txt3)

end if

Bom isso resolveria seu problema, note que adicionei a função CDBL para converter o valor string para numero, pois da forma que esta ao digitar um "12" na txt1 e fosse somar com "45" da txt2 o resultado seria "1245" ou seja ele somente iria concatenar e não somar os valores!

Link para o comentário
Compartilhar em outros sites

  • 0
Bom essa função é nativa do VB e deveria estar funcionando, eu estou utilizando o access2000, bom mais continuando vou chamar seus campos de txt1,txt2 e txt3 para poder exemplificar pra você, bom utilize o código na propriedade de evento "Após atualizar" do txt3 e vou chamar seu campo resultado de txtSoma:

if IsNumeric(me.txt1) then

me.txtSoma.value=cdbl(me.txt1)

end if

if IsNumeric(me.txt2) then

me.txtSoma.value=cdbl(me.txtSoma)+cdbl(txt2)

end if

if IsNumeric(me.txt3) then

me.txtSoma.value=cdbl(me.txtSoma)+cdbl(txt3)

end if

Bom isso resolveria seu problema, note que adicionei a função CDBL para converter o valor string para numero, pois da forma que esta ao digitar um "12" na txt1 e fosse somar com "45" da txt2 o resultado seria "1245" ou seja ele somente iria concatenar e não somar os valores!

Manoh, desculpe, mas não consegui ainda... já até reinstalei o access... estou com o access professional e dá um erro e quando olho nas funções internas do access percebo que ela não existe...

P/ converter o campo para numério para ele não ajuntar como no exemplo que você deu de 45 e 12 (4512 e sim retornar 57), eu consegui fazer isso, ou seja, se eu multiplicar por 1 ele automaticamente o converte para número, entretanto o problema se dá quando um desses campos não contem numero como no exemplo abaixo:

N_Alunos_ED_Inf_3anos = 5

N_Alunos_ED_Inf_4anos = 1

N_Alunos_ED_Inf_5anos = 10

Se eu fizer o campo total da seguinte forma, tudo é bem sucedido:

Total: ([sM_DADOS]![N_Alunos_ED_Inf_3anos]*1)+([sM_DADOS]![N_Alunos_ED_Inf_4anos]*1)+([sM_DADOS]![N_Alunos_ED_Inf_5anos]*1)

Agora se os valores forem conforme abaixo, não dá certo:

N_Alunos_ED_Inf_3anos = 5

N_Alunos_ED_Inf_4anos = NT

N_Alunos_ED_Inf_5anos = 10

Se no lugar do NT fosse "" (vazio) eu conseguiria resolver com a função nz, mas eu não posso trocá-lo para branco, por algumas outras razões...

Existe alguma outra função sem ser a IsNumeric que eu possa fazer isso, ou de repente incrementar de alguma forma para que consiga ter o resultado almejado?

agradeço...

Link para o comentário
Compartilhar em outros sites

  • 0

Bom tem outra função que tambem resolveria testei aqui e tambem funcionou bem trata-se da função Val(), veja o exemplo (observe que você deve utilizar ela e a outra num evento):

me.seuTotal.value= val(N_Alunos_ED_Inf_3anos)+val(N_Alunos_ED_Inf_4anos)+val(N_Alunos_ED_Inf_5anos)

Essa é até mais simples, como no exemplo anterior faça isso na propriedade de evento "Após atualizar" do campo "N_Alunos_ED_Inf_5anos", pois pelo que entendi ele seria o ultimo a receber os dados do calculo, então o código irá repassar o resultado para seu campo "total".

Acho que deve dar certo, cas não consiga envie um email com seu bd (ou a parte que interessa) que vejo o que está errado:

mrmalj@yahoo.com.br

Link para o comentário
Compartilhar em outros sites

  • 0

Manoh, deu certo agora...

valeu, muito obrigado pela força.

abraços...

Agora eu tenho um outro problema nessa mesma base de dados...

Tenho diversos valores, como por exemplo: X alunox na 5ª série, Y na 6ª, Z na 8ª e assim sucessivamente...

Quero filtrar numa determinada tabela tudo que seja igual e a geografia e se o livro utilizado for da 5ª séria (por exemplo), devo somar a quatidade de alunos que existem na 5ª e assim continuar com a soma em quanto houver livros em outras séries, somando seus respectivos valores, ou seja, a idéia no final é descobrir quantos alunos existem na 5ª série que usam livros de geografia....: neste caso, como faço a checagem?

Se puder me ajudar mais nessa agradeco muito, obrigado...

Editado por Miqueias Micheletti
Link para o comentário
Compartilhar em outros sites

  • 0

Manoh, valeu, era bem simples... mais até do que eu imaginei...

Uma pergunta: vocês estão em São Paulo? vocês dão cursos de access? gostaria de ver um pacote p/ duas pessoas. Poderia ser aqui na empresa, ou de repente pela internet; preferencialmente presencial...

Cara vamos ver se você pode me ajudar mais uma vez...

Estou montando uma outra consulta da seguinte forma:

Um nome de Editora que se repete n vezes; e um outro campo que seria o código do cliente... cada cliente usa diversas editoras e eu preciso saber quantos clientes usam a editora X, ou seja, quando coloquei os dois campos coloquei a opcção total e deixei como "agrupar por" apenas... fiz isso e ele pegou apenas uma informação de cada editora / cliente... agora preciso saber quanto tem... se eu filtro uma determinada editora me aparece a quantidade filtrada que é a correta, mas eu gostaria de ter esses números num campo, ou seja, temos 24 editoras, entreganto queria ter para as 24 editoras a sua respectiva quantidade...

Agradeço mais uma vez e aguardo também um retorno sobre o curso se vocês derem...

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Fábio de Barros Freire

Função IIf no access é SeImed (seimed)

SeImed([Valor A]>[Valor B];"valor A é maior";"valor B é maior")

ou

SeImed([Valor A]>[Valor B];[Valor A];[Valor B])

Abração

fabio.barros.freire@gmail.com

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...