Разработка Windows-приложения
Для разработки данного приложения на компонент DataModule2 были помещены не визуальные компоненты, которые показаны на рисунке 3. 1
Компоненты в DataModule2
Были настроены все компоненты, в частности IBDatabase1 и IBTransaction1. В свойстве DefaultAction компонента IBTransaction1 было установлено значение TACOMMIT, отвечающее за подтверждение всех действующих транзакций в приложении. Но так как данное действие срабатывает при выходе их приложения, было принято решение подтверждать транзакции как можно раньше после выполнения каждого действия, связанного с изменением состояния базы данных. В коде программы подобные действия обычно реализуются, используя программный код типа "IBTransaction1->Commit ()". Это позволяет сразу увидеть изменения, не выходя их программы.
В свойстве Transaction Editor было установлено Read Committed. Так же были настроены свойства DatabaseName, DefaultTransaction для компонента IBDatabase1 и свойство DefaultDatabase для компонента IBTransaction1. Данные настройки этих компонентов показаны на рисунках ниже.
Настройка компонента IBDatabase1
Настройка компонента IBTransaction
Были установлены и настроены все компоненты соединения с базой данных и протестированы в рамках одной формы и таблицы. Далее
необходимо проделать аналогичные действия для оставшихся таблиц, используя визуальные компоненты.
На главную форму поместила компонент MainMenu, для переключения между формами содержащими отчет и информацию о приобретенных товарах.
Главное окно программы
Для просмотра содержимого таблицы нужно воспользоваться меню, в котором можно выбрать интересующие нас данные. Для отображения таблицы на экране формы добавила на форму компонент DBGrid, а так же не визуальные компоненты в DataModule2 и настроила их.
Настройка компонентов для отображения таблицы.
Результат настройки данных компонентов можно увидеть на рисунке 3. 6.
Форма, на которой отображена таблица "Товары".
Для того, чтобы добавить, изменить или удалить данные из таблицы, добавила на форму компоненты: Button - для подтверждения действия и Edit - для добавления, изменения и удаления данных. Для проверки работоспособности данной программы выполним следующие действия. Выполним ввод данных в таблицу и выберем нужное действие.
Ввод данных в таблицу Товаров.
На рисунке показана таблица Товаров после добавления в нее данных.
Результат добавления данных в таблицу Товары.
Для изменения данных о товаре - введем номер товара и введем нужную информацию.
Изменение данных в таблице Товары
На рисунке показана таблица Товаров после изменения в ней данных.
Результат изменения данных в таблице Товары
Для удаления нужно ввести номер товара, как показано на рисунке 3. 11.
Удаление записи из таблицы Товары
На рисунке показана таблица Товаров после удаления в ней данных.
Результат удаления из таблицы Товары
Для всех этих действий приведен код в листинге 1.
Листинг 1. Обработчик события кнопки Button1 для удаления, изменения или добавления. |
void __fastcall TForm1:: Button1Click (TObject *Sender) {DataModule2->INS_TOV->ParamByName ("NO_TOV") - >AsString=Edit1->Text; DataModule2->INS_TOV->ParamByName ("NO_USTR") - >AsString=Edit2->Text; DataModule2->INS_TOV->ParamByName ("NO_PROIZ") - >AsString=Edit3->Text; DataModule2->INS_TOV->ParamByName ("MODEL") - >AsString=Edit4->Text; DataModule2->INS_TOV->ParamByName ("SERIALNO") - >AsString=Edit5->Text; DataModule2->INS_TOV->ParamByName ("PARTNO") - >AsString=Edit6->Text; DataModule2->INS_TOV->ParamByName ("CENA") - >AsString=Edit7->Text; if ( (Edit1->Text=="") || (Edit2->Text=="") || (Edit3->Text=="") || (Edit4->Text=="") || (Edit5->Text=="") || (Edit6->Text=="") || (Edit7->Text=="")) { ShowMessage ("заполните все поля корректно"); Form1->Repaint (); } else { DataModule2->INS_TOV->Prepare (); // подготовка к выполнению транзакции DataModule2->INS_TOV->ExecProc (); // выполнение транзакции DataModule2->IBTable1->Close (); DataModule2->IBTable1->Open (); // закрываем и открываем таблицу для обновления данных Edit1->Clear (); // очистка полей ввода Edit2->Clear (); // очистка полей ввода Edit3->Clear (); // очистка полей ввода Edit4->Clear (); // очистка полей ввода Edit5->Clear (); // очистка полей ввода Edit6->Clear (); // очистка полей ввода Edit7->Clear (); // очистка полей ввода DataModule2->IBTransaction1->Commit (); DataModule2->IBTable1->Close (); DataModule2->IBTable1->Open (); // закрываем и открываем таблицу для обновления данных ShowMessage ("запись добавлена"); }} // --------------------------------------------------------------------------- void __fastcall TForm1:: Button2Click (TObject *Sender) {DataModule2->UPD_TOV->ParamByName ("NO_TOV") - >AsString=Edit1->Text; DataModule2->UPD_TOV->ParamByName ("NO_USTR") - >AsString=Edit2->Text; DataModule2->UPD_TOV->ParamByName ("NO_PROIZ") - >AsString=Edit3->Text; DataModule2->UPD_TOV->ParamByName ("MODEL") - >AsString=Edit4->Text; DataModule2->UPD_TOV->ParamByName ("SERIALNO") - >AsString=Edit5->Text; DataModule2->UPD_TOV->ParamByName ("PARTNO") - >AsString=Edit6->Text; DataModule2->UPD_TOV->ParamByName ("CENA") - >AsString=Edit7->Text; if ( (Edit1->Text=="") || (Edit2->Text=="") || (Edit3->Text=="") || (Edit4->Text=="") || (Edit5->Text=="") || (Edit6->Text=="") || (Edit7->Text=="")) { ShowMessage ("заполните все поля корректно"); Form1->Repaint (); } else { DataModule2->UPD_TOV->Prepare (); // подготовка к выполнению транзакции DataModule2->UPD_TOV->ExecProc (); // выполнение транзакции DataModule2->IBTable1->Close (); DataModule2->IBTable1->Open (); // закрываем и открываем таблицу для обновления данных Edit1->Clear (); // очистка полей ввода Edit2->Clear (); // очистка полей ввода Edit3->Clear (); // очистка полей ввода Edit4->Clear (); // очистка полей ввода Edit5->Clear (); // очистка полей ввода Edit6->Clear (); // очистка полей ввода Edit7->Clear (); // очистка полей ввода DataModule2->IBTransaction1->Commit (); DataModule2->IBTable1->Close (); DataModule2->IBTable1->Open (); // закрываем и открываем таблицу для обновления данных ShowMessage ("запись изменена"); }} // --------------------------------------------------------------------------- void __fastcall TForm1:: Button3Click (TObject *Sender) {DataModule2->DEL_TOV->ParamByName ("NO_TOV") - >AsString=Edit1->Text; if (Edit1->Text=="") { ShowMessage ("Заполните поле корректно"); Form1->Repaint (); } else { DataModule2->DEL_TOV->Prepare (); DataModule2->DEL_TOV->ExecProc (); DataModule2->IBTable1->Close (); DataModule2->IBTable1->Open (); Edit1->Clear (); DataModule2->IBTransaction1->Commit (); DataModule2->IBTable1->Close (); DataModule2->IBTable1->Open (); // закрываем и открываем таблицу для обновления данных ShowMessage ("Запись удалена"); }} |
Разработка Web-приложения
Для соединения с базой данных используется метод ibase_connect (). Чтобы создать соединение с БД "Компьютерные комплектующие" был создан код, приведенный на листинге 2. Для запроса к базе данных используется переменная $query, а для получения идентификатора запроса - переменная $result, как показано ниже. Так же в листинге представлен код вывода полученной информации.
Листинг 2. |
<html> <head> <title>ПРОСМОТР</title> </head> <body bgcolor="E0FFFF"> <table align="center"> <td> <a href="INDEX.html">НА ГЛАВНУЮ</a><br> <table align=center border="0" cellpadding="0" cellspacing="0" class="tbl1" width="850" height="100" bgcolor="008B8B"> <td> <center> <font> <h2><font color="white">Просмотр записей<br> таблицы <br><i>"Товар"</i></h2></font> </td> </table> </td> </table> <table align="center" bgcolor="white"> <td> <? php $host='172. 23. 64. 64: // home/ftp/10/1410028/G141001_YUSHCHENKO. FDB'; /*$host='knit-614-01: D: /DB/G141001_YUSHCHENKO. FDB'; */ $dbcharset = 'WIN1251'; $usname = 'sysdba'; $pswrd = 'masterkey'; $db = ibase_pconnect ($host, $usname, $pswrd,$dbcharset); if (! $db) {echo 'ошибка соединения с базой данных'; exit; } $query="select * from TOVAR"; $result=ibase_query ($query); echo '<table border=1>'; echo '<tr><th bgcolor=\"#CCCCFF\"> Номер товара </th>'. '<th bgcolor=\"#CCCCFF\"> Серийный номер </th>'. '<th bgcolor=\"#CCCCFF\"> Парт номер </th>'. '<th bgcolor=\"#CCCCFF\"> Цена</th>'. '<th bgcolor=\"#CCCCFF\"> Модель</th>'. '<th bgcolor=\"#CCCCFF\"> Номер производителя</th>'. '<th bgcolor=\"#CCCCFF\"> Номер устройства</th>'. '<tr>'; $i=0; while ($row=ibase_fetch_row ($result)) {$i++; echo "<tr><td>$row [0] </td> <td>$row [1] </td> <td>$row [2] </td> <td>$row [3] </td> <td>$row [4] </td> <td>$row [5] </td> <td>$row [6] </td><tr>"; } echo "</table>"; ibase_free_result ($result); ? > </td> </table> </body> </html> |
Программный код, реализующий Web-приложение с использованием РНР и СУБД Firebird приведен в приложении 2.