View Full Version : امکان جستجو در برنامه
yassaadi
دوشنبه 10 تیر 1387, 12:44 عصر
سلام
یه سوال داشتم
توی نوشتن جستجو برای برنامم مشکل دارم یه برنامه آزمایشگاه که می خوام جستجو کنم ولی هر کاری می کنم نمی شه نمی خوام هم پیچیده باشه یه جستجوی عادی
ممنون می شم
ENG_COM1979
دوشنبه 10 تیر 1387, 13:07 عصر
بر اساس فیلدخاصی می خوای جستجو کنی؟ دیتابیست چیه؟ توی دلفی برنامه نوشتی ان شاءاله؟؟؟
Hsimple11
دوشنبه 10 تیر 1387, 14:03 عصر
بهتر است کامل تر توضیح دهید.
برنامه تان یک برنامه بانک اطلاعاتی است یا نه؟ اگر جواب مثبت است چه دیتابیسی و چطور میخواهید جستجو کنید.
جستجوی شما بر چه اساسی انجام میشود؟
موفق باشید...
yassaadi
دوشنبه 10 تیر 1387, 14:31 عصر
بله با دلفی نوشتم و به اس کیو ال متصل کردم مثلا یک فرم مربوط به اطلاعات بیماران دارم و می خواهم براسای نام آنها جستجو کنم از طریق ado هم به اس کیو ال متصل شدم
ممنون
Hsimple11
دوشنبه 10 تیر 1387, 14:38 عصر
میتوانید از دستور Select یا Locate برای جستجو استفاده کنید. بارها در سایت بحث شده. جستجو کنید.
Select Field From <TableName> Where Field = ....
موفق باشید...
moonplant
دوشنبه 10 تیر 1387, 14:39 عصر
مثلاً این کد را بگذار تو برنامه ات:
with AdoQuery1 do
begin
Close ;
SQL.Clear ;
SQL.Add('select * FROM tb1 where name= ' + quotedstr(edit1.text)) ;
ExecSQL ;
Open;
end;
تو این روش query رو خودت موقع اجرا می نویسی. الان مثلاً این کد بالایی از tb1 رکورد هایی را برمی گرداند که فیلد name شان برابر با مقداری که در ادیت باکس نوشته شده است باشد.
etedali
دوشنبه 10 تیر 1387, 14:51 عصر
علاوه برروشهایی که دوستان گفتند از این روش ساده تر هم می توانی استفاده کنی
Table1.Locate('Name',Edit1.Text,[loCaseInsensitive]);
در این مثال فرض براین است که ما به دنبال نامی که در Edit1 تایپ شده در دیتا بیس مورد نظر می گردیم.
delphiprog3000
دوشنبه 10 تیر 1387, 18:12 عصر
با سلام .دوست عزیز عنوان مناسبی برای موضوع خود انتخاب کنید.
از این روش نیز میتونید استفاده کنید:
with Adoquery1 do
begin
close;
sql.text:='select * from table1 where name like '+Quotedstr(edit1.text);
open;
end;
موفق باشید...............
AFTABGARDAN2006
سه شنبه 11 تیر 1387, 15:12 عصر
از این روش هم می تونی استفاده کنی
with Adoquery1 do
Begin
Filtered:=False;
Filter:='Name='+Edit1.text;
filtered:=True;
End;
ENG_COM1979
چهارشنبه 12 تیر 1387, 09:27 صبح
به نظرم بهترین راه استفاده از سرچ پارشیال می باشد که اگه فقط قسمتی از نام رو بنویسی برات جستجو رو انجام بده کد زیر رو توی دکمه مربوط به جستجوت بنویس.
adoquery1.sql.clear;
adoquery1.sql.add('select * from tablename where fieldname like N ''%'+edit1.text+'%''');
adoquery1.open;
m-sharifi
پنج شنبه 20 تیر 1387, 07:39 صبح
سلام.
اگه داده ها در Clientdataset واکشی شده اند میتونی در رویداد OnFilter اون به این صورت کد نویسی کنی
Accept := Pos(edtSearch.text,Dataset[FieldName])>0
بجای Fieldname نام فیلد مورد جستجو را قرار میدی. با این کار یک سرچ سریع داری که بصورت حرف به حرف داده های را فیلتر میکنه.
اگه کاربر داخل یک کادر متن مقدار جستجو را تایپ میکنه به این صورت رویداد OnChange را کد نویسی میکنی.
if Trim(edtSearch.Text)<>'' then begin
Clientdataset1.Filtered:=False;
Clientdataset1.Filtered:=True;
end else
Clientdataset1.Filtered:=False;
اینجا چطوری میشه فایل مثال گذاشت؟
Modernidea
جمعه 21 تیر 1387, 09:35 صبح
باسلام
چطوری میشه یک داده از نوع کارنسی در اکسس را در دلفی با Adoquery جست و جو کرد؟
delphiprog3000
جمعه 21 تیر 1387, 11:18 صبح
با سلام.
شیوه خاصی نداره. اگه شما با دستورات جستجو آشنایی داشته باشید به راحتی قادر به انجام آن هستید.
به این صورت:
var currency1:integer;
begin
currency1:=StrToInt(edit1.Text);
with Adoquery1 do
begin
close;
sql.text:='select * from table1 where [id] = '+inttostr(currency1);
open;
if not IsEmpty then
begin
Edit2.Text:=inttostr(FieldValues['id']);
end;
end;
راه های دیگه استفاده از filter , Locate که در مورد آن زیاد بحث شده که میتوانید جستجو کنید.
موفق باشید.............
Modernidea
جمعه 21 تیر 1387, 18:57 عصر
با سلام.
شیوه خاصی نداره. اگه شما با دستورات جستجو آشنایی داشته باشید به راحتی قادر به انجام آن هستید.
به این صورت:
var currency1:integer;
begin
currency1:=StrToInt(edit1.Text);
with Adoquery1 do
begin
close;
sql.text:='select * from table1 where [id] = '+inttostr(currency1);
open;
if not IsEmpty then
begin
Edit2.Text:=inttostr(FieldValues['id']);
end;
end;
راه های دیگه استفاده از filter , Locate که در مورد آن زیاد بحث شده که میتوانید جستجو کنید.
موفق باشید.............
ممنون ولی من از این کد استفاده کردم و کاملا درست است
ADO1.Active := False;
Str3 := 'Select * From Table1 Where ( BuyPrice Like'''+EditSearch.Text+'%'' )';
ADO1.SQL.Clear;
ADO1.SQL.Add(Str3);
ADO1.Active := True;
ShowValues.Click;
Hsimple11
شنبه 22 تیر 1387, 00:16 صبح
فقط یک نکته و اینکه زمانی یک پارامتر SQL را Add میکنید خودبخود ADOQuery شما غیرفعال میشود و نیازی به Deactive کردن آن نیست.
tefos666
چهارشنبه 26 تیر 1387, 20:05 عصر
دوست عزیز بهترین روش اینه که شما یه store procedure بنویسی که ورودیش عدد یا حروف باشه و یک فرم global تو برنامت بزاری که تو هرجای برنامه اونو صدا زدی بوسیله sp نام جدول رو بهش بدی و تو گرید اون خروجیش نتیجه جستجو همون table باشه اینجوری چندتا حسن داره برنامتون شیک تر میشه - خوانا تر میشه - نهایتا یک فرم جستجو دارید و لازم نیست تو هرجای برنامه چندتا textbox واسه سرچ بزاری میتونی مثلا بگی رو هر تکست باکسی که لازم بود جستجو بشه مثلا کلید F3 بزنه یا Space اونوقت فرم جستجو ظاهر میشه و بر اساس دستورات sp ورودی جدول مربوطه رو شما بهش میدی و خروجی رو میریزه تو گرید و شما نتیجه گرید رو تو فرمت برمیگردونی (ارتباط 2 فرم با همدیگر )
من خودم اینکار رو میکنم - نمونه یه GUI رو هم که خودم استفاده میکنم برات میزارم تا منظورم رو واضح رسونده باشم
http://barnamenevis.org/forum/attachment.php?attachmentid=20546&stc=1&d=1216223936
یا اینکه میتونی sql بنویسی البته تو ado query
adoquery1.sql.add ('select * from table where name = @param')l
با اینکار شما یک پارامتر تعریف میکنید (حتما باید بعد از = یکی فاصله داشته باشد)
حالا جای پارامتر در برنامه جستجو را قرار میدهید
adoqury1.close
adoquery1.Parameters.ParamByName('@param').Value:= Edit1.Text
adoquery1.open
سوالی بود در خدمتم
success is doing , not wishing
negarin5340
سه شنبه 22 مرداد 1387, 15:28 عصر
سلام
من می خاستم در برنامه ای که نوشتم عملیات جستجو رو هم انجام بدم ولی نمی خام از دستور locateاستفاده کنم دستور پیشرفته دیگهای هم هست اگه هست شکل کلی اونو برام بنویسید ممنون
negarin5340
سه شنبه 22 مرداد 1387, 15:32 عصر
ببخشید (می خواستم ) (نمی خوام ) بخاطر سریع تایپ کردنه
اگه ممکنه به من جواب کامل رو بدبد
delphiprog3000
سه شنبه 22 مرداد 1387, 16:07 عصر
سلام دوست من.
این لینک بهترین روش جستجو رو به شما نشان میدهد.......
http://barnamenevis.org/forum/showthread.php?t=88786
موفق باشید...............
aliboy
شنبه 26 مرداد 1387, 12:30 عصر
سلام دوستان
برای جستجو به این کدها نیاز دازیم که روش استاندارد است:
adoquery.close;
adouqery.sql.clear;
adoquery.sql.add(sql commond);
adoquery.execute;
موفق باشید.توی قسمت سوم جمله اس کیو ال مورد نظر رو می نویسید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.