Главная » Delphi » Манипулирование наборами данных

0

Приложение базы  данных  бесполезно, если  его  данными невозможно управлять. К счастью, наборы данных  содержат методы, которые позволяют сделать  это.  Набо ры данных дают возможность добавлять, редактировать и удалять записи из исходной таблицы. Для этого  применяются следующие  методы:  Insert() (добавить), Edit() (редактировать), и Delete() (удалить).Листинг 7.3 содержит пример приложения, использующего эти методы.

Листинг 7.3. MainFrm.pas — пример манипулирования данными unit MainFrm;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics,

Controls, Forms, Dialogs, StdCtrls, Mask, DBCtrls, DB, Grids,

DBGrids, ADODB;

type

TMainForm = class(TForm)

ADOConnection1: TADOConnection;

adodsCustomer: TADODataSet;

dtsrcCustomer: TDataSource;

DBGrid1: TDBGrid;

adodsCustomerCustNo: TAutoIncField;

adodsCustomerCompany: TWideStringField;

adodsCustomerAddress1: TWideStringField;

adodsCustomerAddress2: TWideStringField;

adodsCustomerCity: TWideStringField;

adodsCustomerStateAbbr: TWideStringField;

adodsCustomerZip: TWideStringField;

adodsCustomerCountry: TWideStringField;

adodsCustomerPhone: TWideStringField;

adodsCustomerFax: TWideStringField;

adodsCustomerContact: TWideStringField;

Label1: TLabel;

dbedtCompany: TDBEdit;

Label2: TLabel;

dbedtAddress1: TDBEdit;

Label3: TLabel;

dbedtAddress2: TDBEdit;

Label4: TLabel;

dbedtCity: TDBEdit;

Label5: TLabel;

dbedtState: TDBEdit;

Label6: TLabel;

dbedtZip: TDBEdit;

Label7: TLabel;

dbedtPhone: TDBEdit;

Label8: TLabel;

dbedtFax: TDBEdit;

Label9: TLabel;

dbedtContact: TDBEdit;

btnAdd: TButton;

btnEdit: TButton;

btnSave: TButton;

btnCancel: TButton;Label10: TLabel; dbedtCountry: TDBEdit; btnDelete: TButton;

procedure btnAddClick(Sender: TObject); procedure btnEditClick(Sender: TObject); procedure btnSaveClick(Sender: TObject); procedure btnCancelClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject;

var Action: TCloseAction);

procedure btnDeleteClick(Sender: TObject);

private

{ Закрытые объявления }

procedure SetButtons;

public

{ Открытые объявления }

end;

var

MainForm: TMainForm;

implementation

{$R *.dfm}

procedure TMainForm.btnAddClick(Sender: TObject);

begin

adodsCustomer.Insert;

SetButtons;

end;

procedure TMainForm.btnEditClick(Sender: TObject);

begin

adodsCustomer.Edit;

SetButtons;

end;

procedure TMainForm.btnSaveClick(Sender: TObject);

begin

adodsCustomer.Post;

SetButtons;

end;

procedure TMainForm.btnCancelClick(Sender: TObject);

begin

adodsCustomer.Cancel;

SetButtons;

end;

procedure TMainForm.SetButtons;

begin

btnAdd.Enabled       := adodsCustomer.State = dsBrowse;

btnEdit.Enabled := adodsCustomer.State = dsBrowse;btnSave.Enabled := (adodsCustomer.State = dsInsert) or

(adodsCustomer.State = dsEdit);

btnCancel.Enabled := (adodsCustomer.State = dsInsert) or

(adodsCustomer.State = dsEdit);

btnDelete.Enabled := adodsCustomer.State = dsBrowse;

end;

procedure TMainForm.FormCreate(Sender: TObject);

begin

adodsCustomer.Open;

SetButtons;

end;

procedure TMainForm.FormClose(Sender: TObject;

var Action: TCloseAction);

begin adodsCustomer.Close; ADOConnection1.Connected := False;

end;

procedure TMainForm.btnDeleteClick(Sender: TObject);

begin

adodsCustomer.Delete;

end;

end.Рис. 7.2 иллюстрирует пример приложения, манипулирующего данными.

Рис. 7.2. Главная форма приложения, манипулирующего даннымиЭто приложение управляет данными в самой простой форме. Ниже приведен спи

сок использованных методов.

•  Insert() добавляет новую запись.

•  Edit() изменяет активную запись.

•    Post() сохраняет в таблицу новую запись или изменения, внесенные в уже су

ществующую.

•  Cancel() отменяет любые изменения, сделанные в записи.

•  Delete() удаляет текущую запись из таблицы.

Состояния набора данных

Листинг 7.3 демонстрирует также  применение свойства TDataSet.State, кото рое  позволяет исследовать состояние набора данных, чтобы  получить возможность программно установить соответствующее состояние кнопок формы (разрешена/за прещена). Это дает возможность отключить кнопку Add (Добавить), когда набор  дан ных находится в состоянии Insert (вставка) или Edit (редактирование). Другие  со стояния представлены в табл. 7.1.

Таблица 7.1. Возможные значения свойства TDataset.State

Значение                                   Описание

dsBrowse       Состояние по умолчанию. Набор данных  находится в режиме просмотра (Browse)

dsCalcFields   Вызван обработчик события OnCalcFields, и значение полей записи  в настоящий момент  пересчитывается

dsEdit              Набор данных   находится в  режиме редактирования  (Edit).

Это  означает,  что  был  вызван  метод  Edit(),  но  отредакти

рованная запись еще не была внесена в таблицу

dsInactive          Набор данных закрыт

dsInsert       Набор данных  находится в режиме вставки  (Insert).  Обычно это  означает, что  был  вызван  метод  Insert(), но  добавляемая запись еще не была внесена в таблицу

dsSetKey            Набор данных  находится в режиме установки ключа  (SetKey).

Был   вызван   метод   SetKey(),  но  метод   GotoKey() еще  не

вызывался

dsNewValue           Набор данных находится в переходном состоянии,  когда  осу

ществляется доступ к свойству NewValue

dsOldValue     Набор  данных   находится  в   переходном  состоянии,  когда осуществляется доступ к свойству OldValue

dsCurValue           Набор данных находится в переходном состоянии,  когда  осу

ществляется доступ к свойству CurValueОкончание табл. 7.1.

Значение                                  Описание

dsFilter       В настоящее время  в наборе данных  выполняется фильтрация записей, выборка значений или другая операция с использова нием фильтра

dsBlockRead    Набор данных  буферизируется, поэтому  при  установке этого значения перемещение курсора  не приводит к обновлению данных в элементах управления и генерации событий

dsInternalCalc В настоящее время   вычисляется значение поля,   у которого свойство FieldKind имеет значение fkInternalCalc

dsOpening   Набор данных   находится в  состоянии открытия,  которое  в настоящей момент  еще не завершено. Это состояние уста навливается  только   тогда,  когда  набор   данных   открывается для асинхронной выборки данных

Источник: Тейксейра, Стив, Пачеко, Ксавье.   Borland Delphi 6. Руководство разработчика. : Пер.  с англ. — М. : Издательский дом “Вильямс”, 2002. —  1120 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии