Reto a que alguien SOLUCIONE esto...

papakino
06 de Abril del 2005
Hola a todos:

Hace días que consulto este tema en diversos sitios y, hasta hoy, nadie ha hecho funcionar este informe ni me ha sabído decir por qué actúa así ni cómo hacer que actúe bien. Reto a cualquiera a que lo "haga andar bien" :

Resulta lo siguiente : Tengo una serie de campos text.tex para introducir datos; una serie de radiobutton para seleccionar opciones, dos calendarios para meter las fechas y dos botones : uno "Aceptar" para ver el listado de la seleccion en un dbgrid y el otro "Imprimir" para imprimir dicha selección, todo esto lo tengo dentro de un mismo formulario.

El código ENTERO del Botón "Aceptar", para ver el listado por el dbgrid del formulario, es el siguiente: (tener en cuenta que trabajo con el DATA y no con el ADODC, por motivos de instalación sólo puedo emplear el DATA) :

Primero selecciono el radiobutton "Ingresos", selecciono en los dos calendarios las fechas de comienzo y fin de listado y pincho en el botón "Aceptar". Este es el código de ese botón:

If Option1.Value Then
Dim sql As String
Dim Rs As Recordset
Dim FecIni As String
Dim FecFin As String
Dim dbcrono As Database

Set dbcrono = OpenDatabase(App.Path & "apuntes.mdb")

FecIni = Month(FechaIni.Value) & "/" & Day(FechaIni.Value) & "/" & Year(FechaIni.Value)
FecFin = Month(FechaFin.Value) & "/" & Day(FechaFin.Value) & "/" & Year(FechaFin.Value)

' opcion para sumar un campo de una base de datos

sql = "Select * From apuntes Where tipo = 'Ingresos' And Fecha Between #" & FecIni & "# And #" & FecFin & "# Order By Fecha"
Set Rs = dbcrono.OpenRecordset(sql)


Do While Not Rs.EOF
Text8.Text = Format(Text8.Text, "###,###,##0.00")
campo = campo + Rs!importe
Text8.Text = campo

Rs.MoveNext
Loop

Data1.RecordSource = ""
Data1.RecordSource = sql
Data1.Refresh


If Data1.Recordset.RecordCount = 0 Then
MsgBox "No Existe Información con ese Rango de Fecha...Verifique Por Favor", vbInformation, "Información Listado"
End If
DBGrid1.Refresh
End If

Hasta aquí, todo bien, me saca el filtrado de registros por el dbgrid sin ningun problema y cuantas veces quiera.Perfecto. Pero si ahora le doy al botón imprimir para ver el resultado por la impresora, el código sería el que pongo a continuación y lo que me ocurre es lo siguiente:

(al Crystal Report le he llamado "informeingresos", y al diseño del formulario "lisingresos")

(código del botón "Imprimir")


InformeIngresos.ReportFileName = App.Path & "lisingresos.rpt"
InformeIngresos.WindowTitle = "LISTADO DE INGRESOS ENTRE FECHAS"
InformeIngresos.Destination = crptoWindow
InformeIngresos.PrinterName = Printer.DeviceName
InformeIngresos.SQLQuery = "Select * From apuntes Where tipo = 'Ingresos' And Fecha Between #" & FecIni_1 & "# And #" & FecFin_1 & "# Order By Fecha"
InformeIngresos.Action = 1

Haciéndolo de esta manera, si en la propiedad ReportSource del CrystalReport selecciono el "0" (cero, crptReport), entonces me saca MI INFORME, el que yo he diseñado, pero CON TODOS LOS REGISTROS DE LA BASE DE DATOS, es decir, sin tener en cuenta ni fechas de selección ni radiobutton "Ingresos" seleccionado ni nada de nada.

Si en dicha propiedad selecciono el "3" (crpt Datacontrol) entonces me saca la selección solicitada pero con un diseño DISTINTO al que yo había creado, como si el Crystal report hubiera generado un informe por su cuenta y, además, me saca TODOS los campos de la base de datos, no sólamente los que yo había seleccionado o diseñado para hacer mi informe. ¿¿¿...???. Es decir, la selección entre fechas e ingresos me la hace bien pero me saca un diseño de informe que no es el mio ni sé de dónde lo ha sacado. ¡¡ Qué cosas más raras ¡¡

¿Tan dificil es sacar un listado por una impresora?. Yo creo que, al menos en Clipper(yo he programado mucho en clipper) funciona la cosa así, que con decirle o darle una instrucción tiene que funcionar, es decir, que para hacer determinada cosa en concreto tiene que haber una serie de pasos en concreto : Tal propiedad seleccionada de tal forma; tal otra,seleccionada de tal otra forma; abrir tal base de datos, cerrar tal otra...hacer tal selección...ordenar imprimir...no sé...pasos concretos.

Yo, por ejemplo, en clipper, para hacer "modificaciones" de registros, que es realmente lo más engorroso que hay, como son pasos concretos pero muy largos y muy detallados, tengo hechas mis plantillas y sólo tengo que cambiar los nombres de campo de la nueva base de datos que esté empleando, pero el resto de operaciones y el resto de acciones a llevar a cabo para modificar ese registro es siempre igual. Copio la plantilla, modifico los nombres de campos y sus posibles formatos, y asunto arreglado. Lo pego en el código del nuevo programa y arreglado el tema.

En fín, señores, que, como veis, estoy frenado y no sé cómo hacer para que me saque mi "verdadero" informe y que me acepte la selección hecha. He probado tambien a hacerlo con el DataReport pero por lo visto, el tema de las fechas tambien "tiene sus problemillas".

Espero vuestra ayuda, si es que me la podeis prestar. Si la solución la veis más fácil con el Data Report, no tengo problemas en cambiar, por supuesto. De hecho, algúnos otros listados de este mismo programilla los tengo hechos con el Data Report, pero este de los "ingresos" lo estoy haciendo con el Crystal Report y no hay manera de sacarlo.

Muchas gracias por todo y espero vuestra posible ayuda : ¡¡ me encuentro totalmente paralizado y frenado ¡¡. Muchísimas Gracias.

Si alguien me quiere mandar la solución a mi correo, encantado, no tengo ningún problema. Repito : Muchísimas gracias, de verdad.