PDA

View Full Version : سوال: ثبت نشدن مقدار خالی ؟



Fartaj
شنبه 08 مهر 1391, 08:42 صبح
سلام خدمت دوستان

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

Fartaj
شنبه 08 مهر 1391, 17:12 عصر
دوستان در این مورد هیچ نظری ندارند تو asp مقدار خالی ثبت می شد

Mahmoud.Afrad
شنبه 08 مهر 1391, 18:19 عصر
در فراخوانی sp باید همه پارامترها رو پاس بدید.پس در این مورد باید null بفرستی به پروسیجر. مثال
com.CommandText = "EXEC SP_Insert_Into_Moshtarakan @mName,@mLName,@Address,@Telephone";
com.Parameters.Clear();
com.Parameters.AddWithValue("@mName", Name);
com.Parameters.AddWithValue("@mLName", LastName);
if (Address != string.Empty)
com.Parameters.AddWithValue("@Address", Address);
else
com.Parameters.AddWithValue("@Address", DBNull.Value);

if (Telephone != string.Empty)
com.Parameters.AddWithValue("@Telephone", Telephone);
else
com.Parameters.AddWithValue("@Telephone", DBNull.Value);

com.ExecuteNonQuery();

Fartaj
شنبه 08 مهر 1391, 18:53 عصر
ممنون از جوابتون فقط من فیلدهام زیاده بعدم از طریق linq با پروسجر کار می کنم یعنی باید دونه دونه تکست باکس ها رو چک کنم ؟ چرا تو asp همچین حالتی پیش نمیاد ؟

Mahmoud.Afrad
شنبه 08 مهر 1391, 23:50 عصر
میتونید توی sp چک کنید و اگر مقدار رشته خالی بود null رو ست کنید و بعد درج:
Create PROCEDURE dbo.StoredProcedure3
(
@name nvarchar(max),
@lastname nvarchar(max)
)
AS
if (@name = '') set @name = null;
if (@lastname = '') set @lastname = null;
insert into tbl([name] , [lastname]) values(@name , @lastname);

RETURN

مقادیر تکست باکس ها را trim کنید و به sp بفرستید.
اگر از ef استفاده میکنید:
using (Database1Entities5 context = new Database1Entities5())
{
context.ExecuteStoreCommand("exec StoredProcedure3 {0},{1}" ,textBox1.Text.Trim(),textBox2.Text.Trim());
}

Fartaj
یک شنبه 09 مهر 1391, 06:26 صبح
تشکر دوست عزیز فقط اگر فیلد عددی رو هم بگی چجوری null کنم خیلی عالی می شه

و اینکه برای داده های ntext این ارور رو می ده :



The data types ntext and varchar are incompatible in the equal to operator

Fartaj
یک شنبه 09 مهر 1391, 15:47 عصر
دوستان به دادم برسید در مورد فیلد عددی و ntext جواب نمی ده ؟

Mahmoud.Afrad
یک شنبه 09 مهر 1391, 17:15 عصر
اونو دیگه یا باید با if چک کنید و مقدار رو ست کنید و یا میتونی به اینصورت عمل کنید:
using (Database1Entities5 context = new Database1Entities5())
{
int? number = null;
try
{
number = int.Parse(textBox3.Text.Trim());
}
catch { }
context.ExecuteStoreCommand("exec StoredProcedure3 {0},{1},{2}" ,textBox1.Text.Trim(),textBox2.Text.Trim(),number) ;
}

Fartaj
یک شنبه 09 مهر 1391, 18:31 عصر
منظور شما اینه که چند تا متغیر با مقدار پیش فرض null تعریف کنم بعد از اونها تو ثبت استفاده کنم ؟؟

نشد !! این کار رو کردم اما فرم بدون هیچ اروری و بدون ثبت اطلاعات بسته می شه !!

Fartaj
چهارشنبه 12 مهر 1391, 15:10 عصر
دوستان برای مقادیر عددی هر کاری کردم نتونستن مقدار خالی رو بفرستم من تو فرم جاهایی برای ثبت نمره دارم که ممکنه خالی بمونه اما حتی اومدم متغیر تعریف کردم و مقدار null رو ریختم توش و بررسی کردم خالی بودن یانبودن رو که اگر خالی بود null رو بریزم توش اما بازم نشد ؟؟؟