Ir para conteúdo

POWERED BY:

Arquivado

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

Ambrosio

Definir variavel pelo loop

Recommended Posts

Bom dia a todos

 

Estou com uma dúvida...

 

Estou precisando fazer uma atualizacao no meu bd mas esta atualizacao depende de outros dados cadastrados no meu bd.

 

Estou pensando em fazer isso atraves de loop. Eu defini o nome do meu request form assim:

<input type="text" name="programa_<%=gknRS("codigo_gkn").value%>" value="<%=gknRS("programa").value%>" size="15">

ae desta forma eu precisaria definir a variavel atraves deste request form

 

Meu codigo ta assim

set gknCON = Server.CreateObject("ADODB.Connection")gknCON.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&gkn_dbsql = "SELECT * FROM pecas ORDER BY codigo_gkn ASC"set gknRS = gknCON.execute(sql)If Not IsEmpty(Request.Form("refresh")) Then  gknRS.MoveFirst  while not gknRS.EOF  VARIAVEL_<<<gknRS("codigo_gkn").value>>> = Request.Form(programa_<<<<=gknRS("codigo_gkn").value>>>>" ))   edit_cod = gknRS("codigo_gkn")    sql_programa = "UPDATE pecas SET Programa = '"&VARIAVEL_<<<gknRS("codigo_gkn").value>>>&"' WHERE codigo_gkn = '"&edit_cod&"' "    set gknRS_p = gknCON.Execute(sql_programa)    gknRS.movenext  wend	%> else%><form method="post" action="gkn_apontamento.asp?action=programa"><table border="0"><tr><td width="50"> </td><td><table border="1" cellspacing="0" bgcolor="#336699" style="font-family: Verdana; font-size: 8pt; color: #FFFF00">	<tr>		<td width="50" align="center"><b>Código</b></td>		<td><p align="center"><b>Programa</b></td>		<td width="20"> </td>	</tr>	<%	gknRS.MoveFirst	while not gknRS.EOF	%>	<tr>		<td width="50" align="center"><%=gknRS("codigo_gkn").value%></td>		<td>		<input type="text" name="programa_<%=gknRS("codigo_gkn").value%>" value="<%=gknRS("programa").value%>" size="15" style="font-family: Verdana; font-size: 8pt; border: 3px double #FFFF00; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px; color:#336699"></td>		<td width="20"><input type="submit" value="Atualizar" name="refresh" style="font-family: Verdana; color: #336699; font-weight: bold; border: 3px double #336699; font-size:9px"></td>	</tr>	<%	gknRS.movenext	wend	%></td></tr></table></table></form><%end ifgknCON.CloseSet gknCON = Nothing
Como posso definir isso?

 

Essa partes que estao com <<< >>> eh onde estao minha duvida!

 

Aguardo alguma resposta

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Definir o NOME de uma váriável dinâmicamente não é possível, mas em lugar disso você pode usar um ARRAY para armazenar esses dados. Com relação ao Request, é possível ser feito dessa forma mesmo, concatenando um valor vindo de um RecordSet com uma "base" fixa de nome.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Definir o NOME de uma váriável dinâmicamente não é possível, mas em lugar disso você pode usar um ARRAY para armazenar esses dados. Com relação ao Request, é possível ser feito dessa forma mesmo, concatenando um valor vindo de um RecordSet com uma "base" fixa de nome.

Que bom que da pra fazer o que eu pensava....Mas como que eu faço isso, nao tenho ideia nem por onde comecar!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olhando rápidamente seu código pude perceber que você só utiliza a variavel que quer criar para Atualizar uma tabela, se for isso é só fazer diretamente na SQL.

 

Ficaria +/- assim:

  while not gknRS.EOF

 edit_cod = gknRS("codigo_gkn")

 sql_programa = "UPDATE pecas SET Programa = '"& Request.Form("programa_"& edit_cod) &"' WHERE codigo_gkn = '"& edit_cod &"';"  

 set gknRS_p = gknCON.Execute(sql_programa)

 gknRS.movenext
 wend

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa...

Estou de volta!!! Quarta não deu pra mim testar!!!

Agora coloquei la e deu erro

 

no local onde esta set gknRS_ep = gknCON.Execute(sql_programa) eu tinha colocado assim uma etapa antes: Response.Write sql_programa

 

Ae apareceu la

 

UPDATE pecas SET Programa = '5000' WHERE codigo_gkn = '003';UPDATE pecas SET Programa = '10000' WHERE codigo_gkn = '004';..................................

 

Mas quando voltei pro Execute deu esse erro:

 

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

 

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

 

/foldermfg/gkn_apontamento0.asp, line 22

 

Meu código ficou assim:

set gknCON = Server.CreateObject("ADODB.Connection")gknCON.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&gkn_dbsql = "SELECT * FROM pecas ORDER BY codigo_gkn ASC"set gknRS = gknCON.execute(sql)If Not IsEmpty(Request.Form("refresh")) Then  gknRS.MoveFirst  while not gknRS.EOF  edit_cod = gknRS("codigo_gkn")	    sql_programa = "UPDATE pecas SET Programa = '"& Request.Form("programa_"&edit_cod)&"' WHERE codigo_gkn = '"& edit_cod &"';"    set gknRS_ep = gknCON.Execute(sql_programa)    gknRS.movenext  wend else%><form method="post" action="gkn_apontamento.asp?action=programa"><table border="0"><tr><td width="50"> </td><td><table border="1" cellspacing="0" bgcolor="#336699" style="font-family: Verdana; font-size: 8pt; color: #FFFF00">	<tr>		<td width="50" align="center"><b>Código</b></td>		<td><p align="center"><b>Programa</b></td>		<td width="20"> </td>	</tr>	<%	gknRS.MoveFirst	while not gknRS.EOF	%>	<tr>		<td width="50" align="center"><%=gknRS("codigo_gkn").value%></td>		<td>		<input type="text" name="programa_<%=gknRS("codigo_gkn").value%>" value="<%=gknRS("programa").value%>" size="15" style="font-family: Verdana; font-size: 8pt; border: 3px double #FFFF00; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px; color:#336699"></td>		<td width="20"><input type="submit" value="Atualizar" name="refresh" style="font-family: Verdana; color: #336699; font-weight: bold; border: 3px double #336699; font-size:9px"></td>	</tr>	<%	gknRS.movenext	wend	%></td></tr></table></table></form><%end ifgknCON.CloseSet gknCON = Nothing

Compartilhar este post


Link para o post
Compartilhar em outros sites

Abre o Access e vai em Consultas, cria uma nova consulta, feche a janelinha que mostra as tabelas, clica na parte superior com o botão direito, selecione SQL, aí você cola um update que você gerou no ASP, e coloque um ; no final da query no Access, clique no botão Executar (!).

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz...mas no caso eu teria que por alguns valores pq akele meu update depende de valores que ficam girando e tem tambem esse request.form que vem do formulario anteriorUPDATE pecas SET Programa = '"& Request.Form("programa_"&edit_cod)&"' WHERE codigo_gkn = '"& edit_cod &"' " ; esse edit_cod eh uma variavel do codigo da peça que eu peguei atraves mesmo do meu banco de dados e ele fica girando do inicio ao fim do banco de dados. mas coloquei la pra testar assimUPDATE pecas SET Programa = '111' WHERE codigo_gkn = '003' ;E ae deu certo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora que eu reparei que na sua query tem um ; no final, não sei se isso interfere, mas tenta tirar o ;.

sql_programa = "UPDATE pecas SET Programa = '"& Request.Form("programa_"&edit_cod)&"' WHERE codigo_gkn = '"& edit_cod &"'"

Compartilhar este post


Link para o post
Compartilhar em outros sites

hehehpois ehrepara que ja na resposta anterior a essa sua eu ja tinha tirado elatestei mas deu o mesmo errroserá que existe outra forma de fazer esse update de acordo com o bd... minha ideia inicial era definir o nome da variavel antes de inserir no sql

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então...eu ja havia retirado esse ; Mas eu consegui fazer a atualizacao do bd Na coluna PROGRAMA que era pra ser atualizada estava definida como Número... Ae eu defini pra Texto pra testar e funcionou.Agora eu queria só saber como que eu faço pra funcionar com ela definida em Número

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que bom que está quase resolvido, mas vai uma dica, o ";" no final da SQL não é necessário mas sempre o coloco para manter o padrão da linguagem SQL.

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.