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

Alguien puede decirme como resolver este codigo???

Estas en el tema de Alguien puede decirme como resolver este codigo??? en el foro de ASP Clásico en Foros del Web. Tengo este codigo y me da el error que especifico debajo: <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <!--#include file="../Connections/Conexion1.asp" --> <% Dim Ad Dim Ad_numRows Dim Repeat1__numRows Dim Repeat1__index ...
  #1 (permalink)  
Antiguo 17/04/2012, 15:40
 
Fecha de Ingreso: abril-2012
Mensajes: 20
Antigüedad: 12 años, 8 meses
Puntos: 1
Pregunta Alguien puede decirme como resolver este codigo???

Tengo este codigo y me da el error que especifico debajo:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="../Connections/Conexion1.asp" -->
<%

Dim Ad
Dim Ad_numRows
Dim Repeat1__numRows
Dim Repeat1__index
Dim fac
Dim uni

Dim numPlaz
Dim nif
Dim opc
Dim can
Dim sup

Repeat1__numRows = -1
Repeat1__index = 0
Ad_numRows = Ad_numRows + Repeat1__numRows

Set Ad = Server.CreateObject("ADODB.Recordset")
Ad.ActiveConnection = MM_Conexion1_STRING
Ad.Source = "SELECT * FROM Admitidos ORDER BY OPCION, NOTA"
Ad.CursorType = 0
Ad.CursorLocation = 2
Ad.LockType = 1
Ad.Open()
Ad_numRows = 0
%>



<% While ((Repeat1__numRows <> 0) AND (NOT Ad.EOF)) %>

<BR><%fac=(Ad.Fields.Item("FACULTAD").Value)%><B R/>
<BR><%uni=(Ad.Fields.Item("UNIVERSIDAD").Value)%>< BR>
<BR><%numPlaz=(Ad.Fields.Item("NUM PLAZAS").Value)%><BR/>
<BR><%nif=(Ad.Fields.Item("NIF").Value)%><BR/>
<BR><%opc=(Ad.Fields.Item("OPCION").Value)%><BR/>

<%
If (numPlaz > 0) Then 'Si el numero de plazas de la fila que es leida es mayor que cero, actualiza ese NIF a CANDIDATO=true, SUPLENTE=false'


set Command1 = Server.CreateObject("ADODB.Command")
Command1.ActiveConnection = MM_Conexion1_STRING
Command1.CommandText = "UPDATE Admitidos SET NOTA= 333, CANDIDATO=true, SUPLENTE=false WHERE UNIVERSIDAD= '" + Replace(uni, "'", "''") + "' AND FACULTAD='" + Replace(fac, "'", "''") + "' and NIF = '" + Replace(nif, "'", "''") + "';"

Command1.CommandType = 1
Command1.CommandTimeout = 0
Command1.Prepared = true
Command1.Execute()



'Sigue dentro del if. Como ya tiene un candidato en esa universidad/facultad, debe de actualizar el numero de plazas, con lo cual, le resta una en todas las filas donde aparezca el par universidad/facultad'

set Command2 = Server.CreateObject("ADODB.Command")
Command2.ActiveConnection = MM_Conexion1_STRING
Command2.CommandText = "UPDATE Admitidos SET [NUM PLAZAS]='" + Replace(numPlaz-&1, "'", "''") + "' WHERE UNIVERSIDAD= '" + Replace(uni, "'", "''") + "' AND FACULTAD='" + Replace(fac, "'", "''") + "' ;"

Command2.CommandType = 1
Command2.CommandTimeout = 0
Command2.Prepared = true
Command2.Execute()


'Despues de ejecutar la consulta, lee los datos de candidato y suplente para ver si tiene que seguir haciendo actualizacion o borrado de filas'

can=(Ad.Fields.Item("CANDIDATO").Value)
sup=(Ad.Fields.Item("SUPLENTE").Value)


%>

<%
If can=true Then 'Si ha encontrado un candidato, debe mirar si el nif de ese candidato aparece mas veces en la tabla y tiene mas veces el campo candidato=true. Si es asi, mira la opcion y si esta ultima es menos, borra la fila primera ya que candidatos con menos opcion se borran de la tabla'

set Command3 = Server.CreateObject("ADODB.Command")
Command3.ActiveConnection = MM_Conexion1_STRING
Command3.CommandText = "DELETE Id FROM Admitidos WHERE NIF = '" + Replace(nif, "'", "''") + "' AND ('" + Replace(opc, "'", "''") + "' > EXISTS(SELECT OPCION FROM Admitidos WHERE NIF = '" + Replace(nif, "'", "''") + "' AND CANDIDATO=true));"

