PDA

View Full Version : سوال: مطابقت "textbox value" با "database" در "if condition" برای عدم ثبت دیتای تکراری.



mahdibham
پنج شنبه 24 آذر 1401, 10:29 صبح
سلام و وقت بخیر خدمت همه دوستان عزیز..
در فرم اول اطلاعات اصلی از جمله 1-"شماره نامه" و 2-"موضوع نامه" رو دریافت میکنم که ثبت این دو مجوزی برای ورود به فرم های دیگر و ثبت اطلاعات دیگر هست.
در متود ثبت اطلاعات، یک شرطی گذاشتم که محتوای تکستباکس شماره نامه رو با ستون معادل خودش در جدول منظور در دیتابیس بررسی کنه که اگر همچین شماره ای تکراری بود اصلا هیچ اطلاعاتی ثبت نشه و اخطار بده که به شکل زیر هست.


if (emdadDB.TblFiles.Where (p => p.FileNumber != mtxbFileNumber.Text))
{
//registration
return true;
}
else
{
MessageBox.Show ("این شماره نامه در دیتابیس موجود میباشد، شماره جدید وارد بفرمایید");
return false;
}


از داخل شرط if ایراد میگیرد که مطابق تایپ بولین نیست.. به غیر از این چطور میتونم شرط رو برقرار کنم که با دیتابیس چک کنم و تکراری نگیره.؟؟
پیام اخطار:
CS1061: 'char' does not contain a definition for 'FileNumber' and no accessible extension method 'FileNumber' accepting a first argument of type 'char' could be found.

samiasoft
پنج شنبه 24 آذر 1401, 13:50 عصر
if (emdadDB.TblFiles.Where(a => a.FileNumber == "....").Count() > 0) {
MessageBox.Show("این شماره نامه در دیتابیس موجود میباشد، شماره جدید وارد بفرمایید");
return false;
}
else
{
//registration
return true;

}

mahdibham
پنج شنبه 24 آذر 1401, 14:03 عصر
ممنون از جوابت ولی اینو گذاشتم توی شرط، هر عددی برای شماره نامه میذارم شرط رو برقرار میکنه.. و اگر پیام خطا رو بذارم اون رو نشون میده اگر هم رجیسترکردن رو بذارم اون رو اجرا میکنه و تکراری هم ثبت میکنه.
الان با همین ترتیب false و true هم که خودت گذاشتی، میذارم، با اینکه منطقا باید تعداد رو چک کنه و اگر بیشتر از یکی بود پیام خطا رو بده ولی هر عددی به عنوان شماره نامه وارد میکنم، پیام خطا رو میده.

samiasoft
پنج شنبه 24 آذر 1401, 14:36 عصر
بنظر میاد کدی که نوشتم رو اصلاح نکردید ... در اون بخش بجای "....." تکست باکسی که شماره نامه رو داره رو جایگزین کنید.

در غیراین صورت کدی که نوشتید رو کامل اینجا بزارید. در دیتابیس ستون FileNumber از نوع متغیر رشته ای هست ؟

mahdibham
پنج شنبه 24 آذر 1401, 14:46 عصر
اخه همین کار رو کردم .. یعنی منطقا مشخص بود باید همین کار رو میکردم.


if (emdadDB.TblFiles.Any (p => p.FileNumber == mtxbFileNumber.Text).Count() > 0)
{
MessageBox.Show ("این شماره نامه در دیتابیس موجود میباشد، شماره جدید وارد بفرمایید");
return false;
}
else
{
return true;
}

samiasoft
پنج شنبه 24 آذر 1401, 15:09 عصر
در این دستوری که نوشتید بجای Where از Any استفاده کردید که خروجی این بولین هست نمیدونم چطوری از Count استفاده کردید ... به این صورت باید نوشته میشد :

if (emdadDB.TblFiles.Any (p => p.FileNumber == mtxbFileNumber.Text)) {
MessageBox.Show ("این شماره نامه در دیتابیس موجود میباشد، شماره جدید وارد بفرمایید");
return false;
}
else
{
return true;
}