Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_7.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
223 Кб
Скачать
☆

7.9 Заполнение таблиц

Приведенная на рисунке 5 форма удобна тем, что с ее помощью можно в таблицу (например, tovar) вносить данные и в ней можно отображать сведения о каждом элементе таблицы, редактировать данные.

Для создания окна редактирования данных необходимо поместить на форму компоненты доступа к данным – TDBEdit, TDBText. Эти компоненты автоматически редактируют указанные поля в базе данных. Чтобы компонент видел данные из нужного поля, в свойстве DataSource нужно указать нужную таблицу (DataSource1), как делали раньше, а в свойстве DataField указать имя поля, которое надо редактировать.

Создать форму для ввода данных в таблицу Tovar.

Поместить на форму компоненты DataSource (источник данных ) – вкладка Data Access,ADO Table (таблица) – вкладка ADO,. DBNavigator – вкладка DataControls

Настроить свойства компонента DataSource .

Свойство значение

DataSet ADO Table1

Настроить свойства компонента ADO Table1.

Свойство значение

Connection ADOConnection1

TableName Tovar

Рисунок 5 – Окно заполнения данных

Поместить на форму компоненты Tlabel, как показано на рисунке 5. В свойстве Caption записать: код товара, описание товара, цена. Рядом с надписями поместить компоненты TDBEdit (окно редактирования) со страницы DataControls.. Установить связь, задав следующие значения свойств, рисунок 6:

Компонент DBEdit:

Свойство значение

DataSource DataSource1

DataField имя поля

Запустить приложение. На навигаторе щелкнуть на кнопке «Insert record» (ввести новую строку). Ввести данные в DBEdit. Щелкнуть на кнопке «Post edit». Данные будут введены в таблицу tovar базы данных.

Рисунок 6 – Окно свойств DBEdit

Рассматривается более сложная задача - ввод данных в таблицу orders. Добавить в таблицу orders поле stoim_tovar. Вручную заполняются поля: id_order, id_cust, id_tovar, date_order, qty_order (соответственно номер счета, код клиента, код товара, дата счета и количество товара).

При нажатии на кнопках «Название товара», «Цена товара», «Стоимость товара» появляются соответственно на форме значения этих полей. Эти значения определяются в зависимости от введенного кода товара в таблицу orders. Стоимость товара рассчитывается по формуле– цена товара * количество товара.

Поместить на форме компоненты DBEdit (рисунок 7), как в предыдущем примере, для полей таблицы orders. Поместить 3 компонента DBText для значений Название товара, Цена товара, Стоимость товара, три кнопки. Выполнить настройку полей аналогично предыдущей задаче.

Компонент DataSource2 (источник данных ) – вкладка Data Access,

Свойство значение

DataSet ADOQuery1

Компонент DataSource3 (источник данных ) – вкладка Data Access,

Свойство значение

DataSet ADOQuery2

Компонент DBText1 связывается с полем title_tovar

Свойство значение

DataSource DataSource2

DataField title_tovar

Аналогично компонент DBText2 связывается с полем price_tovar (можно это выполнить программно).

Рисунок 7

При нажатии на кнопку, например, «Название товара», считывается код товара, по нему определяется название товара. Выполняется следующая последовательность действий.

Вводится переменная t типа AnsiString, которая принимает значение из поля id_tovar.

По коду товара из таблицы Tovar определяется название товара – из запроса.

Аналогично определяется цена товара – второй запрос.

Определение названия товара

void __fastcall TForm1::Button1Click(TObject *Sender)

{

AnsiString t;

ADOQuery1->SQL->Clear();

t=DBEdit3->Text;

ADOQuery1->SQL->Add("select title_tovar from tovar where id_tovar='"+t+"'");

ADOQuery1->Open();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)

{

Close();

}

//---------------------------------------------------------------------------

Определение цены товара

void __fastcall TForm1::Button2Click(TObject *Sender)

{ AnsiString t;

ADOQuery2->SQL->Clear();

t=DBEdit3->Text;

ADOQuery2->SQL->Add("select price_tovar from tovar where id_tovar='"+t+"'");

DBText2->DataField="price_tovar";

ADOQuery2->Open();

}

Вычисление стоимости товара и заполнение поля stoim_tovar

void __fastcall TForm1::Button3Click(TObject *Sender)

{

DBText3->Caption=IntToStr(StrToInt(DBText2->Caption)*StrToInt(DBEdit5->Text));

DBEdit6->Text=DBText3->Caption;

}

В некоторых случаях приложению требуется получить список имен полей таб­лицы, связанной с ADOQuery. Это может быть сделано методом GetFieldNames, кото­рый загружает список имен полей в любую переменную типа TStrings, передавае­мую в него в качестве аргумента. Например, оператор

ADOQueryl->GetFieldNames(ComboBoxl->Items);

загружает в выпадающий список ComboBoxl имена полей таблицы, связанной с ADOQueryl.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]