• Martes 30 de Abril de 2024, 06:15

Autor Tema:  Visual Basic 6.0 Y Cristal Report 8.5  (Leído 8566 veces)

chicharos

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Visual Basic 6.0 Y Cristal Report 8.5
« en: Martes 29 de Junio de 2004, 18:08 »
0
hola a todos soy nuevo en esto del crystal report y tengo algunos problemillas

les platico.


tengo un sistema en vb6.0 y los reportes que estoy elaborando son por codigo y se ven muy feos, un amigo me comento que se verian padrisimos con crystal report y instale y e realizado reportes muy generales de informacion de la db.

Pero ahora tengo el problema de omo hacer para sacar reportes especificos es decir si yo capturo un pedido (456), por logica debo imprimir el pedido(456). y lo que me realiza es que me presenta los 455 pedido y lo peor es que manda todo a imprimir .

Entonces como hago para que yo pueda imprimir unicamente el pedido (456).

E intentado de varias formas pero no e podido.

Les agradesco muchisimo su ayuda

gracias,

Cesar, Mexico, D.F.

asanchez

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Visual Basic 6.0 Y Cristal Report 8.5
« Respuesta #1 en: Miércoles 30 de Junio de 2004, 12:13 »
0
Yo no entiendo de VB6. pero yo trabajo con Delphi y creo que el tema es el mismo.
Empezando por que tienes que tener incrustado en tu aplicacion el componente de CReports para VB6, el problema lo tienes en que no mandas el parameto al informe.

1º tienes que crear un parametro que sea nº de pedido en el informe de CR.
2º En el informe debes filtrar los registros en la opcion Reports/Seleccion de Formulas/Registros.
Aqui le haces el filtro ej: camponumeropedido = parametro
3º Manda el parametro desde tu aplicacion al informe.

Esto funciona de maravilla.

Un saludo....
Alfonso Sanchez Perez

chicharos

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Re: Visual Basic 6.0 Y Cristal Report 8.5
« Respuesta #2 en: Lunes 4 de Octubre de 2004, 17:22 »
0
hola alfonso:


espero disculpes mi ignoracia pero si tuvieras una parte de codigo que me pudieras dar  para yo entender mas lo que me estas explicando o de otra forma donde lo puedo localizar informacion para leer hacerca del tema?

seek20

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Visual Basic 6.0 Y Cristal Report 8.5
« Respuesta #3 en: Lunes 4 de Octubre de 2004, 23:31 »
0
Hola!!!

Existen varias formas de resolver tu problema, una de ellas es que el informe lo generes a partir de un procedimiento almacenado de SQL al cual le pases como parámetro el número de pedido, o en su defecto lo generes a partir de vistas o directamente de las tablas involucradas pero pasando en vez de un parámetro una fórmula de selección al reporte. Esto lo puedes hacer a partir de la siguiente sintaxis de V.B.:

oreporte.GroupSelectionFormula = "{Tabla.Campo}=" & Pedido

Espero que esta información te sea de utilidad y cualquier duda estoy para ayudarte!!!

 :smartass:

chicharos

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Re: Visual Basic 6.0 Y Cristal Report 8.5
« Respuesta #4 en: Martes 5 de Octubre de 2004, 17:07 »
0
hola seek

fijate que ya intente hacer eso pero no puedo tendras por alli un pequeno ejemplo

Shiquilla

  • Miembro MUY activo
  • ***
  • Mensajes: 188
  • Nacionalidad: es
    • Ver Perfil
    • http://www.songesoft.com
Re: Visual Basic 6.0 Y Cristal Report 8.5
« Respuesta #5 en: Martes 5 de Octubre de 2004, 17:30 »
0
Código: Text
  1. oReporte.Database.Tables(1).SetDataSource = rs_Pedido
  2. oReporte.Database.Tables(2).SetDataSource  = rs_Pedido_Lineas
  3. ...
  4. ..
  5. .
  6.  

Y así con todas las tablas que tenga el informe.

PD: Ahora no puedo postear un ejemplo, cuando llegue a casa lo posteo

Saludos.
« §hÿqµïllæ »

Shiquilla

  • Miembro MUY activo
  • ***
  • Mensajes: 188
  • Nacionalidad: es
    • Ver Perfil
    • http://www.songesoft.com
Re: Visual Basic 6.0 Y Cristal Report 8.5
« Respuesta #6 en: Martes 5 de Octubre de 2004, 23:38 »
0
Buenas, el ejemplo que te pongo yo llamo a un informe que tiene 5 tablas, y es para sacar la factura, si algo no entiendes me dices:

