linkedin facebook linkedin facebook nod32

Delphida ma`lumotlarni izlash va filtrlash

Muallif: Mengliyev SH.

Qo`shilgan sana: 2014-09-17

Ma’lumotlarni izlash va filtrlash


Kompornent  TDataset va uning davomchilari ma’lumotlar bilan ish yuritishda maxsus usullarga ega:

  • maydon qiymati bo‘yicha ma’lumotni izlash;
  • ma’lumotlarni filtrlash;
  • zakladka qo‘yish va unga o‘tish.

Ma’lumotni izlash. Ma’lum belgilangan yozuvlarni ma’lumotlar to‘plamdan izlab topish uchun ikkita usul mavjud: Locate va Lookup.
Locate - usuli biror maydonning berilgan yozuvi bo‘yicha kerakli yozuvni topish imkonini beradi. Uning umumiy ko‘rinishi quyidagicha:
         Function Locate(Const KeyFields: String; Const KeyValues:
Variant; Options: TLocateOptions): Boolean;
  Bu erda
         KeyFields -ma’lumotlarni izlashda qatnashadigan maydonlar nomlari. Ular bir biridan nuqta vergul bilan ajratiladi.
         KeyValues -bir yoki bir necha izlanadigan maydon qiymatlari. Agar izlanadigan qiymatlar bir necha bo‘lsa massiv varianti funksiyasi qilib berish zarur.
         Options -izlanadigan parametrlar to‘plami. U quyidagi qiymatlarni saqlash mumkin:
         loCaseInsensitive. Registrni hisobga olmasdan izlash.
         loPartialKey. Maydon qiymati to‘liq berilmagan holda izlash. Masalan,  ‘So’ boshlanadigan familiyalar izlanadigan bo‘lsa. U holda ma’lumotlar to‘plamidan So bilan boshlanadigan familiyalar ‘Sobirov’ va ‘Soatov’ lar topiladi.
         Agar izlanayotgan yozuv topilsa funksiya Locate  -true qiymat qaytaradi.
Misol. 2. Misol tariqasida yuqorida tuzilgan o‘qituvchilar MBni olaylik va MBdan kerakli o‘qituvchini izlab topish uchun ilova yarataylik.

Ilovani yaratish algoritmi:
1.Delphini ishga tushuramiz.
2.Formaga Label1 komponentasini o‘rnatamiz va uning Caption xossasini “Malumotlar bazasidan izlsh” so‘ziga almashtiramiz.
3.Formaga DataSource (Ma’lumotlar manbai), Query (So‘rov) va DBGrid komponentalarini joylashtiramiz. Ularning qayidagi xossalarini o‘rnatamiz.
DataSource1 komponenti.

Query1 komponenti.


Xossa

Qiymati

DataSet

Query1


Xossa

Qiymati

DataBaseName
RequestLive
SQL

ABDU_PR
True
Select * From Xodims

DataSource1 komponenti.


Xossa

Qiymati

DataSourse

DataSourse1

 

4.YUqoridagilarni to‘g‘riligini tekshirish uchun Query1 komponentasining Active xossasini True qilib o‘rnatamiz.
5.Data Controls komponentalar palitrasidadan TDBNavigator komponentasini formaga joylashtiramiz.
6.TDBNavigator komponentalar xossasidan DataSourse xossasini DataSourse1 nom bilan o‘rnatamiz.
7.Button1 komponentasini formaga joylashtiramiz va uning Caption xossasini “Chiqish” so‘ziga almashtiramiz.
9.Edit1 komponentasini formaga joylashtiramiz.
10.Button2 komponentasini formaga joylashtiramiz va uning Caption xossasini “Kod boyicha izlash” so‘ziga almashtiramiz.

         Natijada quyidagi formaga ega bo‘lamiz.

11.“Kod boyicha izlsh” tugmasini ikki marta tez-tez chiqillatib quyidagi dastur kodini kiritamiz.
        
procedure TForm1.Button1Click(Sender: TObject);
begin
 Query1.Locate('Kodx',Edit1.Text,[LopartialKey,
 LoCaseInsensitive]);
