Ir para conteúdo

POWERED BY:

Arquivado

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

PRWEB

[Resolvido] Pegar valor

Recommended Posts

Tudo bem galera?

 

Eu novamente com dúvidas, rs.

 

Tenho um formulário q contém 1 campo chamado QUANT: <input name="quant_<%=i%>" type="text" class="botao1" id="quant_<%=i%>" size="6"/>, e acima tenho session ("quantatual") = cp("quant").

Na pagina aonde gravo as informações deste formulário:

 

'Verificando quantidade de registros
Set itens = server.createobject("adodb.recordset")
Set itens = oConn.execute ("SELECT COUNT(*) AS temp FROM TB_COMPONENTES_FALTA")
num_rows = itens("temp")
itens.Close()
 
for i = 1 to num_rows
 
id = Request.form("id_"&i)
quant = Request.form("quant_"&i)

quant2 = cDBL("quant_"&i)
quant2 = cDBL(session("quantatual")) - quant2'Atualiza informaçoes no INTERBASE
oConn.execute ("update TB_COMPONENTES_FALTA Set quant = '"&quant2&"' WHERE id = " & cdbl(id))
next

oConn.Close()
Quando eu tenho 1 registro e coloco um valor no campo QUANT ele faz a subtração certa, mas quando tenho + de 1 registro e coloco a quantidade ele da um erro:

 

Tipo de erro:

Microsoft VBScript runtime (0x800A000D)

Type mismatch: 'cDBL'

/sistema_interno_hcs_v.1.0/hcs/ef_ok_item_comp.asp, line 25

 

Gostaria de saber se estou esquecendo de algo ou tem q mudar alguma coisa.

 

Muito Obrigado,

 

http://forum.imasters.com.br/public/style_emoticons/default/excl.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

converte para CInt

Compartilhar este post


Link para o post
Compartilhar em outros sites

troque o CDbl para CInt

 

Devolve uma variável forçada a ser inteiro.

(ex. Cint("2010") devolve 2010 como numero e não como String)

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um response.write na variavel para ver o k esta sendo passado

response.write(quant2)
response.end()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta pegando o valor do campo quant da tabela.

 

Assim, eu tenho o campo quant na tabela, e coloquei um outro campo quant_<%=i%> no formulário para fazer uma subtração, quando eu tenho + de 1 registro com campo quant_<%=i%> ele da o erro de Cint

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas quando tenho + de 1 registro é do loop do For next

pq você concatena o i nos request

 

id = Request.form("id_"&i)

quant = Request.form("quant_"&i)

quant2 = cDBL("quant_"&i)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloquei assim:

 

Set itens = server.createobject("adodb.recordset")
Set itens = oConn.execute ("SELECT COUNT(*) AS temp FROM TB_COMPONENTES_FALTA")
num_rows = itens("temp")
itens.Close()
 
for i = 1 to num_rows

id = Request.form("id_"&i)
quant2 = cDBL("quant_"&i) 


'Atualiza informaçoes no INTERBASE
oConn.execute ("update TB_COMPONENTES_FALTA Set quant = '"&quant2&"' WHERE id = " & cdbl(id))
next

oConn.Close()

Da erro:

Tipo de erro:

Microsoft VBScript runtime (0x800A000D)

Type mismatch: 'cDBL'

/sistema_interno_hcs_v.1.0/hcs/ef_ok_item_comp.asp, line 23

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tentando converter para inteiro , naun da certo....

o temp k esta usando , esta setado no bd como numerico

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele esta incompatível, o k é retornado em num_rows ???

dê um response.write na string sql

na sql coloque o CInt

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver!!!

 

Desta forma:

 

'Verificando quantidade de registros

Set itens = server.createobject("adodb.recordset")
Set itens = oConn.execute ("SELECT COUNT(*) AS temp FROM TB_COMPONENTES_FALTA where no_os = '"&no_os&"'")
num_rows = itens("temp")
itens.Close()
 
for i = 1 to num_rows

id = Request.form("id_"&i)

set itens = oConn.execute ("select * from TB_COMPONENTES_FALTA where id = '"&id&"'")

if not itens.eof then

quant = Request.form("quant_"&i)

'Atualiza informaçoes no INTERBASE
oConn.execute ("update TB_COMPONENTES_FALTA Set quant = '"&quant2&"' WHERE id = " & cdbl(id))
else
response.Redirect("teste.asp?id="&num_rows)

end if
next

oConn.Close()

Muito obrigado

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.