Código: Text
  1. Option Explicit
  2.  
  3. Private crApp As New CRAXDRT.Application
  4. Private crReport As New CRAXDRT.Report
  5.  
  6. Private rs_Facturas As New ADODB.Recordset
  7. Private rs_Clientes As New ADODB.Recordset
  8. Private rs_Marcas As New ADODB.Recordset
  9. Private rs_Movimien As New ADODB.Recordset
  10. Private rs_Compania As New ADODB.Recordset
  11.  
  12. Private Sub Form_Load()
  13. On Error GoTo Errores
  14.         Screen.MousePointer = vbHourglass
  15.         'Preparo el informe
  16.         PrepararInforme
  17.         crReport.PrintOut True, 1
  18.         Screen.MousePointer = vbDefault
  19.         'Cierro los recordset
  20.         If rs_Clientes.State = 1 Then rs_Clientes.Close
  21.         If rs_Compania.State = 1 Then rs_Compania.Close
  22.         If rs_Facturas.State = 1 Then rs_Facturas.Close
  23.         If rs_Marcas.State = 1 Then rs_Marcas.Close
  24.         If rs_Movimien.State = 1 Then rs_Movimien.Close
  25.        
  26.         Set rs_Clientes = Nothing
  27.         Set rs_Compania = Nothing
  28.         Set rs_Facturas = Nothing
  29.         Set rs_Marcas = Nothing
  30.         Set rs_Movimien = Nothing
  31.         Set crReport = Nothing
  32.        
  33. Exit Sub
  34. Errores:
  35.     Select Case Err.Number
  36.         Case -2147467261
  37.             Resume Next
  38.         Case Else
  39.             Screen.MousePointer = vbDefault
  40.             MsgBox Err.Description, vbCritical + vbOKOnly
  41.             Unload Me
  42.     End Select
  43. End Sub
  44.  
  45.  
  46. Private Sub PrepararInforme()
  47. On Error GoTo ErrHandler
  48.     Set crReport = crApp.OpenReport(App.Path & "\Informes\Factura.rpt", 1)
  49.     crReport.DiscardSavedData
  50.    
  51.     Dim SQL As String
  52.     'SQL Tablas Clientes
  53.     SQL = "SELECT * FROM Clientes WHERE Entrada = " & CLng(Entrada)
  54.     rs_Clientes.Open SQL, cn, adOpenDynamic, adLockReadOnly
  55.    
  56.     'SQL Tabla Compañías
  57.     SQL = "SELECT * FROM Compania WHERE Codigo_Compania = '" & rs_Clientes![Compania_Seguro] & "'"
  58.     rs_Compania.Open SQL, cn, adOpenDynamic, adLockReadOnly
  59.    
  60.     'SQL Tabla Facturas
  61.     SQL = "SELECT * FROM Facturas WHERE Entrada = " & CLng(Entrada) & " ORDER BY Importe"
  62.     rs_Facturas.Open SQL, cn, adOpenDynamic, adLockReadOnly
  63.      
  64.     'SQL Tablas Marcas
  65.     SQL = "SELECT * FROM Marcas WHERE Marcas.Marca = '" & rs_Clientes![Vehiculo] & "'"
  66.     rs_Marcas.Open SQL, cn, adOpenDynamic, adLockReadOnly
  67.    
  68.     'SQL Tablas Movimien
  69.     SQL = "SELECT * FROM Movimien WHERE Entrada = " & CLng(Entrada) & " ORDER BY Tipo_Movimiento DESC"
  70.     rs_Movimien.Open SQL, cn, adOpenDynamic, adLockReadOnly
  71.    
  72.  
  73.     crReport.Database.Tables(1).SetDataSource rs_Clientes
  74.     crReport.Database.Tables(2).SetDataSource rs_Movimien
  75.     crReport.Database.Tables(3).SetDataSource rs_Facturas
  76.     crReport.Database.Tables(4).SetDataSource rs_Compania
  77.     crReport.Database.Tables(5).SetDataSource rs_Marcas
  78. Exit Sub
  79. ErrHandler:
  80.     If Err.Number = -2147206461 Then
  81.         MsgBox "El archivo de reporte no se encuentra, restáurelo de los discos de instalación", _
  82.             vbCritical + vbOKOnly
  83.     Else
  84.         MsgBox Err.Description, vbCritical + vbOKOnly
  85.         Unload Me
  86.     End If
  87.  
  88.     Screen.MousePointer = vbDefault
  89. End Sub
  90.  

Espero que te sirva de ayuda, saludos.
« §hÿqµïllæ »