Foros del Web » Programando para Internet » ASP Clásico »

Se las voy a poner mas facil

Estas en el tema de Se las voy a poner mas facil en el foro de ASP Clásico en Foros del Web. tengo este código: if request.querystring("newreport")<>"" then newrepname = request.querystring("newreport") newdate = date() Set Reports = Server.CreateObject("ADODB.Recordset") Reports.ActiveConnection = MM_MBClientes_STRING Reports.Source = "insert into reports (reportname, ...
  #1 (permalink)  
Antiguo 24/11/2002, 21:22
Avatar de GhostRider  
Fecha de Ingreso: julio-2001
Ubicación: en mi propio infierno
Mensajes: 248
Antigüedad: 23 años, 9 meses
Puntos: 0
la base de datos se actualiza al vuelo?

tengo este código:

if request.querystring("newreport")<>"" then

newrepname = request.querystring("newreport")
newdate = date()

Set Reports = Server.CreateObject("ADODB.Recordset")
Reports.ActiveConnection = MM_MBClientes_STRING
Reports.Source = "insert into reports (reportname, reportdate) values ('" & newrepname & "', " & newdate & ")"
Reports.CursorType = 0
Reports.CursorLocation = 2
Reports.LockType = 1
Reports.Open()

Reports_numRows = 0

Reports.Close()
Set Reports = Nothing

else

newrepname = request.querystring("selectreport")

end if

Dim Reports2
Dim Reports2_numRows

Set Reports2 = Server.CreateObject("ADODB.Recordset")
Reports2.ActiveConnection = MM_MBClientes_STRING
Reports2.Source = "select * from reports where ReportName = '" & newrepname & "'"
Reports2.CursorType = 0
Reports2.CursorLocation = 2
Reports2.LockType = 1
Reports2.Open()

Reports_numRows = 0

Dim Orders
Dim Orders_numRows

dim numorder, i
numorder = request.querystring("numorder")
dim idreport
idreport = Reports2.fields.item("idReport").value





y me marca un error en la ultima linea diciendo que el valor es EOF o el registro no existe.

mi pregunta es si al cerrar el primer recordset (insert) la base de datos se actualiza y debe reconocer el segundo recorset (select)

si es asi, cual es el error?

si no es asi, como puedo resolver esto para que en un tercer recordset pueda hacer un insert con el id del reporte (recien creado) en vez del nombre?
  #2 (permalink)  
Antiguo 25/11/2002, 20:04
Avatar de GhostRider  
Fecha de Ingreso: julio-2001
Ubicación: en mi propio infierno
Mensajes: 248
Antigüedad: 23 años, 9 meses
Puntos: 0
que nadie sabe????

me urge!!!!
  #3 (permalink)  
Antiguo 25/11/2002, 20:55
Avatar de GhostRider  
Fecha de Ingreso: julio-2001
Ubicación: en mi propio infierno
Mensajes: 248
Antigüedad: 23 años, 9 meses
Puntos: 0
Exclamación Se las voy a poner mas facil

Necesito insertar, con base en una forma de una página anterior, datos en tres tablas distintas, de las cuales dos dependen de la primera, para insertar nuevos registros intento hacer esto:



1. abro un recorset de la tabla 1 y hago el insert (1 registro) de un campo nombre y otro fecha. cierro el recordset.

2. abro un recordset de la misma tabla 1 y hago un select para sacar el id (autonumérico) del registro que acabo de meter. meto el valor del idnombre en una variable. cierro el recordset.

3. hago un for para meter varios registros en la tabla 2 (de uno en uno) y en la tabla 3 (varios registros dependientes)

3. abro un recordset de la tabla 2 y hago un insert (un registro por cada loop del for) para meter el idnombre_tabla1 , el nombre del registro y otros datos. cierro el recordset.

4. abro un recordset de la tabla 2 y hago un select para sacar el id del registro que acabo de meter aqui, lo meto en una variable. cierro el recordset.

5. abro un recordset de la tabla 3 y meto los registros relativos al registro nuevo de la tabla 2. cierro el recordset.

6. cierro el for



ahora, mi problema es que en el punto 2, al tratar de meter el id nuevo en la variable me indica que no existe el registro, supongo que este error me lo marcará igual al registrar el id de la tabla 2.


Mi duda es como actualizar en runtime la base de datos para que al hacer el select encuentre el registro que acabo de meter. el codigo que utilizo es este:


Set Reports = Server.CreateObject("ADODB.Recordset")
Reports.ActiveConnection = MM_MBClientes_STRING
'Reports.Source = "insert into reports (reportname, reportdate) values ('" & newrepname & "', " & newdate & ")"
slq = "insert into reports (reportname, reportdate) values ('" & newrepname & "', " & newdate & ")"
Reports.Execute(sql)
Reports.CursorType = 0
Reports.CursorLocation = 2
Reports.LockType = 1
Reports.Open()



Reports_numRows = 0

Reports.Update

Reports.Close()
Set Reports = Nothing




Noten que cambien el source por execute y además añadi update, pero nada funciono.

por favor ayudenme!!!!
  #4 (permalink)  
Antiguo 26/11/2002, 00:43
 
Fecha de Ingreso: febrero-2002
Ubicación: Mi ASP Bunker
Mensajes: 397
Antigüedad: 23 años, 2 meses
Puntos: 1
No veo algun error, pero asegurate que para llamar esta pagina, suponiendo se llame pagina.asp, hay 2 opciones :

para un report nuevo:

pagina.asp?newreport=listadonuevo

para uno que se seleccione:

pagina.asp?newreport=listado3


Los cambios luego del insert se deberian reflejar antes de la consulta, por eso dudo que este pasando por el if.. e insertar.
Seguramente se cuela por la 2da. opcion del if, o sea un report de una lista, pero sin embargo, tampoco existe en la Tabla de Reports, o tiene otro nombre.

Bueno, no se si te maree mas pero verifica como estas llamando esta pagina, y asegurate de cargar manualmente los listados de la lista, con Access por ejemplo.

Saludos

Ah ! y en este mi 1er. mensaje... avanti ASP !
  #5 (permalink)  
Antiguo 26/11/2002, 03:29
Avatar de cacike500  
Fecha de Ingreso: noviembre-2002
Mensajes: 56
Antigüedad: 22 años, 5 meses
Puntos: 0
No se...no se

La verdad, yo jamas he programado un insert asi. Y parece como demasiado rollo para algo que se puede hacer en dos lineas. Primero, no necesitas un objeto recordset para hacer un insert y segundo, es tan sencillo como esto:

dim db
set db = Server.CreateObject("ADODB.Connection")
db.open("Cadena de conexion")
db.execute("instruccion insert")

Pruebalo asi y ya veras como funciona.

Espero haber servido de ayuda,

cacike500
__________________
como dice un sabio amigo mio:
web puede...
master algo menos...
[AIG...2001]
  #6 (permalink)  
Antiguo 26/11/2002, 15:21
Avatar de GhostRider  
Fecha de Ingreso: julio-2001
Ubicación: en mi propio infierno
Mensajes: 248
Antigüedad: 23 años, 9 meses
Puntos: 0
gracias a todos los que me respondieron, ya se pudo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:17.