PDA

View Full Version : جستجوی ترکیبی توسط and و or



alimohebbi1388
یک شنبه 10 مرداد 1395, 00:04 صبح
سلام دوستان عزیز
آیا امکانش هست که در جستجو هم از and استفاده کرد و هم از or (به طور همزمان)
with adoquery do
begin
;SQL.Clear
;(SQL.Add('SELECT * FROM t_ta WHERE f_do1 BETWEEN '+ComboBox2.Text+' and '+ComboBox3.Text
;('SQL.Add(' AND f_d LIKE true
;('''%'SQL.Add(' OR f_na LIKE ''%'+edit1.Text
;('''%'SQL.Add(' OR f_pe LIKE ''%'+edit2.Text
;ExecSQL
;Open
;end
فقط از AND استفاده می کنم جواب درسته ولی وقتی با OR ترکیب می کنم جواب درست در نمی یاد
ممنون می شم راهنمایی کنید
تشکر

یوسف زالی
یک شنبه 10 مرداد 1395, 11:57 صبح
سلام.
باید اولویت بندی ها تون رو درست کنید.
قطعات AND رو در پرانتز محصور کنید، بقیه دستور ها از جمله همه OR ها باید بره تو همین پرانتز.

alimohebbi1388
یک شنبه 10 مرداد 1395, 14:09 عصر
لطف می کنید یه مثال بزنید

یوسف زالی
یک شنبه 10 مرداد 1395, 14:51 عصر
where () and () and () ..
where (a=b or c<>d or ..) and (x like '') and () ..


نمونه کلی به این شکل هست

alimohebbi1388
یک شنبه 10 مرداد 1395, 18:13 عصر
SQL.Add('SELECT * FROM t_tolidat WHERE (f_name LIKE ''%'+sEdit1.Text+'%'') and (f_saltolid LIKE ''%'+edit1.text+'%'' or f_saltolid LIKE ''%'+edit2.text+'%'' or f_saltolid LIKE ''%'+edit3.text+'%'' or f_saltolid LIKE ''%'+edit4.text+'%'')')

ابوالفضل عباسی
سه شنبه 12 مرداد 1395, 09:44 صبح
طبق روشی که آقای یوسف زالی گفتند، and , or ها درجای مناسب هستند.
ممکنه درست عمل نکنه چون باید اولویت بندیتون رو درست کنید.اگر درست عمل کرد،نشانه ی اولویت بندی درست است.
یک شکل کلی دیگه هم اینه،ولی باید طبق اولویت بندیتون جای and, or رو عوض بکنید.

where ((X=A) and (X>B)) or (X like ...) or ()....