Cosulta con el UPDATE

Hola Averías, tengo una consulta que creo que es muy simple, pero no logro encontrarle la vuelta.
Hace unos dos meses más o menos te hice una consulta, que es muy larga de explicar ahora, pero en fin me recomendaste que en una tabla de access haga un campo con nombre "activo", que sea boolean, y que cuando quiero agregar un registro, en vez de agregar siempre, que busque alguno inactivo y lo actualice para poder "reutilizarlo". El tema es que hice todo, pero cuando lo quiero ejecutar recibo el siguiente error en el navegador:
Error de compilación de Microsoft VBScript error '800a0401'
Se esperaba un final de instrucción
/TMP6fb937sz72.asp, line 28
Update tarifas Set destino="Playa" where id=1
---------------^
y ese "^" apunta a la S de Set.
el codigo fuente del ASP es:
<!--#include virtual = "/Includes/conexion.asp"-->
<%
Set rtarifa= Server.CreateObject("Adodb.recordset")
rtarifa.Activeconnection=con
rtarifa.Cursortype=AdopenDynamic
rtarifa.Source="Select * from tarifas"
rtarifa.open()
dim nuevo, destino
'Primero tiene que buscar algun programa que no este activo
'Colocamos una variable que cambie por el id del programa no activo
'y al principio la ponemos en cero.
Nuevo=0
do while not rtarifa.eof
if rtarifa("activo")=false then
Nuevo=rtarifa("id")'si la encontro, cambia nuevo por la id del programa obsoleto
exit do
end if
rtarifa.movenext
Loop
Response.write(nuevo)
if nuevo<>0 then
'si es diferente de cero quiere decir que encontro alguno inactivo
Update tarifas Set destino="Playa" where id=nuevo
else
response.write("No se han encontrado registros inactivos")
end if
rtarifa.close
set rtarifa=nothing
%>
Tengo la sospacha de que tengo que colocar la sentencia UPDATE en una variable que puedo llamar por ejemplo SQL, y después hacer rtarifa.execute(SQL). Creo que algo así es lo que leí en algunas páginas, pero en este caso, el recorset ya lo abrí y lo use, no se si se puede volver a abrir(con las modificaciones hechas por el update). Espero que puedas ayudarme con esto. Muchas gracias de antemano.

1 respuesta

Respuesta
1
No puedes poner directamente una instrucción SQL como:
Update tarifas Set destino="Playa" where id=nuevo
En el código VBScript, si no que tendrás, o bien como dices poner rtarifa.execute(SQL), o yo suelo hacer esto:
Set rsUpdate= Server.CreateObject("Adodb.recordset")
rsUpdate.Activeconnection=con
rsUpdate.Cursortype=AdopenDynamic
rsUpdate.Source="Update tarifas Set destino='Playa' where id=nuevo "
rsUpdate.open()
rsUpdate.close()
Sustituye Update tarifas Set destino="Playa" where id=nuevo por lo anterior y te debe funcionar
Quita la ultima linea:
RsUpdate. Close()
O coméntala.
A ver que pasa
Le agregue como me has dicho lo siguiente:
Set rsUpdate= Server.CreateObject("Adodb.recordset")
rsUpdate.Activeconnection=con
rsUpdate.Cursortype=AdopenDynamic
rsUpdate.Source="Update tarifas Set destino='Playa' where id= "&nuevo&""
rsUpdate.open()
rsUpdate.close()
Lo único que cambie fue el "&nuevo&" en vez de nuevo solamente porque me daba el siguiente error:
Microsoft JET Database Engine error '80040e10'
No se han especificado valores para algunos de los parámetros requeridos.
/TMP78zos7ycds.asp, line 31
Pero ahora recibo el siguiente error:
ADODB. Recordset error '800a0e78'
La operación no está permitida si el objeto está cerrado.
/TMP6uf8k7ybuw.asp, line 32
¿Alguna idea? Gracias de antemano.
Disculpa la demora, estuve con exámenes y no pude ponerme con el ASP, pero te cuento que al parecer, funciona; no hay ningún error y la tabla se actualiza. Si llego a tener alguna otra duda te la estaré comunicando. Muchas gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas