في SSRS 2005 ، يجب أن يعلن المتغير القياسي
-
22-08-2019 - |
سؤال
لدي تقرير يدير بروك مخزنة:
EXEC ra_spProjectCalendar @Month, @Year, @ProjectID
ProjectID هو منسد متعدد الاختيار. عند تحديد مشروع واحد ، يعمل بشكل جيد. إذا قمت بتحديد مشاريع متعددة ، أحصل على الخطأ:
"Must declare scalar variable "@ProjectID"
يعمل بشكل جيد عندما أقوم بتشغيلها من علامة تبويب البيانات ، ومع ذلك ، عندما أضعها في وضع المعاينة ، فإنني أواجه مشاكل.
المحلول
حصلت على شيء مشابه للعمل من خلال بناء الاستعلام كتعبير - في مثالك
="EXEC ra_spProjectCalendar @Month = '" & Parameters!Month.Value & "',@Year='" & Parameters!Year.Value & "',@ProjectID = '" & Join(Parameters!ProjectID.Value, ",") & "'"
تقوم بعض التعليمات البرمجية في SP الهدف بتقسيم السلسلة المتعددة الخلفية إلى جدول مؤقت يتم استخدامه في الوصلات لإنشاء الإخراج.
لا أستطيع أن أتذكر لماذا انتهى بنا الأمر بهذه الطريقة - لقد كان ذلك في بداية انتقالنا إلى SSRs ، وقد انتقلت الأمور قليلاً منذ ذلك الحين - ولكن قد تكون هذه هي المشكلة التي تصفها.
نصائح أخرى
كان لدي نفس الخطأ يحدث: يجب أن يعلن المتغير القياسي.
أدرك الآن أن أول شيء يجب التحقق منه هو أنه عند إدخال الاستعلام كنص ، أو PROC المخزن كنوع PROC المخزن ، يقوم SSRS تلقائيًا بإنشاء إدخال Paramter في علامة التبويب المعلمات لخصائص مجموعة البيانات. إذا لم ينشئها ، فلن تتمكن من قراءة استعلامك بشكل صحيح.
في حالتي ، كنت أستخدم OpenQuery لاستدعاء مكعب خدمات التحليل والإشارة إلى الأسماء الميدانية التي تحتوي على الكثير من الأقواس المربعة. لسوء الحظ ، يحب SSRS إعادة تنسيق الكود الخاص بك بحيث يتم تشكيله بشكل جيد [التدابير].
إذا قمت بتحرير هذا الاستعلام في أداة أخرى ، فعليك إعادة فحصه مرة أخرى إلى SSRS ، فلن تتمكن SSRS من قراءة هذا الجملة! على الرغم من أنه يولدها! لذا ، قم بإزالة جميع الأقواس المربعة الإضافية واستبدل عروض الأسعار المزدوجة وازدهارها تعمل مرة أخرى وإنشاء معلماتك.