PDA

View Full Version : سوال: خطا موقع پاک کردن متن در هنگام جستجو



bmvgod
چهارشنبه 17 آذر 1395, 00:47 صبح
باسلام خدمت دوستان
یک سوالی داشتم،من توی برنامم یک قسمت جستجو دارم که وقتی متنی توی TextBox تایپ میکنم بعد اون متن رو پاک میکنم به Error زیر برمی خورم:

143691

از کد زیر استفاده کردم:

var q =
from x in db.InfoMoshtaris
join j in db.InfoProjects on x.PelakSabti equals j.PelakSabti
where x.FName.Substring(0, TlStTxt.Text.Length) == TlStTxt.Text || x.LName.Substring(0, TlStTxt.Text.Length) == TlStTxt.Text
orderby x.PelakSabti descending
select new
{
x.ID,
Fullname = x.FName + " " + x.LName,
x.NoParvandeh,
x.PelakSabti,
x.Darkhast,
x.Mobail,
j.Address_Melk,
j.Sobj_Dastor_Naghshe,
Date = x.Date.Value.ToShortDateString()
};
dataGridView1.DataSource = q.ToList();

نمی دونم مشکل از کجاست، ممنون میشم راهنماییم کنید
باتشکر

m2011kh
چهارشنبه 17 آذر 1395, 16:53 عصر
سلام دوست عزيز.

اين مشكل بخاطر لوكال تعريف شدن q هست اونجوري كه به نظر ميرسه. نميتونيد يه شي داخلي رو به بيرون بلوك بفرستيد. q رو public تعريف كنيد و دوباره امتحان كنيد.

موفق و سربلند باشيد.
M.M.D

m2011kh
چهارشنبه 17 آذر 1395, 16:57 عصر
البته الان كه دوباره نگاه ميكنم. ترتيب كد ها اونطوري كه اينجا گذاشتيد با تصوير فرق ميكنه.

در كل دو امكان وجود داره.
١- قبل از اينكه شي را تعريف كنيد از اون استفاده كنيد كه به خطاي Null بودن شي ميخوريد.

٢- يا يك شي لوكال رو به يك شي خارجي ارجاع داديد كه بازهم به Null ميخوريد.

ببينيد مشكل كدوم يكي از ايناست و اصلاح كنيد اگه درست نشد اصل سورس رو بذاريد.


موفق و سربلند باشيد.
M.M.D

bmvgod
پنج شنبه 18 آذر 1395, 11:16 صبح
من برای جستجو براساس نام و نام خانوادگی از کد زیر استفاده کردم:

var db = new DataClasses2DataContext();
if (TlStCmBxSearch.SelectedIndex == 0)
{
var q = from x in db.InfoMoshtaris
join j in db.InfoProjects on x.PelakSabti equals j.PelakSabti
where x.FName.Substring(0, TlStTxt.Text.Length) == TlStTxt.Text || x.LName.Substring(0, TlStTxt.Text.Length) == TlStTxt.Text
//where x.FName.Substring(0,TlStTxt.Text.Length)==TlStTxt. Text
orderby x.PelakSabti descending
select new
{
x.ID,
Fullname = x.FName + " " + x.LName,
x.NoParvandeh,
x.PelakSabti,
x.Darkhast,
x.Mobail,
j.Address_Melk,
j.Sobj_Dastor_Naghshe,
Date = x.Date.Value.ToShortDateString()
};
dataGridView1.DataSource = q.ToList();
}


ولی موقعی که عبارت داخل Textbox رو که نوشتم پاک میکنم تا عبارت جدید رو بنویسم به خطا برمی خورم.
واقعیت درست متوجه راهنماییتون نشدم

Mahmoud.Afrad
پنج شنبه 18 آذر 1395, 17:12 عصر
چون ستون Dateای که ایجاد کردید nullable هست و برخی رکوردها دارای تاریخ نیستند به این خطا بر می خورید. چک کنید اگر مقدار داشت متد ToShortDateString را فراخوانی کنید و اگر مقدار نداشت null انتخاب کنید. در شرط هم میتونید از متدهای StartsWith , EndsWith , Contains و یا از متدهای موجود در کلاس System.Data.Linq.SqlClient.SqlMethods استفاده کنید.

var q =
// ...
where
x.FName.StartsWith(TlStTxt.Text) ||
x.LName.StartsWith(TlStTxt.Text)
// ...
select new
{
// ...,
Date = x.Date.HasValue ? x.Date.Value.ToShortDateString() : null
};