Command3.CommandType = 1
Command3.CommandTimeout = 0
Command3.Prepared = true
Command3.Execute()



'Si ha entrado en ese if, quiere decir que ha borrado esa fila, por tanto, debemos actualizar una vez mas el numero de plazas, ya que habria otra vacante es esa universidad/facultad que hemos borrado
'
set Command4 = Server.CreateObject("ADODB.Command")
Command4.ActiveConnection = MM_Conexion1_STRING
Command4.CommandText = "UPDATE [Admitidos] SET [NUM PLAZAS]='" + Replace(numPlaz+&1, "'", "''") + "' WHERE UNIVERSIDAD= '" + Replace(uni, "'", "''") + "' AND FACULTAD='" + Replace(fac, "'", "''") + "' ;"

Command4.CommandType = 1
Command4.CommandTimeout = 0
Command4.Prepared = true
Command4.Execute()
end if%>




<% If sup=true then 'Aqui hacemos lo mismo que antes, si suplente=true, miramos si hay por encima y borramos este, pero aqui no cambiamos el numero de plazas ya que eso solo afecta a los que son candidatos, pues los suplentes no restan plaza'

set Command5 = Server.CreateObject("ADODB.Command")
Command5.ActiveConnection = MM_Conexion1_STRING
Command5.CommandText = "DELETE Id FROM Admitidos WHERE NIF = '" + Replace(nif, "'", "''") + "' AND '" + Replace(opc, "'", "''") + "' > EXISTS (SELECT OPCION FROM Admitidos WHERE NIF = '" + Replace(nif, "'", "''") + "' AND SUPLENTE=true);"

Command5.CommandType = 1
Command5.CommandTimeout = 0
Command5.Prepared = true
Command5.Execute()
end if
%>



<%
else 'este es el else del primer if, sino hay plazas libres pero coincide universidad/facultad y nif leido, pasa a ser suplente'

set Command6 = Server.CreateObject("ADODB.Command")
Command6.ActiveConnection = MM_Conexion1_STRING
Command6.CommandText = "UPDATE Admitidos SET CANDIDATO=false, SUPLENTE=true WHERE UNIVERSIDAD= '" + Replace(uni, "'", "''") + "' AND FACULTAD='" + Replace(fac, "'", "''") + "' and NIF = '" + Replace(nif, "'", "''") + "';"

Command6.CommandType = 1
Command6.CommandTimeout = 0
Command6.Prepared = true
Command6.Execute()

End If
%>




<%Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
Ad.MoveNext()%>
<%wend%>

<html >
<head>

</head>

<body>
</body>
</html>

<%
Ad.Close()
Set Ad = Nothing
%>




Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][Controlador ODBC Microsoft Access] No se pudo actualizar; actualmente está bloqueado por el usuario 'admin' en la máquina 'luis-PC'.

/index.asp, línea 100
  #2 (permalink)  
Antiguo 17/04/2012, 16:13
 
Fecha de Ingreso: abril-2012
Mensajes: 71
Antigüedad: 12 años, 8 meses
Puntos: 16
Respuesta: Alguien puede decirme como resolver este codigo???

quien busca encuentra

http://www.forosdelweb.com/f59/error-microsoft-ole-db-provider-odbc-drivers-error-80004005-a-330866/

http://www.forosdelweb.com/f15/microsoft-ole-db-provider-odbc-drivers-error-80004005-a-894323/
  #3 (permalink)  
Antiguo 17/04/2012, 16:21
 
Fecha de Ingreso: abril-2012
Mensajes: 20
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Alguien puede decirme como resolver este codigo???

Sigo sin resolverlo, el problema creo que esta en el tiempo que tarda en actualizar la tabla, al haber tantos update, no le da tiempo a terminar el primero cuando comienza a ejecutar el segundo y asi con los demas. Como siempre actualiza la misma tabla, me bloquea y me dice que no se puede modificar la tabla puesto que hay otra actualizacin que la esta modificando simultaneamente. Estoy intentando cambiar el tiempo para cada update pero no lo consigo.Tendrias alguna idea de como modificar el codigo?
  #4 (permalink)  
Antiguo 17/04/2012, 16:47
 
Fecha de Ingreso: abril-2012
Mensajes: 71
Antigüedad: 12 años, 8 meses
Puntos: 16
Respuesta: Alguien puede decirme como resolver este codigo???

