Ir para conteúdo

POWERED BY:

Arquivado

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

tr374

precisam ser núm. e zero qnd ñ prenchido

Recommended Posts

Tenho muitas variaveis vinda de um form, e são números, mas se não forem preenchidas devem ser zero. sinaum dá erro.

 

tem uma maneira mais inteligente de fazer isso do que assim? uma por uma?

ASP [/tr][tr]

'primeira variavel

av1 = request.form("av1")

if av1 <> "" then

av1 = cInt(av1)

else

av1 = 0

end if

'segunda variavel

av2 = request.form("av2")

if av2 <> "" then

av2 = cInt(av2)

else

av2 = 0

end if

' e por ai vai .....

[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que pensei foi algo do tipo:

 

ASP [/tr][tr]'declaro as variaveis acho que tipo num array mas não sei direito

 

array(av1,av2,...)

 

'depois faço um loop + tambem não sei direito

 

do while NOT array.EOF

 

array = request.form("array")

if array<> "" then

array= cInt(array)

else

array= 0

end if

 

array.MoveNext

loop

[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

<%for each Campo in Request.Form     if Request(Campo) <> "" then          ................comandos     else          ..........comandos...     end ifnext%>

 

falows

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta assim, o exemplo fiz pra quando os campos comecem por av, se não for tira esta parte...

 

[tr][/tr][tr][/tr]
ASP I = 0

 

For Each Item in Request.form

IF UCASE(LEFT(Item,2)) = "AV" THEN

 

REDIM Preserve Valor(I)

IF Request.Form(Item) <> "" THEN

Valor(I) = CINT(Request.Form(Item))

ELSE

Valor(I) = 0

END IF

END IF

Next

 

ve se serve

Compartilhar este post


Link para o post
Compartilhar em outros sites

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'CINT'

/sem/opcpdcma3.asp, line 24

 

ASP [/tr][tr]

dim campo

for each Campo in Request.Form

if Request(campo) <> "" then

campo = CINT(Request.Form(campo)) 'aqui é a linha 24

else

campo = 0

end if

next

[/tr]

 

joguei o form vazio, teoricamente ele deveria dar zero para todos os campos, ou totalmente preenchido, mas deu o erro acima nos dois casos.

 

Não falta declarar a um array campo ou algo parecido?

 

PS tentei fazendo todos os av1 = request.form("av1") ... mas sempre o mesmo erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta como fiz, é a mesma coisa mas já ta com array

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esqueci de dizer, mas os campos não são consecutivos, depois de av1, av2, tenho, cc1, cc1,s1,s2,.... e muitos outros.mas nos meus testes o problema está sendo que está passando pelo :if Request(campo) <> "" thene dando erro na linha que tem o cInt quando o campo está vazio.campo = CINT(Request.Form(campo))

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenata assim..I = 0For Each Item in Request.form REDIM Preserve Valor(I)IF Request.Form(Item) <> "" THENValor(I) = CINT(Request.Form(Item))ELSEValor(I) = 0END IFNext

Compartilhar este post


Link para o post
Compartilhar em outros sites

marioufpa > coloquei exatamente assim e deu o mesmo erro. http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'CINT'

/sem/opcpdcma3.asp, line 26

 

FABRICIOGOMES > isnumeric retorna um valor true ou false e não reduz o código, se estiver errado, não entendi o sua sugestão. http://forum.imasters.com.br/public/style_emoticons/default/excl.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

o isnumeric retorna se o parametro é um numero...antes de converter para inteiro (Cint), verifique se é um numero...dim campofor each Campo in Request.Form x = Request(campo) if Len(x) = 0 and isnumeric(x) and not isnull(x) then valor = CINT(x) 'aqui é a linha 24 else valor = 0 end ifnext

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado FABRICIOGOMES e tmb marioufpa.

Agora não deu mais erro:

ASP [/tr][tr]

dim campo

for each campo in Request.Form

x = Request(campo)

if isnumeric(x) and not isnull(x) then

valor = CINT(x) 'aqui é a linha 24

else

valor = 0

end if

response.Write(campo)

response.Write(" = ")

response.Write(valor)

response.Write("<BR>")

next

[/tr]

Imprimiu os valores certinho, note que tirei o len(x) pois com ele (não sei como funciona) estava sempre caindo no else, todos os valores zerados.

 

Gostaria de saber como faço para fazer (setar/definir) campo = valor?

Tentei com a expressão "campo = valor" e resultou: por exemplo 200 = 200

mas o que queria é setar/definir as variaveis assim: av1 = 200

pois depois usarei-as mais abaixo para fazer alguns calculos tipo rav = av1 - av2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gostaria de saber como faço para fazer (setar/definir) campo = valor?

Tentei com a expressão "campo = valor" e resultou: por exemplo 200 = 200

mas o que queria é setar/definir as variaveis assim: av1 = 200

pois depois usarei-as mais abaixo para fazer alguns calculos tipo rav = av1 - av2

tentei assim:

1

campo("campo") = valor

resultou erro

2

campo = valor

resultou 200 = 200; ou 1000 = 1000

3

response(campo) = valor

resultou erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual campo você esta falando...se for um campo de texto faz assimvalue="<%=Valor%>"

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual campo você esta falando...

 

se for um campo de texto faz assim

 

value="<%=Valor%>"

Estou falando do código acima,

entre o "end if" e o "next " coloquei um response.write para imprimir os valores vindos do form, só para me certificar que estão vindo os valores corretos, na verdade só vou utilizar mais emaixo no html esses dados/variaveis

mas se coloco av2 = "<%=av2%>" no html, mais embaixo, não aparece nada.

 

sendo que: av2 é um campo do formulário que é recuperado pelo loop for

 

então acho que tenho que definir as variavei entre o "end if" e o "next " do loop for

 

coloquei os exemplos no post acima mas nada funcionou e já fiquei sem idéias de como definir as variaveis.

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que não dá pra fazer exatamente como você quer, tente usar array

Compartilhar este post


Link para o post
Compartilhar em outros sites

ahahahaah :D :D :D se você ler meu segundo post agora, você vai rir tambem.

li seu post, vi que tinha varias falhas, mas temtei absorver a ideia, a ideia era aquela mesmo de usar array, mas não daquela forma...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado mesmo marioufpa pela ajudona.

 

Vou estudar um pouco como fazer esse array, pelo puco que sei, terá que ser bi-dimensional, pois terá que ter o "campo" e "valor"

 

...

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso mesmo será bidimensional, se tiver dificuldades lembra do imasters...

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.