PDA

View Full Version : یه مشکل با پارامتر



h_sadeghynejad
شنبه 17 شهریور 1386, 09:39 صبح
راستش من میخوام که پارامتر های یه پروسیجر رو از توی VB.Net2005 مقدار بدم اما نمیدونم که چرا خطا میگیره
دستور من این هستش


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

sm
شنبه 17 شهریور 1386, 10:04 صبح
به حروف کوچیک و بزرگ دقت کنین... حساسه
عین پارامتر رو از توی کریستال به کدتون منتقل کنین.
این خطا میگه که توی این روال باید پارامتر Code_ باشه که نیست.

موفق باشید

h_sadeghynejad
شنبه 17 شهریور 1386, 10:55 صبح
از این لحاظ چک کردم اما مشکل من از این نیست چون وقتی برنامه رو روی سیستم خودم اجرا می کنم پیغام خطا نمیده اما وقتی روی سیستم دیگه اجرا میکنم اگه اون پارامترهای پروسیجر رو نذارم مشکلی نداره اما برای مقدار دهی اون پارامتر مشکل داره

sm
شنبه 17 شهریور 1386, 12:20 عصر
SP ی که توی بانک روی کامپیوتر مقصد رو دارین چک کنین.
Connection String درسته؟

h_sadeghynejad
شنبه 17 شهریور 1386, 12:24 عصر
چک کردم درست کار میکنه

h_sadeghynejad
شنبه 17 شهریور 1386, 12:57 عصر
میخواستم که اگه میشه یه مثال بزارید در مورد استفاده کردن از یه پروسیجر که دارای پارامتر هستش توی کریستال

h_sadeghynejad
یک شنبه 18 شهریور 1386, 09:36 صبح
آقا اگه میشه یه کمکی بکنید

sm
یک شنبه 18 شهریور 1386, 10:36 صبح
این 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
چهارشنبه 21 شهریور 1386, 10:10 صبح
دوست عزیز از شما متشرکم به خاطر توجه تون
راستش من از نمونه سورس شما استفاده کردم ولی مشکلم باز هم حل نشد بعد فهمیدم که عیب از کجاست من میخوام که توی یک کوئری از یک دیتابیس دیگه اطلاعات بکشم و توی گزارشم که از به یه دیتابیس دیگه وصل هست نمایش بدم
به نظر شما پیغام خطایی که نمایش میده به دلیل همین هست - اگه هست مشکلم رو چطوری حل کنم
متشکرم

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

موفق باشید

h_sadeghynejad
یک شنبه 25 شهریور 1386, 04:34 صبح
دوست عزیز متشکرم از اینکه به این تاپیک توجه کردید و جواب منو میدید
راستش نمیدونم که این کد من چطوریه که هنوز درست نشده البته اینو بگم که من روی کامپیوتر خودم هیچ مشکلی ندارم اما وقتی نام سرور یا دیتابیس رو عوض میکنم باز این پیغام خطا رو میده خواستم که ببینم که اشکال از برنامه من هستش یا نه روی یه برنامه کوچولو تستش کردم اما بازم هنوز خطا میده اگه میشه این لینک رو ببینید اشکالش چیه
البته دیتابیسی که استفاده شده توی همین فایل زیپ هستش اونو اتچ کنید به اس کیو ال
10995
متشکرم

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

موفق باشید

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


ConnInfo.ServerName = "hamed"

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

موفق باشید

h_sadeghynejad
یک شنبه 25 شهریور 1386, 08:46 صبح
آخه شما توی SP یه پارامتر دارین بنام @EmpID_ ولی توی کد میخواین مقدار رو به پارامتر @code_ رد کنین که این نشدنی
این عین کد برنامه هستش

Rep_MemInTime.SetParameterValue("@EmpID_", 4)
و

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

sm
یک شنبه 25 شهریور 1386, 09:08 صبح
نماز و روزه هاتون مورد قبول حق...التماس دعا
--------------------------------------------------
باید نام سرور رو توی شبکه به این صورت قرار بدین :


ComputerNane\SQLServername

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

موفق باشید

h_sadeghynejad
یک شنبه 25 شهریور 1386, 09:46 صبح
این کار رو هم کردم حل نشد
اگه مشکلی نیست اون فایل رو که گذاشتم رو اجرا کنید ببینید مشکلش چطوری حل میشه
متشکرم

h_sadeghynejad
یک شنبه 25 شهریور 1386, 11:59 صبح
دوستان اگه میشه یه کمک بکنید مشکلم هنوز حل نشده

sm
یک شنبه 25 شهریور 1386, 12:03 عصر
اون نمونه برنامه ایکه من گذاشتم تست کردین؟
SQLتون چه نسخه ایه؟

موفق باشید

h_sadeghynejad
یک شنبه 25 شهریور 1386, 16:36 عصر
اره اون درست کار میکنه اما همونطور که من گفتم این مشکل زمانی ظاهر میشه که لازم باشه که یکی از مشخصات مثل نام سرور یا نام دیتابیس عوض بشه که در اون صورت پیغام خطا میده

h_sadeghynejad
دوشنبه 26 شهریور 1386, 11:56 صبح
آخرش فهمیدم که مشکل از کجاست من باید برای هر جدول فیلد Location را برابر کنم با نام پروسیجر تا درست بشه