PDA

View Full Version : سوال: جستجو در بانک



یاسر مددیان
پنج شنبه 26 فروردین 1389, 11:26 صبح
سلام
اگه قسمت انتخاب فونت ms word رو نگاه کنید می بینید که اگه مثلا حرف T رو بنویسیم اولین کلمه ای که با T شروع میشه میاد و اگه پشتش a رو بنویسیم ، اولین کلمه ای که با ta شروع میشه میاد و ...
حالا من چجوری می تونم همچین جستجویی داشته باشم؟



با تشکر

hossein_h62
پنج شنبه 26 فروردین 1389, 12:10 عصر
سلام
فیلدی که قرار هستش جستجو در اون صورت بگیره را توسط کد زیر در ComboBox لود کنید:



while not ADOQuery1.Eof do
begin
combobox1.items.add(Adoquery1.fieldbyname('MyField ') .asstring);
Adoquery1.next;
end;


خاصیت استایل ComboBox هم روی csDropDown تنظیم کنید.
موفق باشید...

یاسر مددیان
پنج شنبه 26 فروردین 1389, 12:37 عصر
مرسی از جوابتون ولی من می خوام تو edit این کار رو انجام بدم.

Felony
پنج شنبه 26 فروردین 1389, 13:14 عصر
منظورتون چی هست ؟

اگر میخواین تو Edit متن رو وارد و شبیه ترین متن نسبت به اون رو از تو بانک بخونید تو رویداد OnChange شئ Edit مورد نظرتون جدولتون رو بر اساس متن وارد شده در Edit فیلتر کنید و اولین گزینه به دست اومده رو نشون بدید ، اگر جدولتون مرتب باشه اولین گزینه شبیه ترین متنی هست که با متن وارد شده در Edit هماهنگی داره .

Mahmood_M
پنج شنبه 26 فروردین 1389, 16:35 عصر
سلام
اگه قسمت انتخاب فونت ms word رو نگاه کنید می بینید که اگه مثلا حرف T رو بنویسیم اولین کلمه ای که با T شروع میشه میاد و اگه پشتش a رو بنویسیم ، اولین کلمه ای که با ta شروع میشه میاد و ...
حالا من چجوری می تونم همچین جستجویی داشته باشم؟
اگر منظورتون رو درست فهمیده باشم ...
برای همچین جستجویی می تونید به صورت زیر عمل کنید :

ADOTable.Filter := 'Name Like '+QuotedStr(Trim(NameEdit.Text)+'%');F;
ADOTable.Filtered := True;
در دستور بالا ، اگر در NameEdit حروفی وارد بشه در جدول مقادیری که با اون حروف شروع می شن نمایش داده میشه ، اگر علامت "%" رو قبل از " (Trim(NameEdit.Text " هم قرار بدید در جدول تمام مقادیری که شامل اون حروف هستن نمایش داده میشن ...

