2
« en: Jueves 2 de Enero de 2003, 18:29 »
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.