جستجو ما بین دو فیلد

diehard2007

عضو جدید
با سلامی دوباره خدمت شما دوست عزیز من یک ماهی هست پروژه ام را تحویل مشتری دادم و الان یه مشکل عجیب غریب دارم اونم اینه که من می خوام یک جستجو مابین دو تاریخ بزنم اما رکوردهای اضافی برام میاره واقعا نمی دونم چه کار کنم بدجوری کلافم کرده .

نمونه کدی که برای جستجو در برنامه وارد می کنم :

select * from Repairs where LogOutDate between '1390/8/1' and '1390/8/2'

این کد باید تاریخهای مابین 1 تا 2 آبان رو برگردونه اما هم رکوردهای 1 تا 2 و بعد 10و11و12 آبان رو هم میاره جالب اینجاست 3 آبان تا 9 آبان رو نمی یاره .

در ضمن دیتابیسم اکسس هستش و فیلد تاریخ رو از نوع Text گرفتم . ممنون میشم راهنمایی کنید که باید چه کار کنم
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
با سلامی دوباره خدمت شما دوست عزیز من یک ماهی هست پروژه ام را تحویل مشتری دادم و الان یه مشکل عجیب غریب دارم اونم اینه که من می خوام یک جستجو مابین دو تاریخ بزنم اما رکوردهای اضافی برام میاره واقعا نمی دونم چه کار کنم بدجوری کلافم کرده .

نمونه کدی که برای جستجو در برنامه وارد می کنم :

select * from Repairs where LogOutDate between '1390/8/1' and '1390/8/2'

این کد باید تاریخهای مابین 1 تا 2 آبان رو برگردونه اما هم رکوردهای 1 تا 2 و بعد 10و11و12 آبان رو هم میاره جالب اینجاست 3 آبان تا 9 آبان رو نمی یاره .

در ضمن دیتابیسم اکسس هستش و فیلد تاریخ رو از نوع Text گرفتم . ممنون میشم راهنمایی کنید که باید چه کار کنم

این به دلیل این است که طول رشته تاریخ شما ثابت نیست و برای بعصی تاریخ ها تغییر میکنه. اگر تاریخ ها را به صورت مثلاً 1390/08/02 ذخیره فرموده بودید این مشکل رو نداشتید :gol:
 

diehard2007

عضو جدید
سلام دوست عزیز من چطوری می تونم تاریخ رو اینطوری نمایش بدم 1390/08/02

حالا اون رکوردهایی که تاریخ رو کم یا زیاد موقع جستجو برام می یاره چه بلایی سرش بیارم ؟
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
سلام دوست عزیز من چطوری می تونم تاریخ رو اینطوری نمایش بدم 1390/08/02

حالا اون رکوردهایی که تاریخ رو کم یا زیاد موقع جستجو برام می یاره چه بلایی سرش بیارم ؟

شما اگر تاریخ را سر هم ذخیره می کنید که باید از سمت application این کار رو انجام بدید اگر هم تاريخ رو سه تکه ذخیره کردید که براحتی با نوشتن یک تابع میتوانید به این شکل دربیاورید :gol:
 

diehard2007

عضو جدید
دوست عزیز واقعا ممنون از راهنماییتون . فقط می مونه اون دیتاهایی که در سیستم حدود یک ماهیه ذخیره شدند که مربوط می شه به فرم درآمد یک تعمیرگاه که بین دو تاریخ جستجو می کنه من اون دیتاهای قدیمی رو چطور درستش کنم الان اگه تاریخ رو همین طوری که شما گفتید بنویسم از الان به بعد درست در دیتابیس ذخیره می شه اون دیتاهای قدیمی که اینطوری 2/8/1390 در دیتابیسم ذخیره شدند رو چه کار کنم چون تمام حساب کتابا بهم ریخته ممنون میشم اگه راه حلی به ذهنتون می رسه راهنمایی کنید بازم تشکر می کنم عزیز
 

negin17h

مدیر تالارهای مهندسی کامپیوتر و رباتیکمتخصص #C
مدیر تالار
دوست عزیز واقعا ممنون از راهنماییتون . فقط می مونه اون دیتاهایی که در سیستم حدود یک ماهیه ذخیره شدند که مربوط می شه به فرم درآمد یک تعمیرگاه که بین دو تاریخ جستجو می کنه من اون دیتاهای قدیمی رو چطور درستش کنم الان اگه تاریخ رو همین طوری که شما گفتید بنویسم از الان به بعد درست در دیتابیس ذخیره می شه اون دیتاهای قدیمی که اینطوری 2/8/1390 در دیتابیسم ذخیره شدند رو چه کار کنم چون تمام حساب کتابا بهم ریخته ممنون میشم اگه راه حلی به ذهنتون می رسه راهنمایی کنید بازم تشکر می کنم عزیز

دوست عزیز مقدارشون زیاد هست؟
چون ببینید نوشتن یک برنامه یا بهتر بگم تابع به روزرسانی سخت تر از ویرایش دستی است مگر اینکه تعدادش زیاد باشه :gol:
 

diehard2007

عضو جدید
با سلام دوباره و خسته نباشید به شما دوست عزیز ببخشید من یکم گرفتار بودم تازه تونستم حواب شما رو ببینم ممنون از راهنماییتون ولی هنوز مشکل دارم البته من تونستم از این کد استفاده کنم و تا یه جاهایی مشکل رو درست کردم ولی نه بصورت کامل من از این کد استفاده می کنم : که بزرگترین و کوچکترین id رو برمی گردونه

