Построен Delphi база данни (част 3)

DB в Делфи, поставени без използване на бази данни на трети страни

Добре дошли Delphi'sty и симпатизанти.

В предишна статия описах как да филтрирате данните на TClientDataSet. Днес ще ви покажа как да редактирате данни в компонент TClientDataSet.

В действителност, TClientDataSet само текущия запис, можете да редактирате и екстракт стойност от само текущият запис. Сегашният рекорд е един акаунт, който има фокус в момента. За някои запис стана ток трябва да идентифицира потребителя, тъй като тя може да бъде разграничен от софтуер. За да направите някои от настоящите запис използва Намерете начин:

Разположете (на константи KeyFields: низ;
CONST KeyValues: вариант; Опции: TLocateOptions): Boolean;

Първият параметър е даден списък на полета, разделени от "запетая" или едно поле. Вторият параметър е стойността, която трябва да бъде равна на полетата, определени в първия параметър, ако много области във втория параметър трябва да бъде масив от Variant. Ако няколко полета, които ще се осъществи прехода, само ако всяка област, посочена в първия параметър със стойността, посочена във втория параметър. Ако преходът е било успешно, функцията връща True. За да се получи множество вариант може да се използва функция VarArrayOf. Ето примери за използване на метода на локализиране:

......
Ако не ClientDataSet1.Locate ( "LastName ', Edit1.text, []), тогава
MessageDlg ( "" '+ Edit1.text + "не е намерен", mtError [mbOK], 0);
....

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

Ако искате да отидете на записа, знаейки само част от поле низ може да се използва loPartialKey опция в третия параметър.

ClientDataSet1.Locate ( "Адрес", "Mosk ', [loPartialKey]); Част стойности не могат да бъдат някъде в средата на терена може да е само на първите няколко символа. Да приемем, че стойността на полето е равна Адрес "Москва" е:

ClientDataSet1.Locate ( "Адрес", "Mosk ', [loPartialKey]); работа
ClientDataSet1.Locate ( "Адрес", "SKV ', [loPartialKey]); латентно състояние.

За да се придвижвате в таблицата може да се използва добре познати методи:

Първи;
Последно;
Следваща;
Преди;

също:
MoveBy (Разстояние число.): Integer; Функцията връща броя на записите, на които всъщност се е появил на движението. Например, ако на 7 записи оставени преди края, а движението се осъществява в продължение на 10 вписвания, функцията връща 7.
RecNo: Integer;
Имотът се посочва номера на записа, в който вход фокуса. Много странно, но обратното броене започва с една.
Вземете серийния номер на текущия запис:
Current_record: = ClientDataSet1.recno;
Преместване на фокуса към четвъртото влизане в таблицата:
ClientDataSet1.RecNo: = 4;

Така че ние се премести към напише правилното нас.
На първо място, за TField клас: за да получите стойността, която трябва да се използва стойността на имота, който връща стойност от тип Variant. Налице е също така специален имот:
AsString; AsFloat; AsCurrency; AsDateTime т.н.
За да се получи стойността на полето, има много начини.

1. Полетата с недвижими имоти - масив от обекти TField. За да получите стойността на областта трябва да посочите серийния му номер (като се брои от нула):
Ул: = ClientDataSet1.Fields [3]. AsString;
2. метод FieldByName - връща обект от тип TField. ShowMessage (ClientDataSet1.FieldByName ( "Адрес") AsString.);
3. FieldValues ​​собственост - извежда Variant. ShowMessage (ClientDataSet1 FieldValues ​​[ 'LastName'].);
Този имот е имотът по подразбиране, така че можете да пишете така ShowMessage (ClientDataSet1 [ 'LastName']);

За да промените полетата, първо трябва да се преведат на компонент в състояние на редактиране, за да зададете необходимите полета, необходими ценности и актуализация компонент. Преходът към състоянието на редактиране извършва процедура Edit; Актуализация изпълнява процедура пост;

Ето един пример:
ClientDataSet1.edit;
ClientDataSet1 [ 'LastName']: = 'Ivanov ";
ClientDataSet1 [ 'Ves']: = "71";
ClientDataSet1.Fields [1] .AsString: = "Москва";
ClientDataSet1.FieldByName ( "Vozrast) AsFloat: =" 24 ";.
ClientDataSet1.post;

Добавяне на запис в края на маса носи метод Добавяне; След като нарече този метод, записът отива в редактиране статус, за актуализиране на таблицата също се използва метод Post. По същия начин, се използва методът въвеждане; Само го вмъква рекорд след текущия запис.

За да изтриете Delete се използва метод за запис; предупреждение се извежда и начин публикация; Няма нужда да се обадите.