Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое пособие - БД Делфи+++.doc
Скачиваний:
30
Добавлен:
20.11.2018
Размер:
1.05 Mб
Скачать

5. Добавление записей в таблицы через форму

Другой способ манипулирования данными в таблицах – добавление, удаление или корректировка записей выполняется с помощью новых форм.

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

Свойство Value всегда соответствует типу поля, к которому оно относится. Например у TStringFields - string, TCurrencyFields - double. На самом деле это поле должно показывать нечто другое - произведение полей Qty (количество) и ListPrice (цена). Для этого для события OnCalcFields нужно следующим образом:

procedure TForm1.Table2CalcFields(DataSet: TDataset);

begin

Table 2Total.Value:= Table 2Qty.Value* Table 2ListPrice.Value;

end;     Если теперь запустить программу, то поле Total будет содержать требуемое значение. Если нужно получить имена полей в текущем DataSet, то для этого используется свойство FieldName одним из двух способов, показанных ниже:

S := Table 1.Fields[0].FieldName; // S := Table1CustNo.FieldName;

Если вы хотите получить имя объекта, связанного с полем, то вы должны использовать свойство Name:

S := Table 1.Fields[0].Name; S := Table 1CustNo.Name;

Для занесения данных в поля на форме пишем процедуру кнопки «Добавить»

procedure TForm2.Button1Click(Sender: TObject);

begin

if ((ComboBox1.Text='')or(ComboBox2.Text='')or(ComboBox3.Text='')or(ComboBox4.Text='')or(Edit1.Text='')or(Edit2.Text='')or(Edit3.Text=''))

then begin MessageDlg('Не все поля заполнены',MtError,[mbOk],0);exit; end;

Form1.ADOTable12.Edit;

Form1.ADOTable12.Insert;

Form1.ADOTable12.FieldByName('ФИО клиента').AsString:=ComboBox1.Text;

Form1.ADOTable12.FieldByName('ФИО сотрудника').AsString:=ComboBox2.Text;

Form1.ADOTable12.FieldByName('Дата проведения').AsString:=Edit3.Text;

Form1.ADOTable12.FieldByName('Город').AsString:=ComboBox3.Text;

Form1.ADOTable12.FieldByName('Место проведения').AsString:=ComboBox4.Text;

Form1.ADOTable12.FieldByName('Стоимость').AsString:=Edit1.Text;

Form1.ADOTable12.FieldByName('Фактическая плата').AsString:=Edit2.Text;

Form1.ADOTable12.Post;

Form1.ADOTable12.Refresh;

end;

Форма “Добавление работника”

unit Unit12;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls;

type

TForm12 = class(TForm)

Panel1: TPanel;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Button1: TButton;

Button2: TButton;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit; Edit7: TEdit; Edit8: TEdit;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form12: TForm12;

implementation

uses Unit7;

{$R *.dfm}

procedure TForm12.Button1Click(Sender: TObject); // процедура добавления работника

begin

If (Edit1.Text='')or(Edit2.Text='')or(Edit3.Text='')or(Edit4.Text='')or(Edit5.Text='')or(Edit6.Text='')or(Edit7.Text='')or(Edit8.Text='')then

begin

ShowMessage('Заполнены не все поля');

exit;

end

else begin

Form7.Table1.Append;

Form7.Table1.FieldbyName('FIO').Asstring:=Edit1.Text;

Form7.Table1.FieldbyName('Adres').Asstring:=Edit2.Text;

Form7.Table1.FieldbyName('Telefon').Asstring:=Edit3.Text;

Form7.Table1.FieldbyName('Doljnost').Asstring:=Edit4.Text;

Form7.Table1.FieldbyName('Staj').Asstring:=Edit5.Text;

Form7.Table1.FieldbyName('Razrayd').Asstring:=Edit6.Text;

Form7.Table1.FieldbyName('Zarplata').Asstring:=Edit7.Text;

Form7.Table1.FieldbyName('Data_pr').Asstring:=Edit8.Text;

Form7.Table1.Post;

Form7.Table1.Close;

Form7.Table1.Open;

end;

end; end;

procedure TForm12.Button2Click(Sender: TObject); // переход на форму «Работники»

begin

Form7.Show;

Form12.Hide;

end;

end.

procedure TForm4.N3Click(Sender: TObject); // Процедура удаления договора

begin

if MessageDlg('Вы действительно хотите удалить этот

договор?',mtConfirmation,[mbYes,mbNo],0)=mrYes

then

begin

Table1.Edit;

Table1.Delete;

Table1.Refresh;

exit;

end else Exit;

end;