Visual Basic y Crystal Reports

Te cuento recién estoy incursionando en esto, pero ya he resuelto algunos problemas que iba teniendo. Mi problema concreto es la generación de un reporte armado en Crystal R. Desde Visal Basic. El Reporte esta generado en cristal y las bases de datos a las que accedo están en un servidor NT son archivos dbf con Indices CDX, la configuración del reporte la defino en ODBC Visual Fox Pro Tables en el cual adiciono 2 bases. El reporte se genera perfecto emitiéndolo desde Crystal. Mi problema ocurre cuando lo llamo desde Visual. Pues me da el error: "error '20599' en tiempo de ejecución: Cannot open SQL server. Envío el Código de mi Programa para que lo veas. El path de mi reporte esta en el dico local de mi PC, y el reporte accede a las bases de datos del servidor. CÓDIGO:
Private Sub Command1_Click()
'Dim nvar As String
'nvar = Text1.Text
Dim Destino As Variant
Destino = 0
If Option1.Value = True Then
Destino = 0
End If
If Option2.Value = True Then
Destino = 1
End If
CrystalReport1.Destination = Destino
CrystalReport1.ReportFileName = "C:\DESARROLLO\MOVCLI.rpt"
'CrystalReport1.Formula = "{gva12.n_comp}= '" & nvar & " ' "
CrystalReport1.Action = 1
End Sub
Private Sub Command2_Click()
End
End Sub
Desde ya y en espera de una respuesta

1 respuesta

Respuesta
1
Antes de empezar te recomiendo que si vas a usar Visual Basic en cualquier versión te recomiendo uses el propio Datareport que viene con las versiones 5 en adelante. Los grupos de noticias de programadores están repletos de problemas conocidos entre el VB y Crystal. Hecho esta introducción creo que el fallo de tu programa estriba en que no le has indicado al report donde están los datos. Verás, cuando creas un report desde crystal le indicas donde están los datos y realiza una conexión con la BD. Sin embargo, desde VB esa conexión no está realizada. Añade lo siguiente a tu código. Advierto! Esto es para la versión que viene con el VB no para la última (la 8).
CrystalReport1.Connect = "DSN=NombreDeTuDSN;UID=Usuario;PWD=TuPassword;"
Esto realizará la conexión a través del ODBC que has creado con la base de datos antes de iniciar el listado.
Parece que tendré un problema pues justo la version de Crystal con la que estoy Trabajando es la 8.00 .
Tal vez se pueda definir con el código que me enviaste.
CrystalReport1.Connect = "DSN=NombreDeTuDSN;UID=Usuario;PWD=TuPassword;"
Pero quisiera me aclares como es el tema del DSN pues en ningún momento en la def. del reporte aclare una cosa así.
Desde ya y sin causar molestias agradezco
Bien, antes de explicarte te diré algo... el nuevo Crystal tiene una opción para que incorpores al VB un ActiveX que te permitirá visualizar, editar, modificar y hasta crear los report desde el propio VB sin tener que hacerlo desde un programa externo. Te aconsejo que lo uses. En la instalación del crystal puedes incluir esta opción si no lo has hecho antes. La ventaja... que puedes acceder a todos los apartados del report directamente desde VB pudiendo modificar parte de el en tiempo de ejecución.
El tema del DSN es que debes crear un ODBC mediante: inicio->Panel de control->Orígenes de datos ODBC, mediante el cual le indiques el VB y crystal que servidor de SQL tienes y la BD a la que deseas acceder. Al hacer esto mediante crystal directamente te has saltado este paso pues el localiza cualquier servidor SQL que esté activo y solo tienes que indicar la base de datos y tablas de las que quieres obtener datos.
Te adjunto un trozo de código que utilizo para realizar mis report con la nueva versión:
CrystalReport1.ReportFileName = App.Path & "\" & sFichero & ".RPT"
CrystalReport1.Connect = "DSN=MiDSN;UID=Usuario;PWD=MiPassword;" CrystalReport1.RetrieveDataFiles
CrystalReport1.CopiesToPrinter = 1 'número de Copias
CrystalReport1.Destination = crptToPrinter
CrystalReport1.Action = 1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas