تبليغاتX
وبلاگ برنامه نویسان اهواز
آموزش برنامه نویسی به زبان های برنامه نویسی دلفی و ویژوال بیسیک و ...
 یه مقاله درباره انواع حافظه
مقاله درباره انواع حافظه های کامپیوتری خیلی توپه

http://www.4shared.com/file/39575809/e81194c8/Memory.html

|+| نوشته شده توسط محمد جاهد در دوشنبه 13 اسفند1386  |
 جستجو در جدول (Searching in Table)

جستجو در جدول (Searching in Table)

برای جستجو اول باید ببینید به چه نوع گزارشی نیاز دارید، می خواهید یک عبارت رو در یک فیلد مشخص(یا قابل تغییر توسط کاربر) فقط پیدا کنید؟یا می خواهید لیستی از اطلاعات مربوط به عبارت مورد جستجو را پیدا کنید؟ هر کسی بسته به نوع کارش یه روشی داره، مثلا اگر بخواهید در دفترچه تلفن فقط یک تلفن یا نام رو پیدا کنید (فقط پیدا کنید نه لیست تهیه کنید) میتوانید این کارو با دستور Locate براحتی انجام بدید روش انجام اون اینجوریه:

برای مثال اول یه شی از نوع TEdit و یکی هم TButton از پالت Standard به فرم اضافه کنید (خاصیت کپشن Button رو به جستجو تغییر بدید و Name اونو هم به BSearch و خاصیت Name شی Edit رو هم به ESearch تغییر بدید) بعد روی دکمه دوبار کلیک کن.حالا کد زیر رو بنویس:

FDM.TTelInfo.Locate('Tel',ESearch.Text,[loCaseInsensitive]);

با این دستور اولین رکوردی که فیلد Tel اون مثل عبارت وارد شده در TSearch باشه رو پیدا میکنه و مکان نما رو به اون رکورد انتقال می ده. برای بهتر شدن و جالب تر شدن می تونید اسم فیلد رو هم از کاربر بوسیله یک شی Edit دیگه که مثلا اسم اونو ESField گذاشتید به شکل زیر دریافت کنید.

FDM.TTelInfo.Locate(ESField.text,ESearch.Text,[loCaseInsensitive]);

اینطوری کاربر میتونه با وارد کردن اسم فیلد مربوطه در فیلدهای مختلف هم جستجو کنه. حالا خودت سعی کن تا بوسیله شی TComboBox از پالت Standard کاربر فقط اسم فیلد رو انتخاب کنه نه اینکه خودش اسم اونو وارد کنه. (یه راهنمایی: این شی یه خاصیت به نام Items داره که میتونی اسم فیلدها رو توش بنویسی(همشو که گفتم یه چیزیم خودت بنویس))

خب این از این روش، بریم برا روشی که باعث انتخاب لیستی از رکوردهای مورد نیاز ما میشه. این روش بسیار دقیق تر و تنظیم اون حرفه ای تره، خیلی سادس فقط باید یکم خلاقیت بخرج بدی، خب، از این روش میشه مثلا برای وقتی که بخوایم لیستی از تمامی شماره هایی که فیلد Name اونا برابر عبارت هست رو نشون بده میشه استفاده کرد.در این دستور میشه از روش های قسمت where در دستور Select از SQL استفاده کرد.مثلا برای مثال بالا میشه:

FDM.TTelInfo.Filtered:=False;

FDM.TTelInfo.Filter:= 'Name = '+QuotedStr(ESearch.text);

FDM.TTelInfo.Filtered:=True;

در این مثال در خط اول خاصیت فیلتر جدول رو غیر فعال کردیم و در خط دوم با مقدار دادن به خاصیت Filter جدول گفتیم که عبارت موجود در ESearch رو در فیلد Name جستجو کنه تابع QuotedStr باعث میشه دوتا تک کوتیشن( ' ) دوطرف رشته داده شده قرار بگیره.مثلا اگر مقدار ESearch برابر محمد باشه مقدار خاصیت Filter برابر با عبارت زیر میشه :

Name = 'محمد'

اما بدون دستور  QuotedStr  میشه :

Name = محمد

که باعث خطا میشه و نمیشه اینجوری برای فیلدهای رشته ای استفاده کرد.(دقیقا مثل SQL) فقط فیلدهای از نوع رشته ای باید اینطوری وارد بشن.

 

پیشرفته تر:

مثلا برای پیدا کردن تمامی شماره تلفن های با یک پیش شماره مشخص میشه نوشت:

FDM.TTelInfo.Filter:= 'Tel  Like  '+QuotedStr(ESearch.text+'*');

 

در اینجا دستور Like بمعنی شبیه بودن می باشد و * باعث میشود هر کاراکتری جایگزینش شود و باعث پیدا شدن هر رکوردی که فیلد Tel اون با عبارت وارد شده شروع شده باشد می شود.

 

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

|+| نوشته شده توسط محمد جاهد در دوشنبه 13 اسفند1386  |
 
 
بالا