end;

         Bu erda 'Kodx' –xodimlar kodini tasvirlovchi maydon nomi

         12.Ilovani ishga tushiramiz.
         Natiijada quyidagi forma ilovasiga ega bo‘lamiz.

Bu formani ishga tushirgandan so‘ng Edit1 tahrirlash qatoridan kerakli o‘qtituvchi kodi kiritilib “Kod boyicha izlash” tugmasi bosiladi. Bu erda izlash 'Kodx' maydoni bo‘yicha amalga oshirilayapdi. Izlash 140 kodi kiritilib “Kod boyicha izlash” tugmasi bosilayapdi. Natijada shu kodli xodim topilgan, chunki kursor shu kod to‘g‘risida turibdi. Buni familiya va ism bo‘yicha amalga oshirish ham mumkin. Uning uchun 'Kodx' maydoni o‘rniga 'Famx' maydonini yozish kifoya.
         MBdan izlashni ikkita maydon bo‘yicha ham tashkil qilish mumkin uning uchun ikkinchi taxrirlash maydonini kiritish kerak bo‘ladi.
        
Tuzilgan dastur kodlari quyidagicha bo‘ladi.

unit Xodim1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, DBGrids, DB, DBTables, ExtCtrls, DBCtrls;

type
  TForm1 = class(TForm)
    DataSource1: TDataSource;
    Query1: TQuery;
    DBGrid1: TDBGrid;
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    DBNavigator1: TDBNavigator;
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
 Query1.Locate('kodx',edit1.Text,[LopartialKey,LoCaseInsensitive]);
end;

end.

Endi TDataSet ob’ekti davomchisi bo‘lgan ikkinchi LookUp izlash funksiyasini ko‘rib chiqamiz. Bu funksiya ham Locate funksiyasiga juda o‘xshash bo‘lib uning ko‘rinishi quyidagichadir.

         Function LookUp(Const KeyFields: String; Const KeyValues:
Variant; const ResultFields: String): Variant;

Bu funksiyaning Locate funksiyasidan farqi shundaki u topilgan yozuvni joriy dab aniqlamaydi, u topilgan yozuvning berilgan maydon qiymatini qaytaradi.  Xuddi oldingi holdagi kabi uning parametrlari quyidagilarni aniqlaydi.
         KeyFields -ma’lumotlarni izlashda qatnashadigan maydonlar nomlar ro‘yxarti. Ular bir biridan nuqta vergul bilan ajratiladi.
         KeyValues -bir yoki bir necha izlanadigan maydon qiymatlari. Agar izlanadigan qiymatlar bir necha bo‘lsa massiv varianti funksiyasi qilib berish zarur.

         Ma’lumotlarni filtrlash.
Ma’lumotlarni filtrlashning ikkita asosiy usuli mavjud:

  • filtr xossasini ishlatish;
  • OnFilterRecord obrabotchigini (qayta ishlovchisini) tashkil qilish.

Filter xossasi MB yozuvini qanoatlantiruvchi shartni o‘z ichiga oladi. SHart solishtirish va mantiqiy operatorlarni o‘z ichiga olishi mumkin. Masalan, Kodx>139 And Omx>100000. Bu shart bizning yuqorida yaratgan MB uchun kodi 139dan katta va maoshi 100000dan katta xodimlarni ekranga chiqaradi. £uyidagi oynada kodi 139 dan katta xodimlarni ekranga chiqarish tasvirlangan

Filter xossasiga shartni kiritish uchun oldin Query1 komponentasi belgilanadi va keyin ob’ekt inspektoridan Filter xossasi topilib unig qatoridan Kodx>139 sharti kiritiladi va keyin Filtered xossasi true qiymatga almashtiriladi

2260 marta o`qildi.

Parol:
Eslab qolish.


Ro`yhatdan o`tish

testing

+998915878681

Siz o`z maxsulotingizni 3D reklama ko`rinishda bo`lishini xohlaysizmi? Unda xamkorlik qilamiz.

3D Reklama


Рейтинг@Mail.ru
Рейтинг@Mail.ru

Besucherzahler
счетчик посещений