• Domingo 22 de Diciembre de 2024, 22:06

Autor Tema:  Re: VB 6 y crystal reports error raro  (Leído 1929 veces)

Jose Antonio Garcia E.

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
    • http://www.opticasamerica.com
Re: VB 6 y crystal reports error raro
« en: Jueves 2 de Enero de 2003, 18:29 »
0
Hola a Todos.

Tengo un sistema integral de administracion desarrollado in house en visual basic 6, utilizando para los reportes crystal reports 7. la base de datos central es access200. el programa funciona bastante bien, el asunto es que le acabo de incluir unos formularios para consultas de saldos de clientes entre fechas con reporteador en crystal reports. si abro el sistema y ejecuto cualesquiera de las consultas por fechas lo ejecuta bien, hasta que desde ahi ejecuto uno de los reportes que no consultan fechas, entonces me nada en error de "invalid formula name" el error ocurre tambien de manera inversa, si ejecuto una de las consultas anteriores todo va bien hasta que intento ejecturas una de las que incluyen fechas..otra vez el error. el codigo base que utilizo desde VB para las consultas por fechas es :
Private Sub BtnPrint_Click()
Dim RESP
    If IsDate(MskMin.Text) And IsDate(MskMax.Text) Then
        MiSQL = "Delete * from TMP_TOTALXSUC"
        Midb.Execute MiSQL
       
        RESP = MsgBox("Desea imprimir todos los Clientes/No=Imprime actual", vbYesNo + vbInformation)
        If RESP = vbYes Then
        'imprime todas las sucursales
            MiSQL = "Select t.idcliente, t.fecha, t.idsuc, t.idtrabajo, t.folio_orden, t.nnota_cli, s.total, s.consecsa, ds.consecsa, " & _
                    "ds.idmaterial from TRABAJOS t, SALIDAS s, DETSALIDA ds where t.fecha between CDate('" & MskMin.Text & "') And CDate('" & MskMax.Text & "') " & _
                    "and s.idtrabajo = t.idtrabajo and " & _
                    "t.status = 'A' and s.status = 'A'" & _
                    " and s.consecsa = ds.consecsa and s.status = 'A' and t.status = 'A' "
        Else
        'imprime solo la seleccionada
            MiSQL = "Select t.idcliente, t.fecha, t.idsuc, t.idtrabajo, t.folio_orden, t.nnota_cli, s.total, s.consecsa, ds.consecsa, " & _
                    "ds.idmaterial from TRABAJOS t, SALIDAS s, DETSALIDA ds where t.fecha between CDate('" & MskMin.Text & "') And CDate('" & MskMax.Text & "') " & _
                    "and s.idtrabajo = t.idtrabajo and " & _
                    "t.status = 'A' and s.status = 'A'" & _
                    " and s.consecsa = ds.consecsa and s.status = 'A' and t.status = 'A' " & _
                    " and t.idcliente = " & Val(CmbIdSuc.Text)
        End If
               
        Set Rs = Midb.OpenRecordset(MiSQL)
        If Rs.RecordCount > 0 Then
        demo = ""
            Do While Not Rs.EOF
            If Rs!idtrabajo <> demo Then
                Set rsTem = Midb.OpenRecordset("TMP_TOTALXSUC")
                    rsTem.AddNew
                        rsTem!idcliente = Rs!idcliente
                        rsTem!Fecha = Rs!Fecha
                        rsTem!IdSuc = Rs!IdSuc
                        rsTem!idtrabajo = Rs!idtrabajo
                        rsTem!Folio_orden = Rs!Folio_orden
                       rsTem!nnota_cli = Rs!nnota_cli
                        rsTem!total = Rs!total
                        rsTem!IdMat1 = Rs!idmaterial
                    rsTem.Update
                rsTem.Close
                demo = Rs!idtrabajo
            Else
                MiSQL = "select * from TMP_TOTALXSUC where idtrabajo = " & Rs!idtrabajo
                Set rsTem = Midb.OpenRecordset(MiSQL)
                    rsTem.Edit
                        rsTem!IdMat2 = Rs!idmaterial
                    rsTem.Update
                rsTem.Close
            End If
                Rs.MoveNext
            Loop
        End If
        Rs.Close

        Main.CryRep.ReportFileName = App.Path & "reportstotalXclif.rpt"
        Main.CryRep.Formulas(0) = "rango='" & MskMin.Text & " al " & MskMax.Text & "'"
        Main.CryRep.DiscardSavedData = True
        'Queda pendiente
        'Main.CryRep.SelectionFormula = "{TMP_TOTALXSUC.fecha} &  in & cdate(MskMin.Text) &  to cdate(MskMin.Text)"
       
        Main.CryRep.WindowState = crptMaximized
        Main.CryRep.Action = 1
    End If
