Pregunta

Necesito pasar una lista de los valores clave a un procedimiento almacenado en SQL Server, y que el procedimiento almacenado y luego vuelve de nuevo los valores necesarios para un informe de Crystal.

En lugar de enviar una lista separada por comas y luego analizar que, se sugirió que utilizo un tipo de tabla. Por lo tanto, he definido que tipo de tabla como una simple hecho de enteros:

CREATE TYPE [dbo].[SiteIdentifiers] AS TABLE 
(
    [SiteId]     BigInt, 
    PRIMARY KEY ([SiteId])
)

Sin embargo, ahora tengo que modificar mi informe cristalino a tomar esto como un parámetro de entrada. (El procedimiento almacenado comienza con ...

CREATE  PROCEDURE [dbo].[sp_SiteReport]
    @SiteIds    [dbo].[SiteIdentifiers] ReadOnly
AS

Los informes sobre todo ser llamado con ColdFusion o C # .NET, así que no creo que vaya a ser un problema en la adición de ID para el tipo de tabla. Pero no sé cómo definir ese parámetro en Crystal. La lista de tipos en el asistente Crear nuevo parámetro es escasa rahter.

¿Fue útil?

Solución 3

Por lo que yo puedo decir, esto no es posible. Crystal no toma los tipos de datos que no reconoce desde otras aplicaciones, como SQL Server.

Otros consejos

No creo que estés utilizando el concepto de parámetro en Crystal de la manera correcta. Que yo sepa, es la mejor opción para la introducción manual de datos (y que está tratando de pasar una matriz multidimensional, no es el mejor uso de ella). Recomiendo:

  1. Su primera idea de alimentar en la mesa como una cadena delimitada por comas.
    O
  2. Ahorro de salida de su procedimiento a una tabla temporal en el SQL Server e importar eso.

Normalmente, un informe de Crystal que se escapa de un procedimiento se crea apuntando el informe en el procedimiento - los parámetros necesarios para el procedimiento se generan automáticamente en el informe. Si ha hecho esto en el diseñador de Crystal Reports sin el informe de la generación de la tabla parámetro de entrada, entonces no creo que se pueda hacerlo de esta manera.

Como otra alternativa al uso de una lista separada por comas, ¿ha considerado:

  • crear una tabla de identificadores de sesión de retención y valores de entrada,
  • poblar la mesa justo antes de ejecutar el informe con un ID de sesión y los valores de entrada requeridos,
  • pasando la ID de sesión al informe como un parámetro,
  • pasando la ID de sesión desde el informe al procedimiento como un parámetro,
  • codificar el procedimiento para seleccionar los valores de entrada de la nueva tabla en base a la identificación de la sesión, y la eliminación de las entradas para el ID de sesión después de ejecutar el informe?
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top