- •Методическое пособие по дисциплине «Базы данных» «Программирование баз данных в среде
- •Введение …………………………………………………………………………….3
- •Можно коня привести к воде, но нельзя заставить его пить.
- •Введение
- •1 Постановка задачи
- •2 Работа с программой bde Administrator Технология создания Баз Данных в среде Borland delphi Общий алгоритм разработки Базы Данных
- •3 Конструктор таблиц DataBase Desktop
- •Примеры таблиц с введенными строками .
- •4 Форма для отображения таблиц с помощью компонента tTable.
- •5. Добавление записей в таблицы через форму
- •Форма “Добавление работника”
- •Работа со связанными таблицами
- •7 Форма с фильтрацией данных из таблиц бд
- •Работа с компонентом tquery для выбора данных из таблиц с помощью команд языка sql
- •Часть №2.
- •Формы: Поиск работника, услуги, клиента.
- •Форма связывание таблиц.
- •Выбор информации из базы данных
- •Вывод выбранных данных в ms Excel
- •Образец базы данных «Автопарк» с формами и кодами
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;