2010-08-24 9 views

Respuesta

-1

Depende del tipo de datos para las columnas a1-e5 y de lo que intenta hacer con el valor único.

Si solo está tratando de mostrar el valor, puede crear una fórmula que use la función ToText() de Crystal para convertirlas primero a cadenas y luego concatenarlas juntas usando '+'.

ToText({id1.a1}) + ToText({id1.b2}) + ToText({id1.c3}) + ToText({id1.d4}) + ToText({id1.e5})

que podría lograr lo mismo en el lado DBMS, también.

Si puede proporcionar más información, podríamos encontrar una solución mejor.

+1

Casi subí tu respuesta, pero luego me di cuenta de que no era su pregunta. Si lo fue, sin embargo, lo respondiste perfectamente. – PowerUser

+0

Sí, lo consideré pero asumí que era una mera semántica y que era más probable que id1 fuera una fila/registro. – Ryan

+0

Gracias por responder mi pregunta. Id1 es una identificación de cliente, este cliente compró productos a1, b2, c3 en diferentes momentos, etc. Me gustaría saber qué cliente que compró a1 también compró d4. muchas gracias – Helen

0

Entonces, ¿desea concatenar datos de múltiples filas en una sola fila para visualizar? Crystal Reports realmente no está diseñado para ese tipo de cosas. Incluso si pudieras, aún así te sugeriría que primero hicieras ese lado del servidor y luego lo alimentes con Crystal.

No será demasiado difícil, un simple bucle a través de los datos en el idioma de su elección. Pero Crystal está diseñado para mostrar y formatear datos, con un conjunto decente (pero no extensivo) de herramientas de manipulación de datos. No creo que sea la mejor forma de hacerlo.

+0

Gracias por su comentario. No tengo acceso al servidor y estaba tratando de crear una matriz o matriz para contener los datos y luego mostrarlos. Pero no ha sido exitoso. Gracias por tu ayuda. – Helen

+0

Una matriz en Crystal suena como que podría hacer el truco para lo que quieres hacer ... ¿Qué problemas tuviste con eso? Puede agrupar por cliente, inicializar la matriz y un númerovar para realizar un seguimiento del tamaño en el encabezado, y hacer crecer dinámicamente la matriz (utilizando REDIM PRESERVAR) con cada nuevo producto que encuentre en los detalles. En el pie de página, tendrá una matriz de cada producto que el cliente haya comprado. – Ryan

13

Un enfoque es el método "3 Fórmula". Configura una fórmula de inicialización en cada encabezado, con la directiva de tiempo de evaluación "WhilePrintingRecords". Este enfoque fue el único disponible para hacer totales acumulados en los "buenos viejos tiempos" antes de que estuvieran disponibles los objetos RunningTotal.
Por ejemplo:
en la cabecera de Grupo: - tener una fórmula @InitiliseRT

WhilePrintingRecords; 
StringVar ConcatenatedID; 
If Not InRepeatedGroupHeader Then 
    ConcatenatedID := ""; 

En la Sección de detalles: - Disponer de una @UpdateRT Fórmula

WhilePrintingRecords; 
StringVar ConcatenatedID := ConcatenatedID + id1; 

Finalmente, en el pie de página del grupo puede ver el resultado: - Fórmula @ShowRT

WhilePrintingRecords; 
StringVar ConcatenatedID; 

Esto debería darle la cadena final de "a1b2c3d4e5".

Si es necesario, se puede añadir fórmulas adicionales para grupos de más, una variable para cada grupo (por ejemplo ConcatenatedIDGroup1, ConcatenatedIDGroup2). La clave es siempre obtener el nombre correcto entre los grupos e inicializar la variable en el encabezado del grupo.
Existen limitaciones para el uso de estas fórmulas.Las funciones de resumen incorporadas (Suma, Máx, Cuenta, ...) o RunningTotals no pueden usarlas, y no puede agruparlas.

+0

He seguido su ejemplo, pero no está funcionando cuando está en varias páginas. Por favor, ayuda o comparte algunas entradas, porque funciona bastante bien cuando el informe es de una sola página – rickyProgrammer

+0

. Olvidé el problema con varias páginas. He actualizado el código de @InitialiseRT para incluir el cheque de InRepeatedGroupHeader. La primera vez que se imprima la página, esto será falso y la cadena se vaciará. Para cualquier otra página, InRepeatedGroupHeader es verdadero y la cadena se dejará en paz. Eso sí, no lo he probado, me estoy volviendo loco, ya que no tengo Crystal instalado. –

+0

En realidad, he terminado el problema en varias páginas colocando la fórmula de inicialización en la parte del pie de página del grupo. – rickyProgrammer

Cuestiones relacionadas