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

Cierre de conexión

Estas en el tema de Cierre de conexión en el foro de ASP Clásico en Foros del Web. Hola Gente!!!! Se viene la preguntonta del dia! Resulta que estoy ejecutando comandos de inserción y modificación en una misma pagina que he destinado solamente ...
  #1 (permalink)  
Antiguo 14/12/2004, 09:09
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 7 meses
Puntos: 2
Cierre de conexión

Hola Gente!!!! Se viene la preguntonta del dia!
Resulta que estoy ejecutando comandos de inserción y modificación en una misma pagina que he destinado solamente al proceso de los datos.
Cuando la ejecuto, con todos los datos que tiene que insertar y modificar (En distintas tablas) me tira este error:
Microsoft OLE DB Provider for ODBC Drivers error '80040e21'

La operación de múltiples pasos de OLE DB generó errores. Compruebe los valores de estado de OLE DB si es posible. No se realizó ningún trabajo.


Lo que imagino es que tiene que ver con que las conexiones hayan quedado abiertas pero.... ¿Se cierran de igual modo que las conexiones de recordset?


Gracias!!!!

__________________
Why can't we not be sober?
www.partitorium.com.ar
  #2 (permalink)  
Antiguo 14/12/2004, 10:14
 
Fecha de Ingreso: noviembre-2004
Ubicación: trelew - chubut
Mensajes: 134
Antigüedad: 20 años, 5 meses
Puntos: 0
pone el codigo
  #3 (permalink)  
Antiguo 14/12/2004, 10:21
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 7 meses
Puntos: 2
oks, aqui va:
<%'-------------------------------------------- DEFINICION DE VARIABLES ---------------------
dim max, obser, I, Numero
Dim Cli, Suc
dim puesto()
dim desc()
'-----------------------------------ASIGNACIÓN DE VARIABLES------------------------------------
I=0
If (Request.Form("OBSERV")<>"") Then obser=Request.Form("OBSERV") End if
If (Request.Form("Cantidad")<>"") Then max= Cint(Request.Form("Cantidad")) end if
If (Request.Form("Cliente")<>"") Then Cli=Request.Form("Cliente") End If
If(Request.Form("Sucu")<>"") Then Suc=Request.Form("Sucu") End if
If(Request.Form("Nume")<>"") Then Numero=Request.Form("Nume") End If

'---------------------REDIMENSIONADO DE VECTORES-------------------------------------
Redim puesto(max)
Redim desc(max)

'----------------------CARGA DE VECTORES------------------------------------
While I<=max
If (Request.Form("Puesto"&I+1)<>"" ) Then puesto(I)=Request.Form("Puesto"&I+1) end if
if (Request.Form("DESC"&I+1)<>"") Then desc(I)=Request.Form("DESC"&I+1) end if
I=I+1
Wend
I=0

'------------------------ARMADO DE UPDATE-------------------------------------
Set CmUpdSer = Server.CreateObject("ADODB.Command")
CmUpdSer.ActiveConnection=MM_INFO_SQL_STRING
CmUpdSer.CommandText="UPDATE SERVICIOSITU SET OBSERVACIONES='"&obser&"' WHERE IDINFORME="&Numero&" "
CmUpdSer.CommandType=1
CmUpdSer.Prepared=True
CmUpdSer.Execute

CmUpdSer =Nohing

'---------------------------ARMADO DE INSERT A TAREAS------------------------------
Set CmTareas=Server.CreateObject("ADODB.Command")
CmTareas.ActiveConnection=MM_INFO_SQL_STRING
CmTareas.CommandText="INSERT INTO TAREASITU (C_INFORME, C_EQUIPO, TAREA) VALUES ("&Numero&",?,?)"
CmTareas.CommandType=1
CmTareas.Prepared=True
While(I<=Max)
CmTareas.Parameters.Append CmTareas.CreateParameter("Puesto", 4,1,100)
CmTareas.Parameters.Append CmTareas.CreateParameter("Descripcion",200,1,50)
CmTareas("Puesto") = puesto(I)
CmTareas("Descripcion")=desc(I)
'---------------EJECUCION DEL COMANDO TAREAS---------------------------------
CmTareas.Execute
I=I+1
Wend

'-------------------------- REDIRECCIONA CONDICIONALMENTE --------------------

Response.Redirect ("../servicios/componentes.asp?Informe="&Numero&" ")


Cabe aclarar que el error antes mencionado es de la linea 50, donde ejecuto el insert

Gracias por tu atención!!!!
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #4 (permalink)  
Antiguo 14/12/2004, 10:31
 