int id1=12;
int id2=45;

string str;
ds.cleare();
str=select *from Repairs where Tamirkar='"+cbTamirkar'"+ and RepairID>="+id1+"and RepairID<="+id2+";
da.SelectCommand.CommandText=str;
da.fill(ds,t1);
datagridview1.DataSourse=ds;
datagridview1.DataMember="t1";

حالا تو فرمم دوتا تکست باکس گذاشتم که می خوام بین دو تا تاریخ جستجو کنم فقط نمی دونم اون دوتا متغیر رو چطور مقداردهی کنم ؟ یعنی جای smallid=148 باید چی بذارم ؟



 

Sharif_

مدیر بازنشسته
من قبل از ذخیره تاریخ در بانک ، رشته رو نسبت به حرف '/' پارس میکنم
و ماه و روز رو با یک 0 الحاق رشته ای می کنم و دو حرف از سمت راست رو جدا می کنم دوباره رشته های پارس شده را باهم الحاق می کنم و در بانک ذخیره می کنم
بعد تو جست و جو ها دیگه مشکلی ندارم
 

دختر شرقی

کاربر حرفه ای
کاربر ممتاز
دوست عزیز واقعا ممنون از راهنماییتون . فقط می مونه اون دیتاهایی که در سیستم حدود یک ماهیه ذخیره شدند که مربوط می شه به فرم درآمد یک تعمیرگاه که بین دو تاریخ جستجو می کنه من اون دیتاهای قدیمی رو چطور درستش کنم الان اگه تاریخ رو همین طوری که شما گفتید بنویسم از الان به بعد درست در دیتابیس ذخیره می شه اون دیتاهای قدیمی که اینطوری 2/8/1390 در دیتابیسم ذخیره شدند رو چه کار کنم چون تمام حساب کتابا بهم ریخته ممنون میشم اگه راه حلی به ذهنتون می رسه راهنمایی کنید بازم تشکر می کنم عزیز

از این تابع میتونید استفاده کنید :
کد:
[FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]public[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] GetSDateStr([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]string[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] date)
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#008000][FONT=Consolas][SIZE=2][COLOR=#008000][FONT=Consolas][SIZE=2][COLOR=#008000]//تاریخ شمسی را میگیرد و به صورت تاریخ با فرمت صحیح میدهد
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]try
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] year = [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]Convert[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].ToInt32(date.Split([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]'/'[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2])[0]);
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] mon = [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]Convert[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].ToInt32(date.Split([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]'/'[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2])[1]);
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] day = [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]Convert[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2].ToInt32(date.Split([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]'/'[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2])[2]);
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]if[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] (year < 100)
year += 1300;
System.Globalization.[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]PersianCalendar[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] pc = [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] System.Globalization.[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af][FONT=Consolas][SIZE=2][COLOR=#2b91af]PersianCalendar[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]();
pc.ToDateTime(year, mon, day, 0, 0, 0, 0);
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] year.ToString([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"0000"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]) + [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"/"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] + mon.ToString([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"00"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]) + [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"/"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] + day.ToString([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"00"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]);
}
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]catch
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]return[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]""[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2];
}
}
[/SIZE][/FONT][/SIZE][/FONT]
 

دختر شرقی

کاربر حرفه ای
کاربر ممتاز
با سلام دوباره و خسته نباشید به شما دوست عزیز ببخشید من یکم گرفتار بودم تازه تونستم حواب شما رو ببینم ممنون از راهنماییتون ولی هنوز مشکل دارم البته من تونستم از این کد استفاده کنم و تا یه جاهایی مشکل رو درست کردم ولی نه بصورت کامل من از این کد استفاده می کنم : که بزرگترین و کوچکترین id رو برمی گردونه

int id1=12;
int id2=45;

string str;
ds.cleare();
str=select *from Repairs where Tamirkar='"+cbTamirkar'"+ and RepairID>="+id1+"and RepairID<="+id2+";
da.SelectCommand.CommandText=str;
da.fill(ds,t1);
datagridview1.DataSourse=ds;
datagridview1.DataMember="t1";

حالا تو فرمم دوتا تکست باکس گذاشتم که می خوام بین دو تا تاریخ جستجو کنم فقط نمی دونم اون دوتا متغیر رو چطور مقداردهی کنم ؟ یعنی جای smallid=148 باید چی بذارم ؟



برای مقایسه تاریخ ها از سمت کد ، میتونید از تابع

کد:
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]
string[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000].Compare([/COLOR][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"FirstDate"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000], [/COLOR][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"SecondDate"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000]);[/COLOR]
[/SIZE][/FONT][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/SIZE][/FONT]

استفاده کنید . خروجی آن int و به این شکل هست که اگر رشته اول بزرگتر باشه مثبت ، مساوی باشن 0 و رشته اول کوچکتر باشه منفی خواهد بود
 

diehard2007

عضو جدید
دوست عزیز ممنون از راهنمایی تون ولی مشکل من اینجاست که select رو چطور بنویسم و الان 1000 رکورد در دیتابیسم ذخیره شده
 

Sharif_

مدیر بازنشسته
خب یه update بنویسید و تاریخ های قبلی رو با استفاده از تابع صفحه قبل به صورت استاندارد تبدیل کنید
 

Similar threads

بالا