Как указать входной параметр типа таблицы SQL в Crystal Reports? - PullRequest
0 голосов
/ 27 сентября 2010

Мне нужно передать список значений ключей хранимой процедуре в SQL-Server, и эта хранимая процедура затем возвращает значения, необходимые для отчета Crystal.

Вместо того, чтобы отправлять список через запятую и затем анализировать его, было предложено использовать тип таблицы. Итак, я определил этот тип таблицы как просто составленный из целых чисел:

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

Однако теперь мне нужно изменить свой Crystal Report, чтобы он использовался в качестве входного параметра. (Хранимая процедура начинается с ...

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

Отчеты будут вызываться в основном из ColdFusion или C # .net, поэтому я не думаю, что возникнет проблема с добавлением идентификаторов к типу таблицы. Но я не знаю, как определить этот параметр в Crystal. Список типов в мастере создания нового параметра очень мал.

Ответы [ 3 ]

1 голос
/ 27 сентября 2010

Не думаю, что вы правильно используете концепцию параметров в Crystal. Насколько мне известно, его лучше всего использовать для ручного ввода данных (а вы пытаетесь передать многомерный массив, а не лучшим его использованием). Я рекомендую:

  1. Ваша первая идея подачи в таблицу в виде строки, разделенной запятыми.
    ИЛИ
  2. Сохранение вывода вашей процедуры во временную таблицу на SQL-сервере и ее импорт.
0 голосов
/ 21 октября 2010

Насколько я могу судить, это невозможно. Crystal не принимает типы данных, которые он не распознает, из других приложений, таких как SQL Server.

0 голосов
/ 28 сентября 2010

Обычно отчет Crystal, который запускает процедуру, создается путем указания отчета на процедуру - все необходимые параметры для процедуры автоматически генерируются в отчете.Если вы сделали это в конструкторе Crystal Reports без отчета, генерирующего входной параметр таблицы, то я не думаю, что вы можете сделать это таким образом.

В качестве другой альтернативы использованию списка, разделенного запятыми,Вы рассмотрели:

  • создание таблицы для хранения идентификаторов сеансов и входных значений,
  • заполнение таблицы непосредственно перед запуском отчета с идентификатором сеанса и необходимыми входными значениями,
  • передача идентификатора сеанса в отчет в качестве параметра,
  • передача идентификатора сеанса из отчета в процедуру в качестве параметра,
  • кодирование процедуры для выбора входных значений изновая таблица на основе идентификатора сеанса и удаление записей для идентификатора сеанса после запуска отчета?
...