عباراتی مثل " % " یا " _ " یا ... در زبان SQL رو اصطلاحا WildCard می گن که می تونید در این صفحه (http://www.w3schools.com/sql/sql_wildcards.asp) یا این صفحه (http://msdn.microsoft.com/en-us/library/aa933232%28SQL.80%29.aspx) در موردشون اطلاعات بیشتری بدست بیارید ...

موفق باشید ...

یاسر مددیان
یک شنبه 29 فروردین 1389, 14:37 عصر
سلام
تا این قسمتشو مشکل ندارم.
مشکل اینه که مثلا می خوایم کلمه رویا رو جستجو کنیم ابتدا حرف 'ر' رو تایپ می کنیم اولین کلمه ای که حرف 'ر' در اون هست با کوئری های بالا پیدا می شه و در edit نمایش داده می شه.مثلا رامین حالا به غیر حرف 'ر' ادامه کلمه یعنی'امین' حالت selectشده (آبی) باشه.حالا اگه حرف 'و' را تایپ کردیم ادامه اون یعنی'یا' به صورت select(آبی)نمایش داده بشه
مثل قسمت فونت در word

pezhvakco
دوشنبه 30 فروردین 1389, 18:54 عصر
درود :
اگه بانکت مرتب سازی شده است ،میتونی برای جابجای نمایشگر و نشان دادن نزدیک ترین مقدار بانک از دستور Locate استفاده کنی >

Table1.Locate('name',edit1.Text,[loPartialKey]);
دستور بالا رو در Onchange مربوط به Edit بنویش .

می تونی یه DBLookupListBox داشته باشی در زیر Edit نمایش بدی و به بانک وصلش کنی تا سایر مقادیر رو نشون بده .

برای رنگی کردن مقدار ادامه متن، دستوری دو دلفی ندیدم چون یه دستور انتخاب داره که تمام متن رو انتخاب می کنه . شاید بشه با Canvas کاری کرد .

فکر خوش .

یاسر مددیان
سه شنبه 31 فروردین 1389, 07:49 صبح
سپاسگزارم از جوابتون.
ولی یعنی هیچ راهی وجود نداره که این کار انجام بشه؟؟؟

MOJTABAATEFEH
جمعه 03 دی 1389, 20:36 عصر
اگر منظورتون رو درست فهمیده باشم ...
برای همچین جستجویی می تونید به صورت زیر عمل کنید :

ADOTable.Filter := 'Name Like '+QuotedStr(Trim(NameEdit.Text)+'%');F;
ADOTable.Filtered := True;
در دستور بالا ، اگر در NameEdit حروفی وارد بشه در جدول مقادیری که با اون حروف شروع می شن نمایش داده میشه ، اگر علامت "%" رو قبل از " (Trim(NameEdit.Text " هم قرار بدید در جدول تمام مقادیری که شامل اون حروف هستن نمایش داده میشن ...

عباراتی مثل " % " یا " _ " یا ... در زبان SQL رو اصطلاحا WildCard می گن که می تونید در این صفحه (http://www.w3schools.com/sql/sql_wildcards.asp) یا این صفحه (http://msdn.microsoft.com/en-us/library/aa933232%28SQL.80%29.aspx) در موردشون اطلاعات بیشتری بدست بیارید ...

موفق باشید ...

من قبلا از این کد استفاده کردم ولی وقتی مثلا در اینجا NameEdit خالی میشه پیغام خطا میده با این مورد باید چکار کرد؟

با تشکر

Felony
جمعه 03 دی 1389, 20:44 عصر
من قبلا از این کد استفاده کردم ولی وقتی مثلا در اینجا NameEdit خالی میشه پیغام خطا میده با این مورد باید چکار کرد؟

با تشکر

خوب با یک شرط چک کنید وقتی مقدار Edit خالی نبود بعد فیلتر رو انجام بدید !

MOJTABAATEFEH
شنبه 04 دی 1389, 12:54 عصر
ممنون دوست عزیز برای جستجوی پویا هم باید چه کار کرد؟
چون اگر تعداد فیلدهایی را که میخواهیم در جستجو دخیل کنیم مثلا 10 مورد باشه باید 10 Edit در برنامه بزاریم و در این صورت تصور کنید چه کد نویسی باید بشه اگر از روش پیشنهادی شما استفاده کنیم؟؟!! چون مشخص نیست کاربر چه ترکیبی از فیلدها رو برای جستجو انتخاب میکنه؟

چه پیشنهادی دارین؟

با تشکر

Felony
شنبه 04 دی 1389, 13:12 عصر
ممنون دوست عزیز برای جستجوی پویا هم باید چه کار کرد؟
چون اگر تعداد فیلدهایی را که میخواهیم در جستجو دخیل کنیم مثلا 10 مورد باشه باید 10 Edit در برنامه بزاریم و در این صورت تصور کنید چه کد نویسی باید بشه اگر از روش پیشنهادی شما استفاده کنیم؟؟!! چون مشخص نیست کاربر چه ترکیبی از فیلدها رو برای جستجو انتخاب میکنه؟

چه پیشنهادی دارین؟

با تشکر
قبلا در موردش صحبت کردم : http://barnamenevis.org/showthread.php?251057-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88-%D8%A8%D8%B1-%D8%A7%D8%B3%D8%A7%D8%B3-%D9%87%D9%85%D9%87-%D9%81%DB%8C%D9%84%D8%AF-%D9%87%D8%A7/page2