Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/12/2002, 21:12
Avatar de coriadavid
coriadavid
 
Fecha de Ingreso: mayo-2002
Ubicación: Buenos Aires Argentina
Mensajes: 74
Antigüedad: 22 años
Puntos: 0
Pregunta Una Opinion Profesional.

Esta es una clase que se encuentra dentro de una Dll. Miren como esta distribuido el codigo.

Rem *********************************************
Rem * Modulo Administrador de Catalogo *
Rem *********************************************

Dim cnn_Conexion As ADODB.Connection
Dim rst_catalogo As ADODB.Recordset
Dim rst_catalogoOF As ADODB.Recordset

Dim rst_mps As ADODB.Recordset
Dim rst_ccc As ADODB.Recordset
Dim rst_mcc As ADODB.Recordset
Dim rst_bcc As ADODB.Recordset

Public TipoProducto As Variant
Public CodigoProducto As Variant
Public titulodelproducto As Variant
Public Descripcion As Variant
Public PrecioenPesos As Variant
Public PrecioenDolares As Variant
Public Estado_Stock As Variant
Public Nombre_Imagen As Variant
Public Email_Session As Variant
Public Session_Activa As Variant
Public cantidad As Variant



Private Sub Class_Initialize()
On Error GoTo error
Set cnn_Conexion = New ADODB.Connection
cnn_Conexion.Open "dsn=carritodecompras"
Exit Sub
error:
Call Class_Terminate
End Sub
Private Sub Class_Terminate()

cnn_Conexion.Close
Set rst_catalogo = Nothing
Set rst_catalogoOF = Nothing

Set rst_mps = Nothing
Set rst_mcc = Nothing
Set cnn_Conexion = Nothing
End Sub
Public Function BorrarCarrito(ByVal clave As Variant)
On Error GoTo error
Set rst_bcc = New ADODB.Recordset
sql_string = "DELETE * FROM Tbl_Carrito WHERE Id_Operacion=" & clave
rst_bcc.Open sql_string, cnn_Conexion, adOpenStatic, adLockPessimistic
Set rst_bcc = Nothing
Exit Function
error:

End Function
Public Function MostrarCarrito() As ADODB.Recordset
On Error GoTo error
Set rst_mcc = New ADODB.Recordset
sql_string = "SELECT * FROM Tbl_Carrito WHERE Id_Session=" & Session_Activa
rst_mcc.Open sql_string, cnn_Conexion, adOpenStatic, adLockPessimistic
Set MostrarCarrito = rst_mcc
Exit Function
error:

End Function
Public Function Cargar_carrito()
On Error GoTo error
Set rst_ccc = New ADODB.Recordset
sql_string = "SELECT * FROM Tbl_carrito"
rst_ccc.Open sql_string, cnn_Conexion, adOpenKeyset, adLockPessimistic
rst_ccc.AddNew
rst_ccc("email_cliente") = Email_Session
rst_ccc("id_session") = Val(Session_Activa)
rst_ccc("Titulo_Producto") = titulodelproducto
rst_ccc("Precio_Pesos") = Val(PrecioenPesos)
rst_ccc("Precio_Dolares") = Val(PrecioenDolares)
rst_ccc("Cantidad") = Val(cantidad)
rst_ccc.Update
Set rst_ccc = Nothing
Exit Function
error:
End Function
Public Function MostrarCatalogo() As ADODB.Recordset
On Error GoTo error
Set rst_catalogo = New ADODB.Recordset
sql_string = "SELECT * FROM Tbl_Productos WHERE Id_Tipo_producto=" & Val(TipoProducto) & " " & "AND" & " " & "Stock=" & 1
rst_catalogo.Open sql_string, cnn_Conexion, adOpenStatic, adLockReadOnly
Set MostrarCatalogo = rst_catalogo
Exit Function
error:
End Function
Public Function MostrarCatalogoOfertas() As ADODB.Recordset
On Error GoTo error
Set rst_catalogoOF = New ADODB.Recordset
sql_string = "SELECT * FROM Tbl_Productos WHERE id_codigo_producto=" & Val(CodigoProducto)
rst_catalogoOF.Open sql_string, cnn_Conexion, adOpenStatic, adLockReadOnly
Set MostrarCatalogoOfertas = rst_catalogoOF
Exit Function
error:
End Function
Public Function Mostrar_Producto() As ADODB.Recordset
On Error GoTo error
Set rst_mps = New ADODB.Recordset
sql_string = "SELECT * FROM Tbl_Productos WHERE Id_Tipo_producto=" & Val(TipoProducto) & " " & "AND" & " " & "Id_codigo_Producto=" & Val(CodigoProducto)
rst_mps.Open sql_string, cnn_Conexion, adOpenStatic, adLockReadOnly
Set Mostrar_Producto = rst_mps
Exit Function
error:
End Function

Podran apreciar como esta estructurado..


Interfaces.
metodo inicio
metodo de terminar
demas metodos.

veran que los metodos que devuelven un recordset los recordset no tienen el .close

y veran que en el metodo terminar hago un close de la conexion y los nothing que corresponden.

pero faltan los .close de los recordset que fueron habiertos, y el tema esta ahi.....

cuando les coloco el .close a esos recordset, el sistema se cuelga, cuelga el IIS.

y no se p orque, alguien puede decirme porque puede estar pasando eso. Si la ejecuto asi , la dll funciona bien.

saludos a todos y gracias.

__________________
MicroNetwork
www.micronetwork.com.ar
Departamento de Programacion