Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Visual BAsic y Crystal REport

Estas en el tema de Visual BAsic y Crystal REport en el foro de Visual Basic clásico en Foros del Web. Hola a todos, estoy utilizando vb 6 y crystal report 8. Soy nuevo en crystal report, y tengo un reporte creado, tengo varias formulas en ...
  #1 (permalink)  
Antiguo 22/09/2008, 04:16
 
Fecha de Ingreso: septiembre-2008
Mensajes: 26
Antigüedad: 15 años, 7 meses
Puntos: 0
Visual BAsic y Crystal REport

Hola a todos, estoy utilizando vb 6 y crystal report 8. Soy nuevo en crystal report, y tengo un reporte creado, tengo varias formulas en el reporte y las cargo desde visual basic y funcionan todas correctas, pero en la seccion de detalles, las tres formulas que tengo, no me hacen salto de linea, es decir siempre me va rellenando los registros en la misma linea, sobreescribiendo lo anterior, y le he puesto el discarsavedata y todo eso, pero no se si me falta algo en el codigo o algo. Pongo el codigo por si alguien puede ayudarme. Gracias de antemano.

reporte.ReportFileName = "c:\historial.rpt"
reporte.DiscardSavedData = True
reporte.Formulas(0) = "Cliente='" & Text25.Text & "'"
reporte.Formulas(1) = "Marca='" & Text26.Text & "'"
reporte.Formulas(2) = "Modelo='" & Text26.Text & "'"

'las 3 formulas anteriores si funcionan bien, son las siguientes las que no saltan de linea

While Not rs.EOF
If id = rs!id_vehículo Then
reporte.Formulas(3) = "Fecha='" & rs!fecha & "'"
reporte.Formulas(4) = "Descripción='" & rs!descripcion & "'"
reporte.Formulas(5) = "Total='" & rs!total & "'"
rs.MoveNext
Else
rs.MoveNext
End If
Wend
reporte.Action = 1
reporte.ReportFileName = ""
  #2 (permalink)  
Antiguo 22/09/2008, 13:15
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 2 meses
Puntos: 17
Respuesta: Visual BAsic y Crystal REport

el problema pasa porque tu le estas asignando valotes a formulas ya definidas, me explico :

en tu reporte tienes unas formulas creadas como cliente, marca, modelo, fecha, descripcion, total

las primeras 3 te funcionan bien porque son los datos "encabezado",esto es los que no cambian

al meter en un ciclo la asignacion de las otras formulas, te va a dejar siempre el valor de la ultima vez que entro en el ciclo, se entiende?

lo que tu debes hacer es insertar tu base de datos en el registro y en la parte del detalle insertar los campos fecha, descripcion y total

y al momento de mostrar el reporte, colocar :

reporte.ReportFileName = "c:\historial.rpt"
reporte.DiscardSavedData = True
reporte.Formulas(0) = "Cliente='" & Text25.Text & "'"
reporte.Formulas(1) = "Marca='" & Text26.Text & "'"
reporte.Formulas(2) = "Modelo='" & Text26.Text & "'"
reporte.SELECTIONFORMULAS="{tutabla.clientes}='" & text25.text & "'"reporte.action=1


eso si quieres filtrar tus datos por cliente

cualquier cosa me avisas

saludos
  #3 (permalink)  
Antiguo 22/09/2008, 14:15
 
Fecha de Ingreso: septiembre-2008
Mensajes: 26
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Visual BAsic y Crystal REport

he introducido en el informe los campos Fecha, descripcion, y total de la tabla reparaciones, y le he introducido esta linea, donde id es el valor por el que debe filtrar los valores, y me sale el siguiente error.

reporte.SelectionFormula = "{reparaciones.id_vehículo}='" & id & "'"

el erro es:
error en la formula <Record_Selection>.'{reparaciones.id_vehículo}=' 1'
Aqui se requiere un numero

Muchisimas gracias por contestar.
  #4 (permalink)  
Antiguo 22/09/2008, 14:23
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 2 meses
Puntos: 17
Respuesta: Visual BAsic y Crystal REport

tu tienes este codigo
reporte.SelectionFormula = "{reparaciones.id_vehículo}='" & id & "'"

