سلام
من در حال نوشتن یک برنامه با wpf هستم.
تابع زیر یک SP در SQL 2014 رو که دو ورودی و دو خروجی داره فراخوانی میکنه.
private bool CheckDuplicate()
{
var dupN = new SqlParameter("DuplicateN", System.Data.SqlDbType.Bit)
{
Direction = System.Data.ParameterDirection.Output
};
var dupR = new SqlParameter("DuplicateR", System.Data.SqlDbType.Bit)
{
Direction = System.Data.ParameterDirection.Output
};
var NParam = new SqlParameter("Name", TextBox_Name.Text);
var RParam = new SqlParameter("RegisterationCode", Convert.ToInt64(TextBox_RCode.Text));
db.Database.ExecuteSqlCommand("ChkDuplicate @RegisterationCode,@Name,@DuplicateR out, @DuplicateN out", RParam, NParam, dupR, dupN);
var dupNvalue = (Boolean)dupN.Value;
var dupRvalue = (Boolean)dupR.Value;
if(dupNvalue==false && dupRvalue==false)
{
return true;
}
return false;
}
این تابع فقط در زمانی که در رویداد GotFocus در تکس باکس TextBox_Name فراخوانیش کنم بدون مشکل اجرا میشه.
اگر در جایی دیگه مثلا در هنگام کلیک بر روی دکمه ثبت موجود در پنجره و یا رویداد GotFocus و یا LostFocus هر یک از دیگر اشیا و عناصر موجود در پنجره فراخوانی کنم خطای میگیره.
این خطا
Can't convert nvarchar to bigint
در هنگام رسیدن به خط
db.Database.ExecuteSqlCommand("ChkDuplicate @RegisterationCode,@Name,@DuplicateR out, @DuplicateN out", RParam, NParam, dupR, dupN);
داده میشه.
وقتی یک breakpoint میذارم میبینم که مقدار درست به متغیر داده شده ولی پیغام خطا داده و اجرای برنامه متوقف میشه.
خطای شما Can't convert nvarchar to bigint هست. یعنی یکی از پارامترهاتون از نوع long یا bigint هست در دیتابیس، ولی دارید بهش یک رشته ارسال می کنید. باید تک تک پارامترها و DataType اونها رو چک کنید و مقادیری هم که بهش ارسال می کنید چک کنید که اشتباه ارسال نشه.
سلام
با این که همه چیز به ظاهر درست بود یعنی تبدیل nvarchar به bigint درست انجام میشد (با قرار دادن breakponit و اجرای خط به خط و مشاهده مقادیر اختصاص داده شده به هر متغییر) در هر صورت
این مشکل رو با تغییر خط
db.Database.ExecuteSqlCommand("ChkDuplicate @RegisterationCode,@Name,@DuplicateR out, @DuplicateN out", RParam, NParam, dupR, dupN);
به شکل زیر حل کردم.
db.Database.ExecuteSqlCommand("ChkDuplicate @Name,@RegisterationCode,@DuplicateR out, @DuplicateN out",NParam, RParam, dupR, dupN);
حالا نمیدونم چرا ولی با تغییر جایگاه دو متغییر ارسالی به sp مشکل حل شد. (پس و پیش کردن ارسال دو متغییر)
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2013
- پاسخ :
1
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1034
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1161
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
599
- پاسخ :
1
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
350
- پاسخ :
1
|
تاریخ :
1403/06/24
- ساعت :
08:52:00 PM
- بازدید :
319
- پاسخ :
1
|
تاریخ :
1398/09/14
- ساعت :
01:58:00 PM
- بازدید :
4270
- پاسخ :
1
|
تاریخ :
1398/09/16
- ساعت :
11:41:00 AM
- بازدید :
4283
- پاسخ :
1
|
تاریخ :
1398/09/07
- ساعت :
02:15:00 PM
- بازدید :
3876
- پاسخ :
5
|
تاریخ :
1403/05/16
- ساعت :
05:43:00 AM
- بازدید :
662
- پاسخ :
0
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2013
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
78
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
109
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1034
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
430
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
931
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4800
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1161
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
599
- پاسخ :
1
|