He estado buscando, limitando las referencias a las mismas usadas por el ejemplo, pero no encuentro la razón del porque se cierra. Considerando que las referencias son iguales, creo que lo único que cambia es el tipo de DB, adjunto ambos codigos
Codigo problema que se cierra el form pasado unos segundos o por pasar el puntero
Código vb:
Ver originalOption Explicit
Dim crxApp As New CRAXDRT.Application
Dim crxRpt As CRAXDRT.Report
Dim crParamDefs As CRAXDRT.ParameterFieldDefinitions
Dim crParamDef As CRAXDRT.ParameterFieldDefinition
Dim cn As Connection
Dim rsREP As Recordset ' se usa para el boton ver report
Private Sub Form_Load()
Set cn = New Connection
cn.ConnectionString = "DRIVER={MySQL ODBC 5.2 ANSI Driver}; SERVER=localhost;DATABASE=basedatos;USER=usuario;PASSWORD=pass;port:33006;OPTION=3"
cn.CursorLocation = adUseClient
cn.Open
'para el reporte
Set rsREP = New Recordset
MsgBox SQLquery
If SQLquery = "" Then
Unload Me
Else
rsREP.Open "" & SQLquery & "", cn, adOpenDynamic, adLockOptimistic
End If
Set crxApp = New CRAXDRT.Application
Set crxRpt = crxApp.OpenReport(AppPath() & "\Report2.rpt")
crxRpt.EnableParameterPrompting = False
Set crParamDefs = crxRpt.ParameterFields
For Each crParamDef In crParamDefs
Select Case crParamDef.ParameterFieldName
Case "nombre"
crParamDef.SetCurrentValue rsREP.Fields("nombre")
Case "nacimiento"
crParamDef.SetCurrentValue rsREP.Fields("nacimiento")
End Select
Next
CRViewer1.ReportSource = crxRpt
CRViewer1.ViewReport
CRViewer1.Zoom (100)
Show
End Sub
Siendo SQLquery una variable publica tipo string que pasa la consulta al form donde esta el CRViewer1
Codigo de ejemplo que no se cierra
Código vb:
Ver original<Modulo1.bas>
Option Explicit
Global CN As New ADODB.Connection
Sub main()
CN.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & App.Path & "\BD.accdb;Persist Security Info=False;"
Form1.Show
End Sub
<fin modulo1>
Option Explicit
Dim reporte As New Inventario
Dim rs As New ADODB.Recordset
Private Sub cmdCommand1_Click()
rs.Filter = ""
repp
End Sub
Private Sub Command1_Click()
Dim rsss
rsss = InputBox("Escriba una letra")
rs.Filter = "nombre like '%" & rsss & "%'"
repp
End Sub
Private Sub Form_Load()
rs.Open "Select * from Inventario", CN, adOpenDynamic, adLockOptimistic
repp
End Sub
Sub repp()
With reporte
.Database.SetDataSource rs
.PaperOrientation = 1
.PaperSize = 45
.DiscardSavedData
End With
CRViewer1.ReportSource = reporte
CRViewer1.ViewReport
End Sub