View Full Version : سوال: جستجوی همزمان در کمبوباکس
famarini
دوشنبه 01 شهریور 1389, 04:34 صبح
سلام به همه
من می خواستم توی برنامم از این فیلدهایی که یک حرف رو می نویسن بعد خود برنامه همزمان سرچ می کنه و اتوماتیک بقیه کلمه رو پیشنهاد می کنه رو اضافه کنم می خواستم راهنمایی کنید چطوری می شه نوشت.
مثلا یک اسم کامل علی صادقی وقتی ع رو می زنی علی ها لیست می شن بعد ل و ...
ممنون
mofrad
دوشنبه 01 شهریور 1389, 08:23 صبح
یک راهش اینه که در رویداد onchange فیلد اگه بانک اطلاعاتی داری از دستورات Select و Like استفاده کنی.
یک راه دیگه هم اینه که یکسری کلمات پیشنهادی رو داخل یک فایل مثلا متنی ذخیره کنی و از اون فایل جستجو کنی.
اگه راه دیگه ای هست دوستان بگن.
masood samadi
دوشنبه 01 شهریور 1389, 09:07 صبح
سلام
procedure Tform1.ComboboxChange(Sender: TObject);
begin
ADOQuery1.Close.Close;
AdoQuery1.Sql.Text:=
Select * from Table Where NAme Like'+QuotedStr('%'+Combobox1.Text+'%')AdoQuery1.O pen
end
موفق باشید
famarini
دوشنبه 01 شهریور 1389, 11:06 صبح
سلام masood samadi جان
اين كدي كه قرار دادي ظاهرا همه چيزش درسته اما كار نمي كنه لطفا يه بار ديگه بررسي نمائيد.
ممنون مي شم
لطفا اساتيد ياري بدن اين سوال خيلي از بچه هاست
pezhvakco
دوشنبه 01 شهریور 1389, 17:09 عصر
درود :
كدي كه قرار دادي ظاهرا همه چيزش درسته اما كار نمي كنه
درست کار نمی کنه ؟ چه طوری امتحان کردین !
شما برای این کار دو تا کار دیگه باید انجام بدی :
1 - به جای کومبو باکس از یک ادیت برای گرفتن مقدار ورودی استفاد کن.
2 - برای نمایش اطلاعات خروجی کوئری از یک ابزار مانند DBLookupListBox استفاده کنی و اون رو که کوئری ارتباط بدی .
SELECT code, name FROM Table1 WHERE (name LIKE ' + QuotedStr(Edit1.Text + '%') + ' ')
اگه یه جستجوی ساده می کردین خواصته خودتون و یا گفته جناب mofrad (http://barnamenevis.org/forum/member.php?u=39041) رو ، حتما سریعتر جواب می گرفتین .
1 - http://barnamenevis.org/forum/showthread.php?t=214790&highlight=%D9%86%D9%85%D8%A7%DB%8C%D8%B4+%D8%A7%D8 %AF%D8%A7%D9%85%D9%87+%D8%AC%D8%B3%D8%AA%D8%AC%D9% 88
2 - http://barnamenevis.org/forum/showthread.php?t=218869&highlight=%D8%AC%D8%B3%D8%AA%D8%AC%D9%88+%D8%AD%D8 %B1%D9%81
3 - http://barnamenevis.org/forum/showthread.php?t=209924&highlight=%D8%AC%D8%B3%D8%AA%D8%AC%D9%88+%D8%AD%D8 %B1%D9%81
4 - ...
بدرود .
famarini
سه شنبه 02 شهریور 1389, 04:23 صبح
pezhvakco جان سلام از اینکه جوابمو می دی ممنون (http://barnamenevis.org/forum/member.php?u=59994)
من پروژه ای که داشتم تست می زدم رو ضمیمه کردم شما تست کنید و ایراداتشو ممنون می شم رفع کنید.
1- وقتی کلمه کامل می شه کلا کلمه در زیر ادیت پاک می شه.
2- وقتی نام پیدا شد بشه با کلید رو به پائین بشه رفت روش و نام مورد نظر رو انتخاب کرد
ممنون می شم دوستان راهنمایی کنید چون من هر چی کار کردم نتونستم اساتید و دوستان یاری بدن.
(http://barnamenevis.org/forum/member.php?u=59994)
pezhvakco
سه شنبه 02 شهریور 1389, 18:25 عصر
احتمالا مشکل از جستجو در حرف " ی " است .
این مشکل رو یه جستجو کن .
famarini
سه شنبه 02 شهریور 1389, 19:10 عصر
سلام pezhvakco (http://barnamenevis.org/forum/member.php?u=59994) جان
خيلي گشتم هر كسي يه چيزي گفته اما نتونستم اين مشكل ي رو حل كنم لطفا راهنمايي فرمائيد
ممنون
famarini
سه شنبه 02 شهریور 1389, 23:11 عصر
سلام به همه لطفا راهنمایی کنید واقعا گیر کردم ممنون می شم اساتید راهنمایی کنند
pezhvakco
چهارشنبه 03 شهریور 1389, 16:29 عصر
من با اکسس کار نکردم .
در پایگاه داده میشه با یک حرف در ابتدای مقدرا ورودی مشکل رو حل کرد ولی در اکسس 2003 کار نکرد یا من نتونستم .
می تونی در بخش اکسس این مشکل رو جستجو یا مطرح کنی .
mofrad
چهارشنبه 03 شهریور 1389, 22:56 عصر
سلام pezhvakco (http://barnamenevis.org/forum/member.php?u=59994) جان
خيلي گشتم هر كسي يه چيزي گفته اما نتونستم اين مشكل ي رو حل كنم لطفا راهنمايي فرمائيد
ممنون
این کد شما به صورت زیر دقیق تر کار میکنه. حالا میتونی برای ک عربی هم همینو به کار ببری.
موفق باشی.
if Edit1.text<>'' then
begin
S := Trim(StringReplace(Edit1.Text,'ي','ی',[]));
with ADOQuery1 do
begin
sql.clear;
sql.add('select * from tName where Name like '+#39+S+'%'+#39+' ;');
open;
end;
DBGrid1.Visible:=true;
end
famarini
پنج شنبه 04 شهریور 1389, 02:43 صبح
سلام mofrad عزیز از اینکه جواب دادین ممنون
var
s : String;
begin
if Edit1.text<>'' then
begin
s := Trim(StringReplace(Edit1.Text,'ی','ى',[rfReplaceAll]));
with ADOQuery1 do
begin
sql.clear;
sql.add('select * from tName where Name like '+#39+s+'%'+#39+' ;');
open;
end;
DBGrid1.Visible:=true;
end
else
begin
with ADOQuery1 do
begin
sql.clear;
sql.add('select * from tName');
open;
end;
DBGrid1.Visible:=false;
end;
end;یه مقدار تغییر دادم اما هنوز مشکل پا برجاست لطفا کمک کنید
pezhvakco
پنج شنبه 04 شهریور 1389, 08:50 صبح
در کد جناب mofrad
S := Trim(StringReplace(Edit1.Text,'ي','ی',[]));
برای جایگزینی حرف " ی " از " ي " استفاده شده که به نظر میاد شما هر دو رو یکسان گرفتی .
s := Trim(StringReplace(Edit1.Text,'ی','ى',[rfReplaceAll]));
Shift + X = ' ي '
mofrad
پنج شنبه 04 شهریور 1389, 09:30 صبح
درست میفرمایید. من چون کد رو کپی کردم ي تبدیل به ی شد!!!
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.