Visual Basic - Corro la app enTiempo de diseño y se cierra. HELP!

Life is soft - evento anual de software empresarial
 
Vista:

Corro la app enTiempo de diseño y se cierra. HELP!

Publicado por Jorge (56 intervenciones) el 10/12/2010 19:09:21
el problema va con este codigo, ya probe modulo por modulo y se resume a lo que sigue.
cuando activo el codigo para mostrar el reporte (al menos paraece eso, podria ser la conexion a la BD, pero cuando no pongo el codigo para crystal reports no se cierra la app)

El asuto va asi, en tiempo de diseño, corro la app, le doy al boton de generar consulta, funciona ok, cierro la app y regreso al codigo fuente, peeeero, vuelvo a correr la app, le doy al boton de generar consulta y pum! se cierra todo, la app y el codigo fuente, todo.
Que esta mal en el codigo????, alguien que me pueda iluminar? :(

Aqui lo principal del codigo:
Gracias:
================================================

'/****************** VARIABLES PARA CRYSTAL ******************\'
Dim crApp As CRAXDRT.Application
Dim crReport As CRAXDRT.Report
Dim crSubReport As CRAXDRT.Report
Dim crParamDef As CRAXDRT.ParameterFieldDefinition
Dim crParamDefs As CRAXDRT.ParameterFieldDefinitions

'/****************** VARIABLES PARA REGISTROS ******************\'
Private cnn As ADODB.Connection
Private rstCAB As ADODB.Recordset
Private rstDET As ADODB.Recordset

'/******** BOTON QUE GENERA LA CONSULTA Y MUESTRA REPORTE ********\'
Private Sub RealizarConsulta_Click()
Set crApp = New CRAXDRT.Application
Set crReport = New CRAXDRT.Report
Set crSubReport = New CRAXDRT.Report

Set cnn = New ADODB.Connection
Set rstCAB = New ADODB.Recordset
Set rstDET = New ADODB.Recordset

On Error GoTo ErrHandler

cnn.Open "Provider = Microsoft.Jet.OLEDB.4.0 ;" & "Data Source=" & App.Path & "\Mi_BD.mdb ;"
cnn.CursorLocation = adUseClient
rstCAB.Open Mi_SentenciaSQL("CAB"), cnn, adOpenDynamic, adLockOptimistic
rstDET.Open Mi_SentenciaSQL("DET"), cnn, adOpenDynamic, adLockOptimistic

Set crReport = crApp.OpenReport(App.Path & "\Rpt\Mi_Reporte.rpt", 1)
Set crSubReport = crReport.OpenSubreport("Detalle")
crReport.Database.SetDataSource rstCAB
crSubReport.Database.SetDataSource rstDET

Set crParamDefs = crReport.ParameterFields
For Each crParamDef In crParamDefs
Select Case crParamDef.ParameterFieldName
'.... Aqui Ingreso mis parametros del reporte
End Select

CRV.ReportSource = crReport
CRV.ViewReport

Set crSubReport = Nothing
Set crReport = Nothing
Set crApp = Nothing
Set rstDET = Nothing
Set rstCAB = Nothing
Set cnn = Nothing
Exit Sub

ErrHandler:
If Err.Number = -2147206461 Then
MsgBox "Reporte Perdido", vbCritical + vbOKOnly
Else
MsgBox Err.Description, vbCritical + vbOKOnly
End If

Set crSubReport = Nothing
Set crReport = Nothing
Set crApp = Nothing
Set rstDET = Nothing
Set rstCAB = Nothing
Set cnn = Nothing
end sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Corro la app enTiempo de diseño y se cierra. HE

Publicado por pepe (20 intervenciones) el 10/12/2010 19:36:07
A simple vista, no realizas ningun cierre ni de ADODB ni de CRAXDRT. Antes de establecer Set xxx = Nothing, asegurate de cerrar la conexión xxx.close()

Y te recomiendo que aprendas a depurar (ejecutar linea a linea, puntos de interrupcion, etc.) porque si pretendes encontrar los errores desactivando modulos lo tienes muy negro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Corro la app enTiempo de diseño y se cierra. HE

Publicado por Jorge (56 intervenciones) el 14/12/2010 16:36:50
lo que no entiendo es porque funciona la primera vez y luego termino la aplicacion, vuelvo a ejecutar la app y se sale, se queda en memoria o que?

al pasarle paso a paso, la primera vez funciona bien, pero la segunda vez se sale justo en esta linea:
crReport.Database.SetDataSource rstCAB
crSubReport.Database.SetDataSource rstDET

y antes abro el record set de esta forma

If rstCAB.State = 1 Then rstCAB.Close
rstCAB.Open SentenciaSQL("CAB"), cnn, adOpenDynamic, adLockOptimistic
If rstDET.State = 1 Then rstDET.Close
rstDET.Open SentenciaSQL("DET"), cnn, adOpenDynamic, adLockOptimistic
Set crReport = crApp.OpenReport(App.Path & "\Rpt\Cons3_1Cab.rpt", 1)
Set crSubReport = crReport.OpenSubreport("DetA")

crReport.Database.SetDataSource rstCAB
crSubReport.Database.SetDataSource rstDET

Como cierro el CRAXDRT antes del set nothing????
no hay ningun metodo close o algo asi

:(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Corro la app enTiempo de diseño y se cierra. HE

Publicado por Jorge (56 intervenciones) el 14/12/2010 17:00:41
va!, lo compilo, y va bien, nunca se cierra, entonces el problema es en tiempo de diseño, que raro???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar