ورود

View Full Version : سوال: نحوه ارسال پارامتر به ADOQuery



imanpadid
چهارشنبه 27 مهر 1390, 19:41 عصر
با سلام .
من توی برنامه ای که نوشتم برای جستجو از کد زیر استفاد می کنم که خیلی طولانی و انعطاف پذیر نیست :

with form21.ADOQuery1 do begin
Close;
SQL.Clear;
SQL.Add('Select * from varizi where (type like ''%'+Label7.Caption +'%'') and (m_m like ''%'+Label9.Caption +'%'') and (m_kh like ''%'+Label10.Caption +'%'') and (year like ''%'+Label8.Caption +'%'') and (code_d='''+Label1.Caption +''')');
open;
end;


می خواستم اگه کسی می تونه منو راهنمایی کنه که چطوری می تونم با استفاده از تعریف پارامتر یا روشی دیگه به جای نام فیلد type یا Code_d و ... از پارامتر استفاده کنم.
به جای edit1.text یا Label7.Caption و مانند این شی ها جایگزین بهتری نیست ؟
میخوام جستجو بصورت پیشرفته به ازای ترکیب از فیلد ها و مقادر انجام بشه .


ممنون میشم راهنماییم کنید.:لبخندساده:

hp1361
چهارشنبه 27 مهر 1390, 22:22 عصر
with form21.ADOQuery1 do begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM varizi WHERE (Type LIKE ParamType) or (m_m LIKE Paramm_m) ');
Parameters.ParamByName('ParamType').Value:='%'+Lab el7.Caption+'%';
Parameters.ParamByName('Paramm_m').Value:='%'+Labe l9.Captin+'%';
Open;


البته پيشنهاد ميكنم تنها از يك '%' آن هم در قسمت ابتدايي استفاده كنيد تا هم به جواب مطلوب و هم سرعت بالاتر دست يابيد.(البته اين بستگي به نوع نتيجه مورد نظر شما داره)

firststep
پنج شنبه 28 مهر 1390, 09:43 صبح
ببینید هر پارامتر یک نام داره مثلاً اون تکه ای که توی کد sql اتون Label7.Caption مثلاً نامی مثل kala قرار می دهیم و این کد توی sql تون به این شکل در میاد
select * from db where name= :kala
بله برای معرفی کردن ای پارامتر درون tsql به صورت دو نقطه و بعد نام پارمتر می اید
حالا زمانی که می خواین نامی رو به جای اون بگونجونین کافی با کد
adoqoury.Parameters.ParamByName('kala').value:='me ghdare delkhah'
به جای پارمترتون مقدار یزارید و البته بعد از وارد کردن تمام پارامتر ها دستور
adoqoury.prepraded;
رو فرا خوانی نمایید.