سؤال

أحتاج إلى تمرير قائمة من القيم الرئيسية إلى إجراء مخزن في SQL-Server ، وهذا الإجراء المخزن ثم يعيد القيم اللازمة لتقرير Crystal.

بدلاً من إرسال قائمة مفصولة فاصلة ثم تحليل ذلك ، اقترح أن أستخدم نوع الجدول. لذلك ، لقد حددت نوع الجدول هذا ببساطة مصنوع من الأعداد الصحيحة:

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

ومع ذلك ، أنا الآن بحاجة إلى تعديل تقريري الكريستال لأخذ ذلك كمعلمة إدخال. (يبدأ الإجراء المخزن بـ ...

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

سيتم استدعاء التقارير في الغالب باستخدام Coldfusion أو C#.NET ، لذلك لا أعتقد أنه ستكون هناك مشكلة في إضافة معرفات إلى نوع الجدول. لكني لا أعرف كيفية تحديد تلك المعلمة في كريستال. قائمة الأنواع في معالج CREATE New Parameter هي Rahter Scant.

هل كانت مفيدة؟

المحلول 3

بقدر ما أستطيع أن أقول ، هذا غير ممكن. لا تأخذ Crystal أنواع البيانات التي لا يتعرف عليها من التطبيقات الأخرى ، مثل SQL Server.

نصائح أخرى

لا أعتقد أنك تستخدم مفهوم المعلمة في Crystal بالطريقة الصحيحة. على حد علمي ، من الأفضل استخدامها لإدخال البيانات يدويًا (وتحاول تمرير صفيف متعدد الأبعاد ، وليس أفضل استخدام لها). انصح:

  1. فكرتك الأولى في التغذية في الجدول كسلسلة مفصلية.
    أو
  2. حفظ إخراج الإجراء الخاص بك إلى جدول مؤقت في خادم SQL واستيراد ذلك.

عادةً ما يتم إنشاء تقرير Crystal الذي يتم تشغيله عن طريق توجيه التقرير في الإجراء - يتم تلقائيًا إنشاء أي معلمات مطلوبة للإجراء تلقائيًا في التقرير. إذا قمت بذلك في مصمم Crystal Reports دون التقرير الذي يولد معلمة إدخال الجدول ، فلا أعتقد أنه يمكنك القيام بذلك بهذه الطريقة.

كبديل آخر لاستخدام قائمة مفصولة بفاصلة ، هل فكرت في:

  • إنشاء جدول لعقد معرفات الجلسة وقيم الإدخال ،
  • ملء الجدول قبل تشغيل التقرير مباشرة بمعرف جلسة وقيم الإدخال المطلوبة ،
  • تمرير معرف الجلسة إلى التقرير كمعلمة ،
  • تمرير معرف الجلسة من التقرير إلى الإجراء كمعلمة ،
  • ترميز الإجراء لتحديد قيم الإدخال من الجدول الجديد استنادًا إلى معرف الجلسة ، وإزالة إدخالات معرف الجلسة بعد تشغيل التقرير؟
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top