PDA

View Full Version : درج null در فیلد از نوع Date/Time



bftarane
یک شنبه 06 بهمن 1392, 11:30 صبح
سلام.
من یه فیلد برای تاریخ وفات در جدول دارم ولی می خوام اگه تاریخ وفات مشخص نباشه در این فیلد null درج بشه
بنابراین کدهای زیر رو نوشتم

DateTime? deathdt = null;
if (txt_DeathDay.Text != string.Empty & txt_DeathMonth.Text != string.Empty & txt_DeathYear.Text != string.Empty)

{
deathdt = new DateTime(Convert.ToInt32(txt_DeathYear.Text), Convert.ToInt32(txt_DeathMonth.Text), Convert.ToInt32(txt_DeathDay.Text), pc);
}

OCommand.Parameters.AddWithValue("@DeathDate", !deathdt.HasValue ? DBNull.Value : deathdt);

ولی با این ارور مواجه می شم
Type of conditional expression cannot be determined because there is no implicit conversion between 'System.DBNull' and 'System.DateTime?'

وقتی هم که DBNull.Value رو به
(DateTime?)null تغییر می دم این خطا رو میده
Parameter @DeathDate has no default value.
لطفاً راهنمایی کنید.

mamad174
یک شنبه 06 بهمن 1392, 11:42 صبح
دوست خوب شما برای اینکه اگر کاربر عبارتی رو وارد نکرد خودکار تو بانک چیزی ثبت بشه باید به بانکتون رو در حالت طراحی باز کنید بعد فیلد مورد نظر رو ناتخاب کنید حالا داخل پنجره properties رو بگرد به دنبال عبارت defualt value or binding بعد عبارت مورد نظر رو اونجا قرار بده
حالا اگر ممکنه گاهی وقتها تاریخ وفات مشخص بشه و این نامشخصی همیشگی نیست برای راحتی کار شما قبل از اینکه کد insert رو بنویسی یه شرط بنویس مبنی بر اینکه مشخص که فیلد تاریخ پر شده یا نه اگر پر شده داخل یه متغیر قرارش بده اگر پر نشده عبارت خودتو رو داخل تغیر بذار بعد زمان insert کردن متغیر رو داخل فیلد قرار بده

bftarane
یک شنبه 06 بهمن 1392, 13:16 عصر
ممنون از پاسختون.
من با access کار می کنم و در Db مقدار پیش فرض رو رفتم و Null گذاشتم ولی خطا می داد. نمی دونم شاید به جای Null باید عبارت دیگه ای قرار می دادم.
و دیگه اینکه من دوست داشتم حتی الامکان از سمت کد این کار رو انجام بدم.
مشکل با کمک لینک زیر حل شد
http://forums.asp.net/p/1963580/5612500.aspx?p=True&t=635263106240753167&pagenum=1
ولی هنوز باید اینکه فرضاً کاربر فیلد سال رو یادش رفت پر کنه و مشکلات اینطوری رو handle کنم که چون موضوعش فرق داره در تاپیک دیگه ای می پرسم.