PDA

View Full Version : adoquery



msda523
جمعه 13 مهر 1386, 15:21 عصر
من یک بانک در sql درست کردم . در دلفی 7 میخوام با adoquery جستجو را بر اساس مقدار تایپ شده در edit1 انجام دهم . املای درست دستور select در این حالت چیه ؟

Ahmad Chehreghani
جمعه 13 مهر 1386, 16:12 عصر
سلام
برای مثال من یک جدول به اسم t1 دارم و می خوام روی فیلد f1 جستجو کنم
این دستور رو می نویسم
Select * from t1 where f1=10
برای اینکه تمامی فیلد ها نمایش داده شوند * را بعد از select گذاشتیم و اگر بخواهیم فقط f1 نمایش داده بشوند می نویسیم Select f1 from t1
اگر هم فیلد شما رشته ای باشد باید بین '' قرار بگیرد.
دستور دلفی ای که شما می خواهید بدین صورت می باشد.
Adoquery1.close;
Adoquery1.sql.text:='select * from t1 where f1='+inttostr(edit1.text.) a
Adoquery1.open
این در حالی است که فیلد شما عددی باشد.
موفق باشید.

SYNDROME
جمعه 13 مهر 1386, 17:24 عصر
با سلام
قبل از ایجاد تاپیک در سایت جستجو کنید.


Adoquery1.sql.text:='select * from t1 where f1='+inttostr(edit1.text)

دستور بالا اجرا نی شود و خطا دارد.به قسمت Bold شده توجه کنید.
برای جستجو عدد


ADO.SQL.Text := 'Select * From Tbl_Test Where ID='+Edit1.Text;
ADO.Active := True;

برای جستجوی رشته


ADO.Active := True;

موفق باشید

farhad110
جمعه 13 مهر 1386, 23:25 عصر
سلام، من کدی رو که شما زحمتشو کشیدی با کمی تغییر اینجا میذارم. این کد مقادیر جستجو رو بر اساس پارامتر میگیره و برای عبارات منطقی (and , or) هم استفاده میشه.


ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from table_name where field=:param');
ADOQuery1.Parameters.ParamValues['param']:=Edit1.Text;
ADOQuery1.Open;پیروز باشید

SYNDROME
جمعه 13 مهر 1386, 23:40 عصر
با سلام


برای عبارات منطقی (and , or) هم استفاده میشه.

منظور خود را واضحتر بیان کنید.




ADOQuery1.SQL.Add('select * from table_name where field=:param');
ADOQuery1.Parameters.ParamValues['param']:=Edit1.Text;
پیروز باشید
تعریف پارامتر کار خیلی خوبی است.
ولی فکر کنم درست نباشد ما Select را ایجاد کنم و بعد آن پارامتر را پاس کنیم مگر اینکه بخواهیم در جاهای دیگر بدون تغییر select مقدار پارامتر را تغییر دهیم.
موفق باشید

farhad110
شنبه 14 مهر 1386, 08:46 صبح
با سلام
منظور خود را واضحتر بیان کنید.


منظور شرط هایی هست که بوسیله and و or در query بیان میشه.
به مثال توجه کنید:


with ADOQuery1 do begin
Close;
SQL.Clear;
SQL.Add('select * from table_name where field1=:param1 and field2=:param2');
Parameters.ParamValues['param1']:=Edit1.Text;
Parameters.ParamValues['param2']:=Edit2.Text;
Open;
end;کد بالا رکوردهایی رو برمیگردونه که دارای ارزش درستی (true) در فیلدهای "field1 , field2" باشند.
در کدی که شما نوشتی استفاده از عبارات شرطی کد برنامه رو ناخوانا میکنه!



تعریف پارامتر کار خیلی خوبی است.
ولی فکر کنم درست نباشد ما Select را ایجاد کنم و بعد آن پارامتر را پاس کنیم مگر اینکه بخواهیم در جاهای دیگر بدون تغییر select مقدار پارامتر را تغییر دهیم.
موفق باشید

دلیل استفاده از پارامترها:
وقتی که از پارامتر استفاده میشه، فرقی نمیکنه که ما جستجو رو در فیلد عددی انجام بدیم یا رشته ای ولی در کد شما برای فیلد رشته ای باید تغییراتی در کد انجام بدیم، درسته؟
از مقادیر پارامترها میشه استفاده مجدد کرد، در صورتی که محتوای edit ممکنه تغییر کنه و دیگه نشه مورد استفاده قرار داد.
خوانایی برنامه بالاتر هست و یکی از اصول مهندسی نرم افزار رو رعایت کردیم.

پیروز باشید

vcldeveloper
شنبه 14 مهر 1386, 17:27 عصر
دلیل استفاده از پارامترها:
وقتی که از پارامتر استفاده میشه، فرقی نمیکنه که ما جستجو رو در فیلد عددی انجام بدیم یا رشته ای ولی در کد شما برای فیلد رشته ای باید تغییراتی در کد انجام بدیم، درسته؟
از مقادیر پارامترها میشه استفاده مجدد کرد، در صورتی که محتوای edit ممکنه تغییر کنه و دیگه نشه مورد استفاده قرار داد.
خوانایی برنامه بالاتر هست و یکی از اصول مهندسی نرم افزار رو رعایت کردیم.
البته اینها درسته، اما اصلی ترین دلیل استفاده از پارامتر افزایش کارایی کوئری هایی هست که بیش از یک بار اجرا میشند. وقتی کوئری شما با پارامتر فراخوانی میشه، از فراخوانی اول به بعد، سرور بانک اطلاعاتی شما می تونه با آن مثل یک Stored Procedure برخورد بکنه و دیگه لازم نیست هر بار دستورات SQL مربوطه Parse بشند و کد برای اجرا آماده بشه، بلکه در اجراهای بعدی، فقط پارامترها جایگزین میشند و کد آماده شده که در Cache موجود است، اجرا می شود.