PDA

View Full Version : سرچ فیلد تاریخ در برنامه



sara_t
یک شنبه 05 خرداد 1392, 08:55 صبح
سلام دوستان
من میخام یه سرچ داشته باشم. یه تکست دارم که در ایونت textchange ان دکمه سرچ رو قرار دادم. این تکست باکس رو از نوع ماسک تاریخ بصورت 0000/00/00 انتخاب کردم و برای اینکه / مزاحم کار سرچ نشه با دستورات زیر جلووش رو گرفتم:

private void btnsearch_Click(object sender, EventArgs e)
{
if (checkBox1.Checked == true)
txtfaal.Text = "1";
else
txtfaal.Text = "0";


string txtkharid=string.Empty;
string b = txtdatekharid.Text.Replace(" ","");
int c=b.Length;
if (c == 2)
txtkharid = "";

if ((c > 2) && (c <= 6))
{
txtkharid = b.Substring(0, c - 2);
}
if (c == 7)
{
txtkharid = b.Substring(0, c - 1);
}
if (c > 7 && c < 9)
{
txtkharid = b;
}
if (c >=9)
{
txtkharid = b;
}shenasnameprinterTableAdapter.FillBy1Search(this. datasetshenasname.shenasnameprinter, "%" + txtcode.Text + "%", "%" + txtype.Text + "%", "%" + txtmodel.Text + "%", "%" + txtfaal.Text + "%", "%" + txtserial.Text + "%", "%" + txtkarbar.Text + "%", "%" + txtmakan.Text + "%", "%" + txtamval.Text + "%", "%" + txtkharid + "%", "%" + txtengheza2 + "%", "%" + txtsharh.Text + "%");

}

تازمانیکه من در تکست باکسم تایپ میکنم 1390/12/ برنامه درست سرچ میکنه اما به محض ورود عدد بعدی سرچ من خالی میشه و هیچی پیدا نمیکنه یعنی 1390/12/1 یا 1390/12/12

saied_hacker
یک شنبه 05 خرداد 1392, 13:54 عصر
به این شکل هم میتونی عمل کنی خیلی راحت تر و تمیز تره فکر می کنم.


string[] temp = maskedTextBox1.Text.Split('/');
temp[0] = temp[0].Replace(" ", string.Empty); // year
temp[1] = temp[1].Replace(" ", string.Empty); //month
temp[2] = temp[2].Replace(" ", string.Empty); //day

if (temp[0].Length == 4 && temp[1].Length == 2 && temp[2].Length == 2)
{
//search by year, month, day
}
else if (temp[0].Length == 4 && temp[1].Length == 2)
{
//search by year, month
}
else if (temp[0].Length == 4)
{
//search by year
}


دیگه درگیر طول رشته ها هم نمیشی...

sara_t
یک شنبه 05 خرداد 1392, 14:18 عصر
ممنون
اما این کد نیاز منو براورده نمیکنه
چون من مثلا احتیاج دارم که زمانیکه 1390/1 رو وارد میکنم تشخیص بده.

فقط نمیفههم چرا کد من تا 1390/12/ رو تشخیص میده اما این دو حالت رو نمیفهمه بنظر شما چرا؟

1392/12/1
1392/12/11

saied_hacker
یک شنبه 05 خرداد 1392, 14:26 عصر
شما این بخشو چک کردی ؟
چرا جفتشون یکار می کنن در صورتیکه شرطشون فرق داره ؟
if (c > 7 && c < 9)
{
txtkharid = b;
}
if (c >=9)
{
txtkharid = b;
}

sara_t
یک شنبه 05 خرداد 1392, 14:29 عصر
اره

هر شرط رو جدا هم نوشتم اما درست نشد. الان بصورت زیر در اورئم که بازم اشکال داره و اصلا نمیفههم چرا؟؟

if (c == 7)
{
txtkharid = b.Substring(0, c - 1);

}
if (c ==8)
{
txtkharid = txtdatekharid.Text;

}
if (c == 9)
{
txtkharid = txtdatekharid.Text;
}