Bază de date Delfi Construit (Partea 3)

DB în Delphi, a pus fără utilizarea bazelor de date de la terțe părți

Bun venit Delphi'sty și simpatizanți.

Intr-un articol anterior, am descris modul de filtrare a datelor la TClientDataSet. Astăzi vă voi arăta cum să editați datele într-o componentă TClientDataSet.

De fapt, TClientDataSet numai înregistrarea curentă, puteți edita și valoare extract de numai înregistrarea curentă. Recordul actual este unul care are un cont accentul în acest moment. Într-o anumită înregistrare a devenit curent trebuie să identifice utilizatorul, deoarece poate fi distinge prin software-ul. În scopul de a face unele curente de înregistrare utilizată metoda de a localiza:

Localizați (KeyFields const: string;
KeyValues ​​const: Variant; Opțiuni: TLocateOptions): Boolean;

Primul parametru este o listă de câmpuri separate prin „virgulă“ sau un câmp. Al doilea parametru este valoarea pe care ar trebui să fie egală cu câmpurile specificate în primul parametru în cazul în care mai multe domenii în al doilea parametru ar trebui să fie o matrice de Variant. Dacă mai multe domenii care tranziția are loc numai în cazul în care fiecare câmp specificat în primul parametru la valoarea specificată în al doilea parametru. În cazul în care tranziția a fost de succes, funcția returnează Adevărat. În scopul de a obține o serie de Variant poate fi utilizată funcția VarArrayOf. Aici sunt exemple de utilizare a metodei de localizare:

......
Dacă nu ClientDataSet1.Locate ( 'LastName', Edit1.text, []) atunci
MessageDlg ( ' "' + Edit1.text + '" nu a fost găsit', mtError, [MBOK], 0);
....

....
ClientDataSet1.Locate ( 'LastName; FirstName', VarArrayOf ([ 'Ivanov' 'Ivan']), []);
....

Dacă vrei să mergi la înregistrarea, cunoscând doar o parte dintr-un câmp șir poate fi utilizat opțiunea loPartialKey în al treilea parametru.

ClientDataSet1.Locate ( 'Adres', 'Mosk', [loPartialKey]); Valorile piesa nu poate fi undeva la mijlocul terenului, poate fi doar primele câteva simboluri. Să presupunem că valoarea câmpului este Adres egală „Moskva“ este:

ClientDataSet1.Locate ( 'Adres', 'Mosk', [loPartialKey]); muncă
ClientDataSet1.Locate ( 'Adres', 'SKV', [loPartialKey]); Quiescent.

Pentru a naviga în tabel pot fi de asemenea utilizate metode bine cunoscute:

În primul rând;
ultimul;
În continuare;
Înainte;

De asemenea:
MoveBy (Distanța de Integer.): Integer; Funcția returnează numărul de înregistrări pe care a avut loc de fapt, mișcarea. De exemplu, dacă 7 înregistrări stânga înainte de sfârșitul anului, iar mișcarea are loc timp de 10 intrări, funcția returnează 7.
RecNo: Integer;
Proprietatea indică numărul de înregistrare pe care se concentreze de intrare. Foarte ciudat, dar numărătoarea inversă începe cu 1.
Ia numărul de serie al înregistrării curente:
Current_record: = ClientDataSet1.recno;
Setați focalizarea la a patra intrare din tabel:
ClientDataSet1.RecNo: = 4;

Așa că ne-am mutat pentru a scrie corect noi.
În primul rând, despre TField clasă: pentru a obține valoarea trebuie să utilizați proprietatea de valoare, care returnează o valoare de tip Variant. Există, de asemenea, o proprietate specială:
AsString; AsFloat; AsCurrency; AsDateTime etc.
Pentru a obține valoarea unui câmp, există mai multe moduri.

1. Domenii de proprietate - o serie de obiecte TField. Pentru a obține valoarea câmpului trebuie să specificați numărul de serie (numărând de la zero):
Str: = ClientDataSet1.Fields [3]. AsString;
2. Metoda FieldByName - returnează un obiect de tip TField. ShowMessage (ClientDataSet1.FieldByName ( 'Adres') AsString.);
3. FieldValues ​​de proprietate - returnează o variantă. (FieldValues ​​ClientDataSet1 [ 'LastName'].) ShowMessage;
Această proprietate este proprietatea implicită, astfel încât să puteți scrie atât de ShowMessage (ClientDataSet1 [ „NumeDeFamilie“]);

Pentru a schimba câmpurile, trebuie să traducă mai întâi componenta în stare de editare pentru a atribui câmpurile necesare valorile necesare și componente de actualizare. Trecerea la starea de editare efectuează procedura Edit; Actualizarea efectuează procedura de Post;

Iată un exemplu:
ClientDataSet1.edit;
ClientDataSet1 [ 'LastName']: = 'Ivanov';
ClientDataSet1 [ 'Ves']: = '71';
ClientDataSet1.Fields [1] .AsString: = 'Moskva';
ClientDataSet1.FieldByName ( 'Vozrast') AsFloat: = '24' ;.
ClientDataSet1.post;

Adăugarea unei intrări la sfârșitul tabelului poartă metoda Append; După apelarea acestei metode, înregistrarea intră în starea de editare, pentru a actualiza tabelul este, de asemenea, utilizat metoda post. În mod similar, utilizați metoda Insert; Numai ea introduce o înregistrare, după înregistrarea curentă.

Pentru a șterge Delete este utilizată metoda de înregistrare; un avertisment este de ieșire și metoda de post; nu este nevoie de a apela.