Frage

Ich brauche eine Liste von Schlüsselwerten an eine gespeicherte Prozedur in SQL-Server zu übergeben, und das gespeicherte Prozedur dann wieder kehrt die für einen Crystal Report benötigten Werte.

Anstatt eine durch Kommata getrennte Liste zu senden und dann das Parsen, wurde vorgeschlagen, dass ich einen Tabellentyp verwenden. Also, ich habe diesen Tabellentyp definiert als einfach ganze Zahlen aus:

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

Aber jetzt muß ich meinen Crystal Report ändern zu nehmen, dass als Eingabeparameter. (Die gespeicherte Prozedur beginnt mit ...

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

Die Berichte werden meist mit Coldfusion oder C # .net aufgerufen werden, so glaube ich nicht, dass es ein Problem sein IDs in Ergänzung des Tabellentyp. Aber ich weiß nicht, wie diese Parameter in Crystal zu definieren. Die Liste der Typen im Assistenten für neue Parameter erstellen ist rahter wenig.

War es hilfreich?

Lösung 3

Soweit ich das beurteilen kann, ist dies nicht möglich. Kristall nicht Datentypen nehmen, dass es nicht von anderen Anwendungen nicht erkennt, wie SQL Server.

Andere Tipps

Ich glaube nicht, dass Sie die richtige Weg, um die Parameter-Konzept in Crystal verwenden. Mein Wissen ist es am besten für die manuelle Eingabe von Daten verwendet wird (und Sie versuchen, ein mehrdimensionales Array zu übergeben, nicht die beste Verwendung davon). Ich empfehle:

  1. Ihre erste Idee in der Tabelle als kommagetrennte Zeichenfolge Fütterung.
    ODER
  2. Speichern der Prozedur die Ausgabe in eine temporäre Tabelle in der SQL-Server und importieren.

Normalerweise wird ein Crystal Reports-Bericht, dass wegläuft ein Verfahren mit dem Hinweis auf den Bericht des Verfahrens erstellt wird - alle erforderlichen Parameter für das Verfahren werden in dem Bericht automatisch generiert. Wenn Sie dies in Crystal Reports-Designer ohne den Bericht Erzeugen der Tabelle Eingangsparameter getan haben, dann kann ich nicht denken, dass Sie es auf diese Weise tun können.

Als weitere Alternative eine durch Kommata getrennte Liste zu verwenden, haben Sie darüber nachgedacht:

  • eine Tabelle zu halten, Session-IDs und Eingabewerte zu schaffen,
  • Bestücken der Tabelle unmittelbar vor der Ausführung des Berichts mit einer Sitzungs-ID und die Eingabewerte erforderlich,
  • Führen der Session-ID auf den Bericht als Parameter,
  • Führen der Sitzungs-ID aus dem Bericht die Prozedur als Parameter,
  • das Verfahren die Codierung der Eingangswerte aus der neuen Tabelle auf der Grundlage der Sitzungs-ID und das Entfernen der Einträge für die Session-ID nach dem Ausführen des Berichts wählen?
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top