la verdad es que no soy muy experto en ASP pero veo que creas un objeto por cada consulta que tengas que hacer...es necesario?
siempre que use ASP con VBSCRIPT usé la "formula":

Set objRS = Conn.Execute("consulta")
While (Not objRS.Eof)
objRS("campo")
objRS.MoveNext
Wend

destruyendo el objeto al final de cada consulta para resetearlo cuando tenga que reusarlo...puede ser un problema de memoria (raro), o si el script tarda mas de 30 segundos en terminar el servidor a lo mejor lo termina (aunque te darías cuenta) o tambien puede ser que algo no este en su lugar en el codigo, un end if faltante, algo que no se cierra (mas probable), no he leido el codigo detenidamente...cuando llego a casa lo hago

mi consejo es que uses la "indentatura" (tabulaciones) para darte cuenta
  #5 (permalink)  
Antiguo 18/04/2012, 09:59
 
Fecha de Ingreso: abril-2012
Mensajes: 20
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Alguien puede decirme como resolver este codigo???

Sigo intentandolo.... A ver que pasa...
  #6 (permalink)  
Antiguo 18/04/2012, 10:12
 
Fecha de Ingreso: abril-2012
Mensajes: 20
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Alguien puede decirme como resolver este codigo???

Nada, no hay forma de resolverlo..... me esta matando!!!!!!!!
  #7 (permalink)  
Antiguo 20/04/2012, 07:02
 
Fecha de Ingreso: abril-2012
Mensajes: 71
Antigüedad: 12 años, 8 meses
Puntos: 16
Respuesta: Alguien puede decirme como resolver este codigo???

has intentado algo con lo que te he dicho?cambia el modo de hacer las consultas, reorganiza el codigo...
a mi me parece que es por el echo de que un recurso viene tomado y no es liberado para cuando la siguiente consulta quiere tomarlo...
pero como he dicho no soy experto en ASP...
  #8 (permalink)  
Antiguo 20/04/2012, 16:43
Avatar de phillipecw  
Fecha de Ingreso: septiembre-2008
Ubicación: Lima, Peru, Peru
Mensajes: 142
Antigüedad: 16 años, 2 meses
Puntos: 19
Respuesta: Alguien puede decirme como resolver este codigo???

Sería bueno que te fijes que tienes permiso de escritura al archivo de la BD en sí para el usuario IUSR_xxx. Creo que es más que nada eso.

Saludos.
__________________

Phillipe Calmet Williams
Freelance Front-End Developer, Graphic & Web Designer www.phillipecw.com
  #9 (permalink)  
Antiguo 20/04/2012, 18:54
Avatar de RucarMaN  
Fecha de Ingreso: julio-2003
Ubicación: Caripito Edo Monagas
Mensajes: 169
Antigüedad: 21 años, 5 meses
Puntos: 1
Respuesta: Alguien puede decirme como resolver este codigo???

Yo tenia el mismo problema cuando trabaje en Win 7 y migre mi Base de Datos a MySQL (.ASP, MySQL y Navycat).
__________________
Con la ayuda de todos seremos mejores...

http://www.pemoweb.com
  #10 (permalink)  
Antiguo 21/04/2012, 11:40
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 9 meses
Puntos: 10
Respuesta: Alguien puede decirme como resolver este codigo???

No se si te sirva pero yo hago de esta manera:

Creo un archivo de conexión ASP (por ejemplo miconexion.asp) que tiene el siguiente código:

Cita:
<%
Dim Conexion,Tabla1, Tabla2, Tabla3
Set Conexion=Server.CreateObject("adodb.connection")
Set Tabla1=Server.CreateObject("adodb.recordset")
Set Tabla2=Server.CreateObject("adodb.recordset")
Set Tabla3=Server.CreateObject("adodb.recordset")
Conexion.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=la ruta física de tu archivo mdb"
%>
Obviamente lo adecuas para tu tipo de base de datos.


Luego realizo las consultas de esta forma

Cita:
Temp1="Select * From MiTabla Where las-condiciones"
Tabla1.Open Temp1, Conexion
arrDBData=Tabla1.GetRows()
Tabla1.Close

Temp1="Select * From MiTabla Where las-condiciones"
Tabla1.Open Temp1, Conexion,2,3,1
... el código que gustes
Tabla1.Close
La primera la cuando quiero hacer una simple consulta y mostrar datos o manipular los datos encontrados.

La segunda es cuando quiero modificar un dato o agregar nuevo datos.

Ojalá te ayude

Etiquetas: access, resolver, server, tabla, campos
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 01:14.