Domanda

ho bisogno di passare un elenco di valori chiave per una stored procedure in SQL-Server, e che stored procedure poi ritorna i valori necessari per un report Crystal.

Invece di inviare un elenco separato da virgole e poi l'analisi che, è stato suggerito che io uso un tipo di tabella. Così, ho definito che tipo di tabella nel modo più semplice fatta di numeri interi:

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

Tuttavia, ora ho bisogno di modificare il mio rapporto di cristallo di prendere quella come parametro di input. (La stored procedure inizia con ...

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

Le relazioni saranno per lo più essere chiamato con ColdFusion o C # .NET, quindi non credo che ci sarà un problema in aggiunta di ID per il tipo di tabella. Ma io non so come definire quel parametro in Crystal. L'elenco dei tipi nella procedura guidata Crea Nuovo parametro è rahter scarsa.

È stato utile?

Soluzione 3

Per quanto posso dire, questo non è possibile. Cristallo non prende i tipi di dati che non riconosce da altre applicazioni, come ad esempio SQL Server.

Altri suggerimenti

Non credo che si sta utilizzando il concetto di parametro in Crystal modo giusto. A mia conoscenza, è meglio utilizzato per l'inserimento manuale dei dati (e si sta cercando di passare un array multi-dimensionale, non il migliore uso di esso). Vi consiglio:

  1. La tua prima idea di alimentare nella tabella come una stringa delimitata da virgole.
    OR
  2. Salvataggio di uscita del vostro procedura per una tabella temporanea in SQL-Server e l'importazione di questo.

In genere, un report Crystal che scappa una procedura viene creato puntando la relazione della procedura - tutti i parametri necessari per la procedura sono generati automaticamente nel report. Se avete fatto questo nella finestra di progettazione di Crystal Reports, senza il rapporto generare il parametro di input tavolo, quindi non credo che si può fare in questo modo.

Come ulteriore alternativa all'utilizzo di un elenco separato da virgole, avete considerato:

  • creazione di una tabella di ID di sessione di attesa e valori di input,
  • popolare il tavolo solo prima di eseguire il report con un ID di sessione ei valori di input richiesti,
  • passando l'ID di sessione al rapporto come parametro,
  • passando l'ID di sessione dal report alla procedura come parametro,
  • codifica la procedura per selezionare i valori di ingresso dalla nuova tabella in base all'ID sessione e rimuovere le voci per l'ID di sessione dopo l'esecuzione del rapporto?
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top