Pregunta

En primer lugar, no puedo soportar cristal! Está bien, eso es de mi pecho ...

Ahora, tenemos una vieja VB6 aplicación mantenemos para un cliente, que utiliza la biblioteca de cristal Automation para programáticamente cambiar las fórmulas de selección de registros en un montón de Crystal Reports 8.5 informes.

Hay dos informes que son casi idénticos. Tenía que cambiar ellos recientemente para agregar otro campo de otra tabla. Cuando añadí la mesa a los informes, sin embargo, si bien añadió que en el diseñador visual, que no añadió que en la cláusula FROM de la instrucción SQL. Por lo tanto, he editado manualmente la instrucción SQL para añadir en unirse a la adicional. KO, funciona muy bien. Si corro los informes en modo de vista previa de cristal, que funcionan exactamente como se esperaba.

Ahora, los usuarios fue a probar los cambios dentro de la aplicación VB. Uno de los informes funciona bien y dandy. El otro informe, sin embargo, no logra establecer la fórmula de selección como se esperaba.

El código establece las fórmulas de selección utilizando el PESetSelectionFormula función. He verificado que la cadena que se pasa a la función como la nueva fórmula de selección es correcta a través de un paso a través del examen de las variables. La llamada a PESetSelectionFormula parece estar funcionando bien, y devuelve un valor de 1, lo que lo más cerca que puedo encontrar en cualquier lugar indica éxito. (El otro informe, que está funcionando bien de código también está regresando 1.)

Sin embargo, el informe está fallando con un error: Error Code: 534 - Error detected by database DLL. El código, para fines de depuración vuelca a cabo la cadena SQL que se utiliza actualmente en el informe. El SQL que sale del informe es:

SELECT ... FROM ... 
WHERE

ORDER BY ...

Como se puede ver, el espacio en blanco cláusula WHERE es, que me imagino que es la razón por la DLL de la base de datos se upchucking en este comunicado. No entiendo por qué la biblioteca de automatización no está estableciendo la cláusula WHERE a pesar de que la llamada a PESetSelectionFormula se está pasando una cadena válida y está regresando éxito. Pensé que tal vez era porque había editado manualmente el SQL en el informe para agregar la mesa no estaba agregando, pero lo hice lo mismo en el otro informe casi idéntico, y que uno está trabajando muy bien.

Alguien tiene alguna idea de por qué PESetSelectionFormula podría informar de éxito, pero en realidad no hace nada?

P.S. ya he intentado hacer un Base de datos> Verificar base de datos en los menús, y los que se dice que el informe era todo hasta la fecha y no ayuda en absoluto.

¿Fue útil?

Solución 3

De acuerdo, esto es típico de por qué acabo de desprecio Crystal Reports.

Mi jefe volvió de vacaciones, y lo miró, ... no hizo nada, y ahora funciona. Me mostró exactamente lo que hizo, y él no cambió ni hacer nada con el informe, sólo los mismos pasos de depuración que había tomado, pero ahora funciona mágicamente.

Me gusta realmente el software que acaba de automagicamente se detiene y comienza a trabajar de esta manera. Gracias por las ideas.

Otros consejos

Nunca he usado PESetSelectionFormula , pero me he encontrado con problemas al importar datos de otro modo aceptables:

  1. ¿Tiene consulta SQL Use su última cualesquiera funciones poco comunes, es decir, NZ ()? Crystal no siempre reconoce las funciones de VB, en mi humilde opinión.

  2. ¿Tiene algún valor nulo en los datos importados que están creando conflictos?

  3. Después de recopilar los datos, se puede poner en una tabla temporal y decirle cristal para recoger los datos de esa tabla temporal? Si tiene problemas con el # 1 o # 2, esto puede ser una buena solución.

En algunas versiones del CR, el PESetSelectionFormula añade el nuevo valor a la fórmula de selección de registros existentes, en otras versiones, PESetSelectionFormula reemplaza la fórmula de selección de registros existentes con el nuevo valor.

no recuerdo cuando ocurrió este interruptor, pero debería ser fácil para usted para determinar qué comportamiento está ocurriendo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top