si tienes definido id_vehiculo como numerico (que asi es, pk ese error te arroja) tienes que borrar las comillas simples de la formula (destacado en rojo)

esta es la forma correcta de hacerlo
reporte.SelectionFormula = "{reparaciones.id_vehículo}=" & id

en este momento si imprimes la formula (debug.print) te da

{reparaciones.id_vehículo}=' 1'

te debe quedar como

{reparaciones.id_vehículo}=1 sin cremillas
  #5 (permalink)  
Antiguo 22/09/2008, 14:29
 
Fecha de Ingreso: septiembre-2008
Mensajes: 26
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Visual BAsic y Crystal REport

en efecto me ha funcionado, pero ahora me imprime por ejemplo si son 2 registros el ultimo 2 veces, si son cuatro el ultimo cuatro veces, me imprime siempre el ultimo registro del id correspondiente pero tantas veces como registros tenga ese id, no se si me he explicado.
  #6 (permalink)  
Antiguo 22/09/2008, 15:21
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 2 meses
Puntos: 17
Respuesta: Visual BAsic y Crystal REport

porque en detalle muestras las formulas que tienes definidas y no los campos
prueba insertando directamente los campos en el detalle

mira puedes hacer esto tambien (aunke tiene re poco sentido) pero debe funcionar

While Not rs.EOF
If id = rs!id_vehículo Then
reporte.Formulas(3) = "Fecha={reparaciones.fecha}"
reporte.Formulas(4) = "Descripción={reparaciones.descripcion"
reporte.Formulas(5) = "Total={reparaciones.total}="
rs.MoveNext
Else
rs.MoveNext
End If
Wend

pero te insisto coloca el campo directamente en la seccion de detalle y no coloques las formulas que creaste
  #7 (permalink)  
Antiguo 22/09/2008, 15:31
 
Fecha de Ingreso: septiembre-2008
Mensajes: 26
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Visual BAsic y Crystal REport

perdona que te de tanto ruido, pero ya he quitado las formulas de la seccion de los detalles y lo que tengo colocado son los campos directamente desde la tabla, es decir, tengo en fecha el campo reparaciones.fecha insertado desde el menu insertar campo de base de datos y con los otros dos de los detalles igual, y me repite siempre el ultimo registro del recordset, eso si, si tiene el id 7 registros, lo imprime en siete lineas diferentes. Gracias
  #8 (permalink)  
Antiguo 22/09/2008, 17:11
 
Fecha de Ingreso: septiembre-2008
Mensajes: 26
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Visual BAsic y Crystal REport

Ya solucione el problema, es que no entendia lo que me decias de no poner las formulas, claro quite las formulas del codigo y puse solo esto:

reporte.ReportFileName = "c:\historial.rpt"
reporte.DiscardSavedData = True
reporte.Formulas(0) = "Cliente='" & Text25.Text & "'"
reporte.Formulas(1) = "Marca='" & Text26.Text & "'"
reporte.Formulas(2) = "Modelo='" & Text26.Text & "'"
While Not rs.EOF
If id = rs!id_vehículo Then
reporte.SelectionFormula = "{reparaciones.id_vehículo}=" & id
rs.MoveNext
Else
rs.MoveNext
End If
Wend
reporte.DiscardSavedData = True
reporte.Action = 1
reporte.ReportFileName = ""

y meti los campos en el reporte. Muchisimas gracias de verdad, te debo la vida, no puedes imaginarte lo muchisimo que me has ayudado, gracias de verdad muchas gracias.
  #9 (permalink)  
Antiguo 22/09/2008, 20:21
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 2 meses
Puntos: 17
Respuesta: Visual BAsic y Crystal REport

no hay problema, ahora para depurar el codigo podemos eliminar el ciclo while, porque solo entrara una vez, cuando el id sea igual al valor del que tienes en la tabla entonces quedaria de la siguiente forma :

eliminar :

While Not rs.EOF
If id = rs!id_vehículo Then
reporte.SelectionFormula = "{reparaciones.id_vehículo}=" & id
rs.MoveNext
Else
rs.MoveNext
End If
Wend

dejar solo
reporte.SelectionFormula = "{reparaciones.id_vehículo}=" & id

te da el mismo resultado y queda todo en una sola linea

saludos!!!!!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 02:56.