End Sub

-- y el que ejecuto para las otras es :

Private Sub BtnReport_Click()
    If OptRep(0).Value = True And Len(TxtClv.Text) > 0 Then
        CryExt.ReportFileName = App.Path & "reportsexistencias.rpt"
        CryExt.SelectionFormula = "{EXISTENCIAS.IDMATERIAL} = '" & TxtClv.Text & "'"
    End If
   
    If OptRep(1).Value = True And CmbRan1.ListIndex <> -1 And CmbRan2.ListIndex <> -1 Then
        CryExt.ReportFileName = App.Path & "reportsexistencias.rpt"
        CryExt.SelectionFormula = "{EXISTENCIAS.IDMATERIAL} in '" & GetIdMaterial(CmbRan1) & "'" & " to '" & GetIdMaterial(CmbRan2) & "'"
    End If
   
    If OptRep(2).Value = True Then
        CryExt.SelectionFormula = ""
        CryExt.ReportFileName = App.Path & "reportsexistencias.rpt"
    End If
   
    If OptRep(3).Value = True Then
        CryExt.ReportFileName = App.Path & "reportsexistencias.rpt"
        CryExt.SelectionFormula = ValFiltrado
    End If
   
    If OptDes(0).Value = True Then
        CryExt.Destination = crptToWindow
    ElseIf OptDes(1).Value = True Then
        CryExt.Destination = crptToPrinter
    End If
   
    If OptDes(0).Value = False And OptDes(1).Value = False Then
        MsgBox "Seleccione el destino para el reporte!", vbCritical + vbOKOnly, Me.Caption
        Exit Sub
    End If
   
    If CryExt.ReportFileName = "" Then
        MsgBox "Introduzca un criterio valido para mostrar el reporte!", vbCritical + vbOKOnly, Me.Caption
        Exit Sub
    End If
    CryExt.DiscardSavedData = True
    CryExt.WindowTitle = "Reporte de existencias - Servicios Opticos Integrales"
    CryExt.WindowState = crptMaximized
    CryExt.Action = 1
End Sub

Private Sub BtnRestaurar_Click()
    CmbProv.ListIndex = -1
    CmbMat.ListIndex = -1
    CmbTMat.ListIndex = -1
    CmbCaract.ListIndex = -1
End Sub

Private Sub CmbIdMat_Click()
    CmbMat.ListIndex = CmbIdMat.ListIndex
End Sub

Private Sub CmbIdProv_Click()
    CmbProv.ListIndex = CmbIdProv.ListIndex
End Sub

Private Sub CmbIdTmat_Click()
    CmbTMat.ListIndex = CmbIdTmat.ListIndex
End Sub

Private Sub CmbProv_Click()
    CmbIdProv.ListIndex = CmbProv.ListIndex
    CmbMat.Clear
    If CmbProv.ListIndex <> -1 Then
        Load_materiales
    End If
    CmbMat.SetFocus
End Sub

Private Sub CmbTMat_Click()
    CmbIdTmat.ListIndex = CmbTMat.ListIndex
End Sub

Private Sub Command1_Click()

End Sub

---
alguna sugerencia ??
Un saludo desde mexico.

Jaume

  • Miembro MUY activo
  • ***
  • Mensajes: 151
    • Ver Perfil
Re: VB 6 y crystal reports error raro
« Respuesta #1 en: Viernes 3 de Enero de 2003, 12:14 »
0
Hola Jose Antonio

Da la impresión que el objeto crystal que utilizas guarda la configuración que les has asignado al ejecutar el primer listado.

Prueba de reiniciarlo asignando los siguientes valores alos parametros que te comento. (o solo los que utilices)
Esto siempre debes hacerlo antes de lanzar un listado y asignarle los parámetros correctos, para asegurarte que no tiene valores extraños

    .ReportFileName = Empty
    .WindowTitle = Empty
    .GroupSelectionFormula = Empty
    .SelectionFormula = Empty
    .SQLQuery = Empty

Espero te sea útil

Salu2

PD: Por cierto, en Octubre estube por tu tierra. El viaje una paliza, pero mereció la pena.

Jose Antonio Garcia E.

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
    • http://www.opticasamerica.com
VB 6 y crystal reports error raro
« Respuesta #2 en: Viernes 3 de Enero de 2003, 17:02 »
0
Mil gracias ¡¡

Voy a insertar los comandos que me mencionas y te aviso si salio bien

En que parte de mexico anduviste ??

Mil gracias y saludos.