Crystal Report con Visual Basic 6.0

Estoy desarrollando un programa con Visual Basic 6.0 y tengo que hacer listados. Utilizo Crystal Report 8.0. Mi primera duda fue que objeto usar (CRviewer o crystalReport). He optado por el de CrystalReport. Trabajo contra SQL Server con OLEdb. Me funciona todo bien, pero mi gran duda es como cambiar la conexión con el servidor. Tengo la cadena de conexión en una string (la misma con la que abro el ADODB. Connection). Intento establecer la conexión del objeto crystal report (Me. Cr.Connect = CadenaConec), pero al ejecutar Me. Cr. Action=1, me da un error "No puedo abrir el servidor". Creo que sigue buscando el servidor que tiene vinculado el informe original. Si arranco el motor SQL al que hace referencia el informe original, si funciona. Entiendo que no he conseguido conectar el informe al servidor que yo quiera con el usuario deseado. Es importante solucionar este tema, ya que el programa tiene seguridad en SQL y depende de que listados (o tablas) hay usuarios que no tienen acceso. Te agradecería mucho tu ayuda, ya que no se a quien acudir.
1

1 respuesta

Respuesta
1
¿Es inminente usar una cadena de conexión directa al servidor?
La manera más sencilla es usando mejor el ODBC y no te metes con esos problemas.
Que diferencias hay (en código) entre OleDB y ODBC, a la hora de llamar un informe de Crystal. Yo creía que era exactamente igual. Se trataba de crear la cadena de conexión (Provider... o DSN=...)y asignarla a la propiedad CR.Connect. Si utilizo la cadena ODBC, donde hay que poner el nombre y la contraseña (entiendo que la selección del servidor esta en la configuración de ODBC). No.
Por cierto, te agradezco muchísimo tu rápida ayuda, no puedes imaginarte lo que me urge.
De hecho es mejor la conexión Directa (OLEdb), es más rapido y es una tecnología más nueva y cada vez se hace más estándar.
El punto aquí es para resolver de entrada un problema y evitar llamar una cadena de conexión, si en tu sistema usas el mismo ODBC que en el del reporte no tienes que enviarle de nuevo la conexión pues ya se encuentra grabada en el reporte, y si ese reporte funciona en el modo de edición utilizando un ODBC va a funcionar desde tu sistema.
Ahora, en teoría debería funcionar así si usas una conexión OLEDB también, intenta no eviarle ninguna cadena de conexión para que utilice la que ya tiene grabada, esto no va a funcionar si tienes diferentes bases de datos con la misma estructura.
Siento seguir dándote la lata, pero esto no chuta. Si no pongo ninguna cadena funciona (siempre y cuando el usuario con que se conecta crystal sea en blanco). He intentado con las propiedades c.Password, c.UserName, pero no funciona. La única solución que veo (Chapuza) es inventarme un usuario fantasma sin contraseña y configurar todos los listados con este usuario. Sabes tu alguna solución para controlar desde software quien se conecta, como se conecta, ¿contra qué servidor y contra que base de datos?.
Gracias y un saludo.
No había tenido una situación parecida, de hecho cuando estuve cerca de eso lo que hice fue crear el mismo usuario y la misma contraseña para ese sistema en todos los servidores, hice copias del reporte con diferente nombre para cada servidor y funciona! Como el tamaño en bytes del reporte es pequeño no hubo problemas por espacio, ademas es más fácil controlar que reporte escoger que escoger un servidor por código, te digo, intente hacer esto y también me dio esas broncas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas