Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

natalia

Mudar status conforme a qtde de produto

Recommended Posts

Olá pessoal, alguém sabe como fazer isso:Eu tenho uma página onde são exibidos os produtos com a qtidade de que ele começou a ser vendido e a qtidade que resta para terminar.Exemplo: Vamos supor que seja um computador e que a qde inicial seja: 30 unid., conforme os clientes forem comprando esse número diminuirá. Mas preciso mudar o status desse produto.Se ele estiver com 30 unid é pque está começando, se estiver por exemplo com 25 unid está esquentando, com 17 unid está quente. Isso é só um exemplo pois cada produto terá uma qtidade diferente, então preciso trabalhar com porcentagem. Eu não estou sabendo fazer isso:Eu tenho gravado no banco a qde_ini e a qde_final, exemplo: 30 e 20, então já vendi x%. Como faço para chegar nesse x%?Alguém sabe? Não sei se deu p/ entender.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Natalia:Use regra de três simples para calcular o percentual. Veja bem, no exemplo que você deu, se vender 30, meu percentual é 100%; pois não? Logo, se vender 20, meu percentual é p. Daí, podemos concluir que p é calculado da seginte maneira:p = (qde_final/qde_ini) * 100Um abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada Namio deu certo. Não querendo abusar da sua boa vontade, como posso fazer p/ que o numero seja inteiro. Que ao invés de 33, 3333 fique 33.Tentei fazer com Left e depois dei um replace, mas não deu certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Natalia:

 

Você pode utilizar a função Round.

 

Por exemplo:

 

Round(3.44, 1) 'Retorna 3.4.Round(3.45, 1) 'Retorna 3.4.Round(3.46, 1) 'Retorna 3.5.

Ou a função FormatNumber.

 

Essa função retorna uma cadeia de caracteres (string) representando o número formatado de acordo com os parâmetros fornecidos.

 

Para o seu caso, utilize, por exemplo:

 

Dim p as stringp = FormatNumber((qde_final/qde_ini) * 100, 0)

Ou, se você desejar armazenar o valor numérico em uma variável, poderá usar o exemplo abaixo:

 

Dim dblResultado as DoubleDim strResultado as StringdblResultado = (qde_final/qde_ini) * 100strResultado = FormatNumber(dblResultado, 0)

A diferença entre as duas funções é que Round retorna um valor decimal e FormatNumber retorna uma cadeia de caracteres.

 

Existem também as funções Int e Fix.

 

Ambas removem a parte fracionada e retornam um valor inteiro.

 

A diferença entre elas é que se o número for negativo, Int reotrna o primeiro valor inteiro negativo menor ou igual ao número informado; enquanto que Fix retorna o primeiro valor inteiro negativo maior ou igual ao número informado. Por exemplo:

 

p = Int(33.33) 'Retorna 33p = Fix(33.33) 'Retorna 33p = Int(-33.33) 'Retorna 34p = Fix(-33.33) 'Retorna 33

Um abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

namio, eu usei o seguinte código:'CODE Dim dblResultado as DoubleDim strResultado as StringdblResultado = (qde_final/qde_ini) * 100strResultado = FormatNumber(dblResultado, 0) Mas dá esse erro:Erro de tempo de execução do Microsoft VBScript (0x800A000D)Tipos incompatíveis: 'FormatNumber'/goone/produto/countdown.asp, line 318Pque dá esse erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Natalia:

 

Verifique os valores contidos nas variáveis qde_final e qde_ini. Provavelmente você está tentando passar um valor nulo para a função.

 

Para verificar, experimente usar o seguinte código:

 

Dim dblResultado as DoubleDim strResultado as StringdblResultado = (qde_final/qde_ini) * 100If IsNull(dblResultado) then   Response.write("dblResultado contém um valor nulo")Else   Response.write(dblResultado)   strResultado = FormatNumber(dblResultado, 0)end if

Depois me diga o que obteve.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi natalia Tenta usar o Int no lugar do FormatNumber, assim ele transformará em inteiro.dblResultado = (qde_final/qde_ini) * 100strResultado = Int(dblResultado)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.