# مباحث متفرقه برنامه نویسی > گزارش سازی با Crystal Report >  یه مشکل با پارامتر

## h_sadeghynejad

راستش من میخوام که پارامتر های یه پروسیجر رو از توی VB.Net2005 مقدار بدم اما نمیدونم که چرا خطا میگیره
دستور من این هستش
Rep_CompPata.SetParameterValue("@code_", Int_ID)نمیدونم چطوریه که فقط برای پارامترهای پروسیجر مشکل میگیره و پارامترهای خود کریستال رو به راحتی مقدار دهی میکنه البته اینکه زمانی با پارامتر های پروسیجر مشکل پیدا میکنه که برنامه رو روی یه کامپیوتر دیگه اجرا میکنم و میخوام که نام سرور و دیتابیس رو از توی برنامه تغییر بدم
این هم پیغام خطا که هنگام اجرای گزارش نشون میده

----------


## sm

به حروف کوچیک و بزرگ دقت کنین... حساسه
عین پارامتر رو از توی کریستال به کدتون منتقل کنین.
این خطا میگه که توی این روال باید پارامتر Code_ باشه که نیست.

موفق باشید

----------


## h_sadeghynejad

از این لحاظ چک کردم اما مشکل من از این نیست چون وقتی برنامه رو روی سیستم خودم اجرا می کنم پیغام خطا نمیده اما وقتی روی سیستم دیگه اجرا میکنم اگه اون پارامترهای پروسیجر رو نذارم مشکلی نداره اما برای مقدار دهی اون پارامتر مشکل داره

----------


## sm

SP ی که توی بانک روی کامپیوتر مقصد رو دارین چک کنین.
Connection String درسته؟

----------


## h_sadeghynejad

چک کردم درست کار میکنه

----------


## h_sadeghynejad

میخواستم که اگه میشه یه مثال بزارید در مورد استفاده کردن از یه پروسیجر که دارای پارامتر هستش توی کریستال

----------


## h_sadeghynejad

آقا اگه میشه یه کمکی بکنید

----------


## sm

این SP که باید توی جدول Northwind خود SQL Server 2000 قرار بدین :

CREATE PROCEDURE Test  @CT nvarchar(30)
AS
SELECT     CustomerID, CompanyName, ContactName, ContactTitle
FROM         dbo.Customers
WHERE ContactTitle=@CT
GO

برنامش رو هم براتون ضمیمه کردم. (دات نت 2003)

موفق باشید

----------


## h_sadeghynejad

دوست عزیز از شما متشرکم به خاطر توجه تون 
راستش من از نمونه سورس شما استفاده کردم ولی مشکلم باز هم حل نشد بعد فهمیدم که عیب از کجاست من میخوام که توی یک کوئری از یک دیتابیس دیگه اطلاعات بکشم و توی گزارشم که از به یه دیتابیس دیگه وصل هست نمایش بدم
به نظر شما پیغام خطایی که نمایش میده به دلیل همین هست - اگه هست مشکلم رو چطوری حل کنم
متشکرم

----------


## sm

بله... باتوجه به پیغام، میتونه به این دلیل باشه
برای اصلاح از روش زیر عمل کنین :
توی کریستال از منوی Databse گزینه Set Datasource Location رو کلیک کنین و کانکشن رو عوض کنین.
اگه توی دات نت کار میکنین برای دسترسی به Databse روی گزارش راست کلیک کنین.

موفق باشید

----------


## h_sadeghynejad

دوست عزیز متشکرم از اینکه به این تاپیک توجه کردید و جواب منو میدید
راستش نمیدونم که این کد من چطوریه که هنوز درست نشده البته اینو بگم که   من روی کامپیوتر خودم هیچ مشکلی ندارم اما وقتی نام سرور یا دیتابیس رو عوض میکنم باز این پیغام خطا رو میده خواستم که ببینم که اشکال از برنامه من هستش یا نه روی یه برنامه کوچولو تستش کردم اما بازم هنوز خطا میده اگه میشه این لینک رو ببینید اشکالش چیه
البته دیتابیسی که استفاده شده توی همین فایل زیپ هستش اونو اتچ کنید به اس کیو ال
Project.rar
متشکرم