Fecha de Ingreso: noviembre-2004
Ubicación: trelew - chubut
Mensajes: 134
Antigüedad: 20 años, 5 meses
Puntos: 0
cambia esta linea del primer update

CmUpdSer =Nohing

por
CmUpdSer =nothing
  #5 (permalink)  
Antiguo 14/12/2004, 10:40
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 7 meses
Puntos: 2
Gracias!!!1
ok, eso está cambiado, lo noté despues de postearlo.
Igualmente creo que el error tiene que deberse a que creo los parametros puesto y descripcion dentro del loop. Entonces la instrucción CreateParameter se repite varias veces.
Debe haber sido eso lo que molestó.
De todas formas al arreglar esto me tira que el parametro 1 no está definido..... hay que ver como lo arreglamos!

Otra vez.... Gracias!!!!!
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #6 (permalink)  
Antiguo 14/12/2004, 10:55
 
Fecha de Ingreso: noviembre-2004
Ubicación: trelew - chubut
Mensajes: 134
Antigüedad: 20 años, 5 meses
Puntos: 0
se debe referir al c_informe de la linea

CmTareas.CommandText="INSERT INTO TAREASITU (C_INFORME, C_EQUIPO, TAREA) VALUES ("&Numero&",?,?)"

no lo estas escribiendo en ningun lado
  #7 (permalink)  
Antiguo 14/12/2004, 11:17
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 20 años, 7 meses
Puntos: 2
NOP, En realidad ya funcionó, el tema fue que cuando comenzó con los errores lo probé varias veces con el mismo dato y de ultima rebotaba por integridad referencial de la base de datos.
Ahora ya vamos funcionando!!!!!
No le cambié practicamente nada fijate:
<%'-------------------------------------------- DEFINICION DE VARIABLES ---------------------
dim max, obser, I, Numero
Dim Cli, Suc
dim puesto()
dim desc()
'-----------------------------------ASIGNACIÓN DE VARIABLES------------------------------------
I=0
If (Request.Form("OBSERV")<>"") Then obser=Request.Form("OBSERV") End if
If (Request.Form("Cantidad")<>"") Then max= Cint(Request.Form("Cantidad")) end if
If (Request.Form("Cliente")<>"") Then Cli=Request.Form("Cliente") End If
If(Request.Form("Sucu")<>"") Then Suc=Request.Form("Sucu") End if
If(Request.Form("Nume")<>"") Then Numero=Request.Form("Nume") End If

'---------------------REDIMENSIONADO DE VECTORES-------------------------------------
Redim puesto(max)
Redim desc(max)

'----------------------CARGA DE VECTORES------------------------------------
While I<=max
If (Request.Form("Puesto"&I+1)<>"" ) Then puesto(I)=Request.Form("Puesto"&I+1) end if
if (Request.Form("DESC"&I+1)<>"") Then desc(I)=Request.Form("DESC"&I+1) end if
I=I+1
Wend
I=0

'------------------------ARMADO DE UPDATE-------------------------------------
Set CmUpdSer = Server.CreateObject("ADODB.Command")
CmUpdSer.ActiveConnection=MM_INFO_SQL_STRING
CmUpdSer.CommandText="UPDATE SERVICIOSITU SET OBSERVACIONES='"&obser&"' WHERE IDINFORME="&Numero&" "
CmUpdSer.CommandType=1
CmUpdSer.Prepared=True
CmUpdSer.Execute


'---------------------------ARMADO DE INSERT A TAREAS------------------------------
Set CmTareas=Server.CreateObject("ADODB.Command")
CmTareas.ActiveConnection=MM_INFO_SQL_STRING
CmTareas.CommandText="INSERT INTO TAREASITU (C_INFORME, C_EQUIPO, TAREA) VALUES ("&Numero&",?,?)"
CmTareas.CommandType=1
CmTareas.Prepared=True

CmTareas.Parameters.Append CmTareas.CreateParameter("Puesto", 4,1,100)
CmTareas.Parameters.Append CmTareas.CreateParameter("Descripcion",200,1,50)
While(Puesto(I)<>"")
CmTareas("Puesto") = puesto(I)
CmTareas("Descripcion")=desc(I)
'---------------EJECUCION DEL COMANDO TAREAS---------------------------------
CmTareas.Execute
I=I+1
Wend

'-------------------------- REDIRECCIONA CONDICIONALMENTE --------------------

Response.Redirect ("../servicios/componentes.asp?Informe="&Numero&" ")

Fijate que a Numero lo tomo en la primer toma de variables del formulario anterior, y lo toma.
__________________
Why can't we not be sober?
www.partitorium.com.ar
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 11:04.