PDA

View Full Version : یه مشکل توی سرچ و ...



khomar
سه شنبه 04 مهر 1385, 00:02 صبح
من یه فیلد داشتم که توش تاریخ ها رو به صورت رشته وارد می کردم که البته این تاریخ ها با استفاده ازیه سری توابع کتابخانه تبدیل به تاریخ های شمسی می شد وخودش تاریخ هر روز رو داد(vb) و نیازی هم نبود خودم تاریخ هر روز رو تایپ کنم و توی همین فیلد به صورت رشته ذخیره می شد خوب تا این جا مشکلی نداشتم اما مشکل از اونجا پیدا شد که که من می خواستم با این دستور

st = "select * from tabel where tarikh between " + Text5.Text + " and " + Text6.Text + ""

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

m_nejad
سه شنبه 04 مهر 1385, 09:27 صبح
اگر از شرط بزرگتر و کوچکتر استفاده کنی جواب می ده

khomar
سه شنبه 04 مهر 1385, 16:40 عصر
کاری که شما گفته بودید رو امتحان کردم اما متاسفانه همه اطلاعات رو نشون می ده و نگاه به شرط دستور نمی کنه اینم کد شاید من کد رو اشتباه نوشتم

st = "select * from tabel where '" & Text5.Text & "' < tarikh < '" & Text6.Text & "'"

amirhosein
پنج شنبه 06 مهر 1385, 08:14 صبح
توجه کنید برای مقایسه رشته ای باید تاریخها را با طول یکسان ذخیره کنید یعنی برای ماههای تک رقمی مثل 6 به صورت 06 ذخیره بشه تا مقایسه درست کار کنه.به این مثال توجه کنید:
tarikh1 = Combo1(2).Text & "/" & Combo1(1).Text & "/" & Combo1(0).Text
tarikh2 = Combo1(5).Text & "/" & Combo1(4).Text & "/" & Combo1(3).Text
condition1 = "'" & tarikh1 & "' <= egra_date And egra_date <= '" & tarikh2 & "'"

sin
پنج شنبه 06 مهر 1385, 10:47 صبح
فکر می کنم اگر بصورت زیر بنویسی درست بشه البته یک کم به هم ریخت فقط چپترین کاراکتر را ببر طرف راست
st = "select * from tabel1 where tarikh between @f1 and @f2"
cmd = New SqlCommand(st, con)
cmd.Parameters.Add("@f1", TextBox5.Text)
cmd.Parameters.Add("@f2",textbox6.Text)
dr = cmd.ExecuteReader
dr.Read()

khomar
پنج شنبه 06 مهر 1385, 20:37 عصر
مرسی امتحانش می کنم اگه بازم راهنمایی خواستم می گم در مورد روزها و ماه هایی که تک رقمی هستند من به صورت مثلا 06 وارد کردم نه به صورت فقط 6 از این لحاظ مشکلی نداره بازم مرسی

khomar
پنج شنبه 06 مهر 1385, 22:40 عصر
توجه کنید برای مقایسه رشته ای باید تاریخها را با طول یکسان ذخیره کنید یعنی برای ماههای تک رقمی مثل 6 به صورت 06 ذخیره بشه تا مقایسه درست کار کنه.به این مثال توجه کنید:
tarikh1 = Combo1(2).Text & "/" & Combo1(1).Text & "/" & Combo1(0).Text
tarikh2 = Combo1(5).Text & "/" & Combo1(4).Text & "/" & Combo1(3).Text
condition1 = "'" & tarikh1 & "' <= egra_date And egra_date <= '" & tarikh2 & "'"

سپاسگزارم با کمک شما مشکلم حل شد
--------------------

فکر می کنم اگر بصورت زیر بنویسی درست بشه البته یک کم به هم ریخت فقط چپترین کاراکتر را ببر طرف راست
st = "select * from tabel1 where tarikh between @f1 and @f2"
cmd = New SqlCommand(st, con)
cmd.Parameters.Add("@f1", TextBox5.Text)
cmd.Parameters.Add("@f2",textbox6.Text)
dr = cmd.ExecuteReader
dr.Read()
سپاسگزارم اما من نتومستم از کد شما استفاده کنم این f1و f2 چی هست ؟
اگه textbox ها هستند پس این کد یعنی چی؟
cmd.Parameters.Add("@f1", TextBox5.Text)
cmd.Parameters.Add("@f2",textbox6.Text)

dr.Read()[/QUOTE]
باز هم سپاسگزارم