----------


## sm

نماز و روزه هاتون مورد قبول حق...التماس دعا
--------------------------------------------------
دوست عزیز مشخصه که نباید جواب بده!
آخه شما توی SP یه پارامتر دارین بنام @EmpID_ ولی توی کد میخواین مقدار رو به پارامتر @code_ رد کنین که این نشدنیه... باید این دو همنام باشند...
اگه دقت کرده باشین چندتا پست قبل یادآور شدم که حتی باید حروف کوچک و بزرگ رو هم مدنظر قرار بدین، این که اصلا ناماشون باهم همخونی نداره.
نمونه برنامه ایکه کار میکنه رو براتون میزارم.
مسیر بانک هم نیاز به تغییرات نداره و اجرا میشه.

موفق باشید

----------


## sm

نماز و روزه هاتون مورد قبول حق...التماس دعا
--------------------------------------------------
الان برنامه تون رو دیدم...با 2005 بود
مشکل شما مشخص شد چیه!
کافیه خط زیر رو اصلاح کنین:

ConnInfo.ServerName = "hamed"

شما بصورت پیش فرض چون نام سرور خودتون hamedهست برنامه درست عمل میکنه اما روی بقیه سیستمها چون سرور hamed رو نمیشناسه خطا میگیره.
اگه اونجایی هم که میخواین استفاده کنین توی شبکه نیست و فقط روی کلاینت انجام میشه کافیه بجای hamed فقط یک نقطه قرار بدین یا این عبارت رو : (local)
ضمنا توصیه میشه از یوزر sa استفاده نکنین!

موفق باشید

----------


## h_sadeghynejad

> آخه شما توی SP یه پارامتر دارین بنام @EmpID_ ولی توی کد میخواین مقدار رو به پارامتر @code_ رد کنین که این نشدنی


این عین کد برنامه هستش 
Rep_MemInTime.SetParameterValue("@EmpID_", 4)
و 



> بصورت پیش فرض چون نام سرور خودتون hamedهست


من روی سیستمی که میخوام تستش کنم این رو با نام همون سیستم قرارش میدم در اصل برنامه باید توی شبکه اجرا بشه و نمیتونم به صورت Local استفاده کنم و اگه شما اونو با نام سیستم خدتون قرار بدید باز هم همین خطا را می بینید

----------


## sm

نماز و روزه هاتون مورد قبول حق...التماس دعا
--------------------------------------------------
باید نام سرور رو توی شبکه به این صورت قرار بدین :

ComputerNane\SQLServername

یوزر و پسورد رو هم دقت کنین.

موفق باشید

----------


## h_sadeghynejad

این کار رو هم کردم حل نشد 
اگه مشکلی نیست اون فایل رو که گذاشتم رو اجرا کنید ببینید مشکلش چطوری حل میشه
متشکرم

----------


## h_sadeghynejad

دوستان اگه میشه یه کمک بکنید مشکلم هنوز حل نشده

----------


## sm

اون نمونه برنامه ایکه من گذاشتم تست کردین؟
SQLتون چه نسخه ایه؟

موفق باشید

----------


## h_sadeghynejad

اره اون درست کار میکنه اما همونطور که من گفتم این مشکل زمانی ظاهر میشه که لازم باشه که یکی از مشخصات مثل نام سرور یا نام دیتابیس عوض بشه که در اون صورت پیغام خطا میده

----------


## h_sadeghynejad

آخرش فهمیدم که مشکل از کجاست من باید برای هر جدول فیلد Location را برابر کنم با نام پروسیجر تا درست بشه

----------

