سلام
یه سوال داشتم
توی نوشتن جستجو برای برنامم مشکل دارم یه برنامه آزمایشگاه که می خوام جستجو کنم ولی هر کاری می کنم نمی شه نمی خوام هم پیچیده باشه یه جستجوی عادی
ممنون می شم
سلام
یه سوال داشتم
توی نوشتن جستجو برای برنامم مشکل دارم یه برنامه آزمایشگاه که می خوام جستجو کنم ولی هر کاری می کنم نمی شه نمی خوام هم پیچیده باشه یه جستجوی عادی
ممنون می شم
بر اساس فیلدخاصی می خوای جستجو کنی؟ دیتابیست چیه؟ توی دلفی برنامه نوشتی ان شاءاله؟؟؟
بهتر است کامل تر توضیح دهید.
برنامه تان یک برنامه بانک اطلاعاتی است یا نه؟ اگر جواب مثبت است چه دیتابیسی و چطور میخواهید جستجو کنید.
جستجوی شما بر چه اساسی انجام میشود؟
موفق باشید...
بله با دلفی نوشتم و به اس کیو ال متصل کردم مثلا یک فرم مربوط به اطلاعات بیماران دارم و می خواهم براسای نام آنها جستجو کنم از طریق ado هم به اس کیو ال متصل شدم
ممنون
میتوانید از دستور Select یا Locate برای جستجو استفاده کنید. بارها در سایت بحث شده. جستجو کنید.
Select Field From <TableName> Where Field = ....
موفق باشید...
مثلاً این کد را بگذار تو برنامه ات:
with AdoQuery1 do
begin
Close ;
SQL.Clear ;
SQL.Add('select * FROM tb1 where name= ' + quotedstr(edit1.text)) ;
ExecSQL ;
Open;
end;
تو این روش query رو خودت موقع اجرا می نویسی. الان مثلاً این کد بالایی از tb1 رکورد هایی را برمی گرداند که فیلد name شان برابر با مقداری که در ادیت باکس نوشته شده است باشد.
علاوه برروشهایی که دوستان گفتند از این روش ساده تر هم می توانی استفاده کنی
Table1.Locate('Name',Edit1.Text,[loCaseInsensitive]);
در این مثال فرض براین است که ما به دنبال نامی که در Edit1 تایپ شده در دیتا بیس مورد نظر می گردیم.
با سلام .دوست عزیز عنوان مناسبی برای موضوع خود انتخاب کنید.
از این روش نیز میتونید استفاده کنید:
with Adoquery1 do
begin
close;
sql.text:='select * from table1 where name like '+Quotedstr(edit1.text);
open;
end;موفق باشید...............
از این روش هم می تونی استفاده کنی
with Adoquery1 do
Begin
Filtered:=False;
Filter:='Name='+Edit1.text;
filtered:=True;
End;
به نظرم بهترین راه استفاده از سرچ پارشیال می باشد که اگه فقط قسمتی از نام رو بنویسی برات جستجو رو انجام بده کد زیر رو توی دکمه مربوط به جستجوت بنویس.
adoquery1.sql.clear;
adoquery1.sql.add('select * from tablename where fieldname like N ''%'+edit1.text+'%''');
adoquery1.open;
آخرین ویرایش به وسیله ENG_COM1979 : چهارشنبه 12 تیر 1387 در 09:59 صبح
سلام.
اگه داده ها در 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;
اینجا چطوری میشه فایل مثال گذاشت؟
آخرین ویرایش به وسیله m-sharifi : پنج شنبه 20 تیر 1387 در 14:13 عصر
باسلام
چطوری میشه یک داده از نوع کارنسی در اکسس را در دلفی با Adoquery جست و جو کرد؟
با سلام.
شیوه خاصی نداره. اگه شما با دستورات جستجو آشنایی داشته باشید به راحتی قادر به انجام آن هستید.
به این صورت:
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 که در مورد آن زیاد بحث شده که میتوانید جستجو کنید.
موفق باشید.............
فقط یک نکته و اینکه زمانی یک پارامتر SQL را Add میکنید خودبخود ADOQuery شما غیرفعال میشود و نیازی به Deactive کردن آن نیست.
دوست عزیز بهترین روش اینه که شما یه store procedure بنویسی که ورودیش عدد یا حروف باشه و یک فرم global تو برنامت بزاری که تو هرجای برنامه اونو صدا زدی بوسیله sp نام جدول رو بهش بدی و تو گرید اون خروجیش نتیجه جستجو همون table باشه اینجوری چندتا حسن داره برنامتون شیک تر میشه - خوانا تر میشه - نهایتا یک فرم جستجو دارید و لازم نیست تو هرجای برنامه چندتا textbox واسه سرچ بزاری میتونی مثلا بگی رو هر تکست باکسی که لازم بود جستجو بشه مثلا کلید F3 بزنه یا Space اونوقت فرم جستجو ظاهر میشه و بر اساس دستورات sp ورودی جدول مربوطه رو شما بهش میدی و خروجی رو میریزه تو گرید و شما نتیجه گرید رو تو فرمت برمیگردونی (ارتباط 2 فرم با همدیگر )
من خودم اینکار رو میکنم - نمونه یه GUI رو هم که خودم استفاده میکنم برات میزارم تا منظورم رو واضح رسونده باشم
یا اینکه میتونی 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
سلام
من می خاستم در برنامه ای که نوشتم عملیات جستجو رو هم انجام بدم ولی نمی خام از دستور locateاستفاده کنم دستور پیشرفته دیگهای هم هست اگه هست شکل کلی اونو برام بنویسید ممنون
ببخشید (می خواستم ) (نمی خوام ) بخاطر سریع تایپ کردنه
اگه ممکنه به من جواب کامل رو بدبد
سلام دوست من.
این لینک بهترین روش جستجو رو به شما نشان میدهد.......
سلام دوستان
برای جستجو به این کدها نیاز دازیم که روش استاندارد است:
adoquery.close;
adouqery.sql.clear;
adoquery.sql.add(sql commond);
adoquery.execute;موفق باشید.توی قسمت سوم جمله اس کیو ال مورد نظر رو می نویسید.